2fb47520b3
feat(debug-logger): add DebugSignalLogger plugin for event logging and inspection feat(plugins): introduce built-in plugins module and integrate debug logger feat(plugin-integration): create integration layer for mapping Iced Messages to CoreEvents feat(plugin-registry): establish PluginRegistry for managing plugins and event dispatching
11 KiB
11 KiB
ICED GUI Migration Plan — EGUI Full Parity
Hedef
EGUI (hcie-egui-app) üzerindeki tüm özellik, panel, menü, dialog ve fonksiyonların ICED (hcie-iced-app) tarafına taşınarak %100 görsel ve işlevsel paritenin sağlanması.
Kararlar
| Karar | Seçim |
|---|---|
| Panel crate yapısı | Gömülü kal (mevcut hcie-iced-gui/src/panels/ içinde) |
| Plugin sistemi | Kapsama al — EGUI'deki PluginHost ICED'e taşınacak |
| SVG Editor | Kapsama al — yeni panel olarak eklenecek |
| Menü placeholder'ları | Tümü aktifleştirilecek (full parity) |
Faz 1: Kritik Eksik Yapılar (Temel)
1.1 Plugin Sistemi (hcie-iced-gui/src/plugins/)
- Kaynak:
hcie-egui-app/crates/hcie-gui-egui/src/plugins/ - Hedef:
hcie-iced-app/crates/hcie-iced-gui/src/plugins/ - Dosyalar:
mod.rs— PluginHost struct,dispatch_app_event(), plugin lifecycleregistry.rs— PluginRegistry, kayıtlı plugin yönetimiintegration.rs— EGUI plugin UI'dan EventBus olay dağıtımıbuilt_in/— Built-in plugin örnekleri (debug_logger)
- Bağımlılık: PluginHost
HcieAppyerineIcedDocument+ToolStatekullanacak şekilde adapte edilmeli - Integration:
app.rsupdate() içindemessagedöngüsüne plugin dispatch eklenmeli
1.2 SVG Editor Panel
- Kaynak:
hcie-egui-app/crates/hcie-gui-egui/src/app/panels/svg_editor_panel.rs - Hedef:
hcie-iced-app/crates/hcie-iced-gui/src/panels/svg_editor.rs - Durum: EGUI'de
SvgEditorStatestruct +show_svg_editor()fonksiyonu. ICED'eSvgEditorState+ view/update olarak taşınacak - App state:
HcieIcedAppiçinesvg_editor_state: Option<SvgEditorState>eklenecek - Panel: view fonksiyonu normal panel gibi
panels/mod.rsüzerinden erişilebilir
1.3 Save Error Dialog
- Kaynak: EGUI
SaveErrorState+ error dialog render - Hedef: ICED
ActiveDialog::SaveErrorvaryantı + dialog view - Özellik: Kaydetme hatasında alternatif yol önerisi gösteren modal
1.4 Canvas Expand Dialog
- Kaynak: EGUI
show_expand_dialog+ paste overflow handling - Hedef: ICED
ActiveDialog::ExpandCanvasvaryantı - Özellik: Clipboard paste sırasında tuval boyutunu aşan içerik için genişletme onayı
Faz 2: Menü Eksikleri (Full Parity)
2.1 File Menüsü Eksikleri
| EGUI Öğesi | ICED Task |
|---|---|
| Import… | MenuCommand::ImportFile — rfd::FileDialog ile dosya seç, engine'e yükle |
| Import SVG… | MenuCommand::ImportSvg — SVG dosyası aç, engine.import_svg() çağır |
| Import Brushes… | MenuCommand::ImportBrushes — ABR/KPP parser, brush_presets'e ekle |
| Export… | MenuCommand::Export — Save As ile aynı akış, farklı etiket |
2.2 Edit Menüsü Eksikleri
| EGUI Öğesi | ICED Task |
|---|---|
| Paste Special (Ctrl+Shift+V) | MenuCommand::PasteSpecial — Paste internal clipboard (transform olarak) |
| Fill… (Shift+F5) | MenuCommand::Fill — Primary color ile seçim/layer doldurma |
| Stroke… | MenuCommand::Stroke — Placeholder dialog (EGUI'de de placeholder) |
| Free Transform (Ctrl+T) | MenuCommand::FreeTransform — TransformStart event'i, selection transform başlatma |
| Preferences (Ctrl+K) | MenuCommand::Preferences — ActiveDialog::Settings dialog'u |
2.3 Tools Menüsü
- EGUI
toolsmenüsündeki tüm tool'lar içinMenuCommand::SelectTool(Tool)eklenecek - Tool listesi: Eyedropper, Pen, Brush, Eraser, Spray, FloodFill, MagicWand, Select, Lasso, PolygonSelect, Move, Crop, Text, Gradient
- Retouch alt menüsü:
MenuCommand::SelectTool(Tool::RedEyeRemoval),SpotRemoval,SmartPatch - AI alt menüsü:
MenuCommand::SelectTool(Tool::AiObjectRemoval),SmartSelect,VisionSelect
2.4 Image Menüsü Eksikleri
| EGUI Öğesi | ICED Task |
|---|---|
| Image Rotation > 90° CW | MenuCommand::Rotate90CW → engine.rotate_canvas(90) |
| Image Rotation > 90° CCW | MenuCommand::Rotate90CCW → engine.rotate_canvas(-90) |
| Image Rotation > 180° | MenuCommand::Rotate180 → engine.rotate_canvas(180) |
| Flip Horizontal | MenuCommand::FlipHorizontal → engine.flip_horizontal() |
| Flip Vertical | MenuCommand::FlipVertical → engine.flip_vertical() |
| Crop | MenuCommand::ImageCrop → selection_rect varsa engine.crop() |
| Invert / Negative | MenuCommand::InvertNegative → apply_filter("invert") |
2.5 Filter Menüsü Eksikleri
- Distort:
MenuCommand::FilterDistort(Pinch),FilterDistort(Twirl)— parametre dialog'u - Noise:
MenuCommand::FilterNoise(AddNoise),FilterNoise(NoisePattern) - Pixelate:
MenuCommand::FilterPixelate(Crystallize),FilterPixelate(Mosaic) - Render:
MenuCommand::FilterRender(Clouds)— procedural texture - Restore:
MenuCommand::FilterRestore(Dehaze) - Stylize:
FilterStylize(Emboss),FilterStylize(FindEdges),FilterStylize(OilPaint) - Procedural Textures (14 tür):
FilterTexture(Grass),FilterTexture(Sand),FilterTexture(Dirt),FilterTexture(Water),FilterTexture(Rain),FilterTexture(Stone),FilterTexture(Bricks),FilterTexture(Oak),FilterTexture(Pine),FilterTexture(DarkWood),FilterTexture(Steel),FilterTexture(Gold),FilterTexture(Copper),FilterTexture(Linen),FilterTexture(Glass),FilterTexture(SkyReplacement) - Kaynak: EGUI
shell/menus.rs:ui_filter_menu()fonksiyonundaki tüm filtre çağrıları
2.6 Select Menüsü Eksikleri
- Erode Border:
MenuCommand::ErodeBorder→ engine.selection_erode() - Fade Border:
MenuCommand::FadeBorder→ engine.selection_fade()
2.7 View Menüsü Eksikleri
- Reset Pan:
MenuCommand::ResetPan→doc.pan_offset = Vector::ZERO
2.8 Window Menüsü Eksikleri
- Open Documents list: Aktif doküman listesi gösterimi, seçili olana focus
- Reset Layout: Varsayılan dock düzenine dön
2.9 Layer Menüsü Eksikleri
- Align:
MenuCommand::AlignLayer(AlignAxis)— tüm axis'ler için engine.align_active_layer()
2.10 Help Menüsü
- About:
ActiveDialog::About—dialogs/about.rsmevcut, menü bağlantısı eklenecek
Faz 3: Panel İçerik İyileştirmeleri
3.1 AI Assistant — ComfyUI Sekmesi
- EGUI'de AI paneli 2 sekme: ComfyUI + AI Chat
- ICED'de sadece AI Chat var
- Task: ComfyUI pipeline görüntüleyici sekmesi eklenecek
3.2 Title Bar Özellikleri
- Search box: EGUI title bar'da
title_searchalanı + TextEdit - Panel list popup: EGUI'de hamburger menü ikonu ile panel list toggle
- Window controls: EGUI kendi minimize/maximize/close çiziyor. ICED'de
decorations(false)ile aynı pattern
3.3 Thumbnails Panel
panels/thumbnails.rsmevcut — EGUI layers panel içinde thumbnail gösterimi ile uyum kontrolü- Layer thumbnail boyutları, badge'ler, efekt ikonları EGUI ile eşleştirilecek
Faz 4: Dialog İyileştirmeleri
4.1 Filter Dialogları
- EGUI'de her filter kategorisi için ayrı dialog flag'leri:
show_blur_dialog,show_sharpen_dialog,show_distort_dialog,show_stylize_dialog,show_color_light_dialog,show_restore_dialog,show_noise_pattern_dialog,show_procedural_textures_dialog - ICED'de
ActiveDialog::FilterParams(FilterType)ile tek dialog — yeterli mi kontrol et - EGUI
filter_dialogs.rsvemodern_dialogs.rs'deki parametre UI'ları incelenmeli
4.2 Selection Op Dialog
- EGUI
SelectionOpDialogStateile Grow/Shrink/Feather/Erode/Fade için değer girişi - ICED
ActiveDialog::SelectionOpmevcut ama Erode/Fade eklenmeli
Faz 5: Viewer Mode Parity
5.1 Viewer Mode (FastStone-like)
- EGUI viewer (
shell/viewer.rs):ViewerState, thumbnail grid, directory tree, fullscreen - ICED viewer (
viewer/): Mevcut, EGUI ile karşılaştırılmalı - Eksik olabilir: Önceki/Sonraki navigasyon, fullscreen toggle, thumbnail cache
Faz 6: Görsel Tutarlılık
6.1 gui_layout.json Sistemi
- EGUI'de
shell/gui_layout.rsile tüm panel boyut/padding/renk override'ları - ICED'de benzer bir sistem yok
- Task: ICED için basitleştirilmiş layout override mekanizması
6.2 Tema Paletleri
- EGUI'de 5 tema: Photoshop, PhotoshopLight, Amoled, ProDark, ProLight
- ICED'de
ThemePresetaynı seti kapsıyor mu kontrol et iced-panel-adapteriçindeki renk token'ları EGUIThemeColorsile eşleştirilmeli
Faz 7: Kod Temizliği ve Doğrulama
7.1 Dead Code Temizliği
- EGUI
_dead_code_candidates_/klasöründeki dosyalar incelenmeli panel_layout.rs,dock_controller.rs,dock_engine.rs,history.rs
7.2 Test ve Doğrulama
cargo test -p hcie-iced-gui— mevcut testler- Görsel screenshot karşılaştırması
- Her Faz sonunda
cargo check -p hcie-iced-guiile derleme kontrolü
Faz Sıralaması ve Bağımlılıklar
Faz 1 (Kritik Yapılar) ──→ Faz 2 (Menüler) ──→ Faz 3 (Paneller) ──→ Faz 4 (Dialoglar) ──→ Faz 5 (Viewer) ──→ Faz 6 (Görsel)
│ │
└── Plugin sistemi └── Tüm menü komutları aktif
└── SVG Editor └── Import/Export
└── Save Error Dialog
└── Expand Canvas Dialog
Her faz kendi içinde bağımsız çalışabilir. Faz 1 ön koşuldur çünkü yeni state alanları ve dialog varyantları sonraki fazlarda kullanılır.
Riskler
- Plugin sistemi: EGUI
EventBustabanlı, ICED Message tabanlı. Uyumlama sırasında event→message dönüşümü dikkatli yapılmalı - SVG Editor: EGUI'de
hcie_engine_api::SvgEditablekullanılıyor. Aynı API ICED'de de mevcut - Procedural Textures (14 adet): Her biri ayrı filter_id + parametre seti. EGUI'deki parametre isimleri birebir korunmalı (örn.
"texture_grass","scale": 1.0, "roughness": 0.5) - ComfyUI sekmesi: EGUI'de AI paneli içinde iki sekme var. ICED'de AI panel widget'ının tab desteği eklenmeli
Implementation Notları
- Yeni dosyalar eklenirken mevcut değiştirilmez kuralı: Menü komutları
panels/menus.rs'e, dialoglardialogs/'a, yeni panellerpanels/'e ek dosya olarak app.rsupdate()fonksiyonuna yeni Message varyantları eklenecekapp.rsview()fonksiyonuna yeni panel/dialog view'ları bağlanacak- Engine API çağrıları EGUI ile birebir aynı (
hcie_engine_api::Engine) - Görsel stiller
iced-panel-adapter::theme::ThemeColorsüzerinden