Port MFC Georges Editor to Qt with NeL-native configuration and i18n#765
Port MFC Georges Editor to Qt with NeL-native configuration and i18n#765
Conversation
Co-authored-by: kaetemi <1581053+kaetemi@users.noreply.github.com>
Create a new Qt-based editor at nel/tools/georges/georges_editor_qt/ that ports the original MFC Georges Editor DLL. Includes: - MDI application with QMdiArea central widget - Document tree view (left pane) with icon system from MFC version - Type, DFN, Form, and Header editor panels (right pane) - File browser dock widget with Type/DFN/Form tabs - Output console dock widget - Settings dialog for configuring search paths - Menu bar and toolbar matching MFC version - Document management using NeL Georges library (UFormLoader) - CMakeLists.txt following existing Qt tool patterns Co-authored-by: kaetemi <1581053+kaetemi@users.noreply.github.com>
a47a304 to
6bb855f
Compare
Co-authored-by: kaetemi <1581053+kaetemi@users.noreply.github.com>
Co-authored-by: kaetemi <1581053+kaetemi@users.noreply.github.com>
…CForm casts Co-authored-by: kaetemi <1581053+kaetemi@users.noreply.github.com>
|
@copilot Do we support both Qt5 as well as Qt6? |
…tibility Co-authored-by: kaetemi <1581053+kaetemi@users.noreply.github.com>
The repository currently only has Qt5 infrastructure ( |
|
@copilot Please merge the latest changes from the core4 branch (normal merge). There should be a separate track for Qt6 support checking now, and tools supporting that can be enabled under that individually. Also please refer to the Panoply Preview utility as the gold standard in NeL integration (as far as existing Qt-based tools goes, that is - feel free to improve further on it, however, if you find any concerns or issues), I believe it has a shared library as well, and if there are any re-usable components and behaviors that can be shared between different tools, please make appropriate use of the shared library to avoid implementation duplication. Additionally, use the same Fusion theming and palette as the Panoply Preview tool, make it switchable with OS-native look using a precompiler definition in the main window header, and ensure that the entire Georges Editor tool looks coherent under the dark Fusion palette |
…ot/port-georges-editor-to-qt6
…, replace OutputConsoleDock with CCommandLogDisplayer, enable WITH_QT6 support Co-authored-by: kaetemi <1581053+kaetemi@users.noreply.github.com>
Done in
|
|
@copilot Okay. Actually, you can move that GEORGES_USE_NATIVE_STYLE to main cpp. Do you have any suggestions on usability and so on to make this tool more practical for leveldesigners? |
Co-authored-by: kaetemi <1581053+kaetemi@users.noreply.github.com>
Moved On usability for level designers, some practical improvements that could be added:
|
|
@copilot Can you compare against the previous Qt Georges Editor that already existed in the repository, and investigate whether it has any features or usability improvements that are worth porting over into our new conversion? |
…NLMISC::CCallback instead of duplicate NLQT::CCallback Co-authored-by: kaetemi <1581053+kaetemi@users.noreply.github.com>
…ot/port-georges-editor-to-qt6 # Conflicts: # nel/tools/3d/shared_widgets/common.h
|
@copilot Please include this newly ported Qt version of Georges Editor in the quick_start build, ensuring it is as easily accessible as the original Georges Editor :) |
…rking dir) Co-authored-by: kaetemi <1581053+kaetemi@users.noreply.github.com>
Already addressed in previous commits — core4 merged in
Done in
The tool builds automatically when Qt5 or Qt6 is detected (via |
|
@copilot Thanks. There's a mesh export tool that makes use of assimp, I believe it also makes use of a newer configuration discovery mechanism (the .nel folder in the root has a config.json). Can you look into how that worked? I think it was supposed to enable finding the graphics and leveldesign folders and offer some automatic configuration. Or it might've been some other autoconfiguration mechanism... I'm not sure your current config makes sense, entirely? |
…er, quick_start defaults; FileBrowserDock reads from CConfiguration Co-authored-by: kaetemi <1581053+kaetemi@users.noreply.github.com>
Investigated In
The config is functional for a quick_start dev environment: working dir is |
|
@copilot Okay. So, in practice, the folder containing .nel is "R:", and "R:" is just a mapped drive for legacy reasons. We want to ensure that the default configuration here works out of the box, and will be compatible with Linux as well. So, the same folder that contains the .nel folder will also have "leveldesign" and "graphics" and such, by default. |
… (../../leveldesign from .nel/tools/) Co-authored-by: kaetemi <1581053+kaetemi@users.noreply.github.com>
Done in
Also fixed path joining in Works out of the box on both Windows and Linux — no mapped drives or absolute paths needed. |
|
@copilot One concern with en.uxt, it might conflict with other tools data in the future, and this copy might be inconvenient for tool development. Can we refer directly to the repository's data folder? The repository will be under "R:\code" (so R:\code\nel, etc) |
… .uxt files Co-authored-by: kaetemi <1581053+kaetemi@users.noreply.github.com>
Done in |
… to root Co-authored-by: kaetemi <1581053+kaetemi@users.noreply.github.com>
Qt6-compatible Georges Editor at
nel/tools/georges/georges_editor_qt/, porting the production MFC implementation fromryzom/tools/leveldesign/georges_dll/. Not based on Ryzom Core Studio or the oldergeorges_editor_qt.Architecture
MDI application mirroring the MFC layout: left tree view + right stacked property editors, file browser dock, console dock.
GeorgesEditorDoc) —CFormLoader+CSmartPtr<>matching MFCCGeorgesEditDocownership. Supports.typ,.dfn, form files.CGeorgesEditDocSub) — same node hierarchy as MFC (Null/Header/Type/Dfn/Form), drives panel switching.TypeDialog,DfnDialog,FormDialog,HeaderDialogmap 1:1 to MFC counterparts. Form editor creates widgets dynamically from DFN structure with color-coded value provenance tuned for dark palette.FileBrowserDock(3-tab: Type/DFN/Form), sharedNLQT::CCommandLogDisplayerconsoleNeL Integration
Follows the
nel_qtsample as the gold standard for configuration and language management:NLQT::CConfiguration(moved toshared_widgetsto deduplicate withnel_qt)NLQT::CInternationalization— runtime language switching,nli18n()for all UI stringsQtStyle/QtPaletteconfig varsNLMISC::CCallbackused directly — the duplicateNLQT::CCallbackinnel_qtwas identical tonel/misc/callback.hProject Root Discovery
Matches the
planar_reflectionsample pattern — walks up from CWD looking for.nel/marker folder. All config paths (RootSearchDirectory,SearchPaths) are relative to the discovered project root:RootSearchDirectory = "leveldesign"; SearchPaths = { "code/nel/tools/georges/georges_editor_qt/data" };Tool can be launched from anywhere inside the project tree. Falls back to CWD-relative if no marker found.
Shared Library Consolidation
Moved reusable components from
nel_qtintoshared_widgets:CConfiguration— parameterizedinit(const std::string &configFile)(was hardcoded macro)CInternationalization— parameterizedinit(CConfiguration*, const std::string &version)Both
nel_qtandgeorges_editor_qtnow consume these fromshared_widgets.quick_start Integration
configure.batcopies.cfgto.nel/tools/config_default.jsonhas VS working directory entryWITH_QT5 OR WITH_QT6guardNot Yet Wired
Undo/redo, Hold/Fetch 1-4, clipboard operations — menu items present (matching MFC) but stubbed.
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.