├── .editorconfig ├── .gitignore ├── 3rdParty ├── CEGUI │ ├── update_cegui_win_sdk_x64.cmd │ └── update_cegui_win_sdk_x86.cmd ├── OpenSSL │ ├── libcrypto-1_1.dll │ ├── libeay32.dll │ ├── libssl-1_1.dll │ └── ssleay32.dll ├── QtnProperty │ ├── AUTHORS │ ├── CHANGELOG │ ├── LICENSE │ ├── NOTICE │ ├── QtnProperty │ │ ├── Auxiliary │ │ │ ├── PropertyAux.h │ │ │ ├── PropertyDelegateInfo.cpp │ │ │ ├── PropertyDelegateInfo.h │ │ │ ├── PropertyMacro.h │ │ │ └── PropertyTemplates.h │ │ ├── Config.h │ │ ├── Core │ │ │ ├── PropertyBool.cpp │ │ │ ├── PropertyBool.h │ │ │ ├── PropertyDouble.cpp │ │ │ ├── PropertyDouble.h │ │ │ ├── PropertyEnum.cpp │ │ │ ├── PropertyEnum.h │ │ │ ├── PropertyEnumFlags.cpp │ │ │ ├── PropertyEnumFlags.h │ │ │ ├── PropertyFloat.cpp │ │ │ ├── PropertyFloat.h │ │ │ ├── PropertyInt.cpp │ │ │ ├── PropertyInt.h │ │ │ ├── PropertyQPoint.cpp │ │ │ ├── PropertyQPoint.h │ │ │ ├── PropertyQPointF.cpp │ │ │ ├── PropertyQPointF.h │ │ │ ├── PropertyQRect.cpp │ │ │ ├── PropertyQRect.h │ │ │ ├── PropertyQRectF.cpp │ │ │ ├── PropertyQRectF.h │ │ │ ├── PropertyQSize.cpp │ │ │ ├── PropertyQSize.h │ │ │ ├── PropertyQSizeF.cpp │ │ │ ├── PropertyQSizeF.h │ │ │ ├── PropertyQString.cpp │ │ │ ├── PropertyQString.h │ │ │ ├── PropertyUInt.cpp │ │ │ └── PropertyUInt.h │ │ ├── CustomPropertyEditorDialog.cpp │ │ ├── CustomPropertyEditorDialog.h │ │ ├── CustomPropertyEditorDialog.ui │ │ ├── CustomPropertyOptionsDialog.cpp │ │ ├── CustomPropertyOptionsDialog.h │ │ ├── CustomPropertyOptionsDialog.ui │ │ ├── CustomPropertyWidget.cpp │ │ ├── CustomPropertyWidget.h │ │ ├── Delegates │ │ │ ├── Core │ │ │ │ ├── PropertyDelegateBool.cpp │ │ │ │ ├── PropertyDelegateBool.h │ │ │ │ ├── PropertyDelegateDouble.cpp │ │ │ │ ├── PropertyDelegateDouble.h │ │ │ │ ├── PropertyDelegateEnum.cpp │ │ │ │ ├── PropertyDelegateEnum.h │ │ │ │ ├── PropertyDelegateEnumFlags.cpp │ │ │ │ ├── PropertyDelegateEnumFlags.h │ │ │ │ ├── PropertyDelegateFloat.cpp │ │ │ │ ├── PropertyDelegateFloat.h │ │ │ │ ├── PropertyDelegateInt.cpp │ │ │ │ ├── PropertyDelegateInt.h │ │ │ │ ├── PropertyDelegateQPoint.cpp │ │ │ │ ├── PropertyDelegateQPoint.h │ │ │ │ ├── PropertyDelegateQPointF.cpp │ │ │ │ ├── PropertyDelegateQPointF.h │ │ │ │ ├── PropertyDelegateQRect.cpp │ │ │ │ ├── PropertyDelegateQRect.h │ │ │ │ ├── PropertyDelegateQRectF.cpp │ │ │ │ ├── PropertyDelegateQRectF.h │ │ │ │ ├── PropertyDelegateQSize.cpp │ │ │ │ ├── PropertyDelegateQSize.h │ │ │ │ ├── PropertyDelegateQSizeF.cpp │ │ │ │ ├── PropertyDelegateQSizeF.h │ │ │ │ ├── PropertyDelegateQString.cpp │ │ │ │ ├── PropertyDelegateQString.h │ │ │ │ ├── PropertyDelegateUInt.cpp │ │ │ │ └── PropertyDelegateUInt.h │ │ │ ├── GUI │ │ │ │ ├── PropertyDelegateButton.cpp │ │ │ │ ├── PropertyDelegateButton.h │ │ │ │ ├── PropertyDelegateQBrush.cpp │ │ │ │ ├── PropertyDelegateQBrush.h │ │ │ │ ├── PropertyDelegateQColor.cpp │ │ │ │ ├── PropertyDelegateQColor.h │ │ │ │ ├── PropertyDelegateQFont.cpp │ │ │ │ ├── PropertyDelegateQFont.h │ │ │ │ ├── PropertyDelegateQPen.cpp │ │ │ │ ├── PropertyDelegateQPen.h │ │ │ │ ├── PropertyDelegateQVector3D.cpp │ │ │ │ └── PropertyDelegateQVector3D.h │ │ │ ├── PropertyDelegate.cpp │ │ │ ├── PropertyDelegate.h │ │ │ ├── PropertyDelegateAux.cpp │ │ │ ├── PropertyDelegateAux.h │ │ │ ├── PropertyDelegateFactory.cpp │ │ │ ├── PropertyDelegateFactory.h │ │ │ └── Utils │ │ │ │ ├── PropertyDelegateGeoCoord.cpp │ │ │ │ ├── PropertyDelegateGeoCoord.h │ │ │ │ ├── PropertyDelegateGeoPoint.cpp │ │ │ │ ├── PropertyDelegateGeoPoint.h │ │ │ │ ├── PropertyDelegateMisc.cpp │ │ │ │ ├── PropertyDelegateMisc.h │ │ │ │ ├── PropertyDelegatePropertySet.cpp │ │ │ │ ├── PropertyDelegatePropertySet.h │ │ │ │ ├── PropertyDelegateSliderBox.cpp │ │ │ │ ├── PropertyDelegateSliderBox.h │ │ │ │ ├── PropertyEditorAux.cpp │ │ │ │ ├── PropertyEditorAux.h │ │ │ │ ├── PropertyEditorHandler.cpp │ │ │ │ └── PropertyEditorHandler.h │ │ ├── Enum.cpp │ │ ├── Enum.h │ │ ├── FunctionalHelpers.h │ │ ├── GUI │ │ │ ├── PropertyButton.cpp │ │ │ ├── PropertyButton.h │ │ │ ├── PropertyQBrush.cpp │ │ │ ├── PropertyQBrush.h │ │ │ ├── PropertyQColor.cpp │ │ │ ├── PropertyQColor.h │ │ │ ├── PropertyQFont.cpp │ │ │ ├── PropertyQFont.h │ │ │ ├── PropertyQPen.cpp │ │ │ ├── PropertyQPen.h │ │ │ ├── PropertyQVector3D.cpp │ │ │ └── PropertyQVector3D.h │ │ ├── IQtnPropertyStateProvider.h │ │ ├── Install.cpp │ │ ├── Install.h │ │ ├── MultiProperty.cpp │ │ ├── MultiProperty.h │ │ ├── Property.cpp │ │ ├── Property.h │ │ ├── PropertyBase.cpp │ │ ├── PropertyBase.h │ │ ├── PropertyConnector.cpp │ │ ├── PropertyConnector.h │ │ ├── PropertyCore.h │ │ ├── PropertyDelegateAttrs.h │ │ ├── PropertyDelegateMetaEnum.cpp │ │ ├── PropertyDelegateMetaEnum.h │ │ ├── PropertyGUI.h │ │ ├── PropertyInt64.cpp │ │ ├── PropertyInt64.h │ │ ├── PropertyQKeySequence.cpp │ │ ├── PropertyQKeySequence.h │ │ ├── PropertyQVariant.cpp │ │ ├── PropertyQVariant.h │ │ ├── PropertySet.cpp │ │ ├── PropertySet.h │ │ ├── PropertyUInt64.cpp │ │ ├── PropertyUInt64.h │ │ ├── PropertyView.cpp │ │ ├── PropertyView.h │ │ ├── PropertyWidget.cpp │ │ ├── PropertyWidget.h │ │ ├── PropertyWidgetEx.cpp │ │ ├── PropertyWidgetEx.h │ │ ├── QObjectPropertySet.cpp │ │ ├── QObjectPropertySet.h │ │ ├── QObjectPropertyWidget.cpp │ │ ├── QObjectPropertyWidget.h │ │ ├── QtnProperty.pri │ │ ├── QtnProperty.pro │ │ ├── QtnProperty.qrc │ │ ├── StructPropertyBase.h │ │ ├── Translations │ │ │ ├── en.ts │ │ │ └── ru.ts │ │ ├── Utils │ │ │ ├── AccessibilityProxy.cpp │ │ │ ├── AccessibilityProxy.h │ │ │ ├── DoubleSpinBox.cpp │ │ │ ├── DoubleSpinBox.h │ │ │ ├── InplaceEditing.cpp │ │ │ ├── InplaceEditing.h │ │ │ ├── MultilineTextDialog.cpp │ │ │ ├── MultilineTextDialog.h │ │ │ ├── MultilineTextDialog.ui │ │ │ ├── QtnCompleterItemDelegate.cpp │ │ │ ├── QtnCompleterItemDelegate.h │ │ │ ├── QtnCompleterLineEdit.cpp │ │ │ ├── QtnCompleterLineEdit.h │ │ │ ├── QtnConnections.cpp │ │ │ ├── QtnConnections.h │ │ │ ├── QtnInt64SpinBox.cpp │ │ │ └── QtnInt64SpinBox.h │ │ ├── VarProperty.cpp │ │ └── VarProperty.h │ └── README.md ├── minizip-ng │ ├── LICENSE │ ├── README.md │ ├── minizip-ng.pri │ ├── mz.h │ ├── mz_crypt.c │ ├── mz_crypt.h │ ├── mz_os.c │ ├── mz_os.h │ ├── mz_os_posix.c │ ├── mz_os_win32.c │ ├── mz_strm.c │ ├── mz_strm.h │ ├── mz_strm_buf.c │ ├── mz_strm_buf.h │ ├── mz_strm_mem.c │ ├── mz_strm_mem.h │ ├── mz_strm_os.h │ ├── mz_strm_os_posix.c │ ├── mz_strm_os_win32.c │ ├── mz_strm_split.c │ ├── mz_strm_split.h │ ├── mz_strm_zlib.c │ ├── mz_strm_zlib.h │ ├── mz_zip.c │ ├── mz_zip.h │ ├── mz_zip_rw.c │ └── mz_zip_rw.h └── zlib │ ├── README │ ├── adler32.c │ ├── compress.c │ ├── crc32.c │ ├── crc32.h │ ├── deflate.c │ ├── deflate.h │ ├── gzclose.c │ ├── gzguts.h │ ├── gzlib.c │ ├── gzread.c │ ├── gzwrite.c │ ├── infback.c │ ├── inffast.c │ ├── inffast.h │ ├── inffixed.h │ ├── inflate.c │ ├── inflate.h │ ├── inftrees.c │ ├── inftrees.h │ ├── trees.c │ ├── trees.h │ ├── uncompr.c │ ├── zconf.h │ ├── zlib.h │ ├── zlib.pri │ ├── zutil.c │ └── zutil.h ├── LICENSE ├── README.md ├── ceed-cpp.pro ├── data ├── Resources.qrc ├── doc │ ├── developer-manual-src │ │ ├── bibliography.bib │ │ ├── developer-manual.lyx │ │ ├── just-content.lyx │ │ ├── tabbed_editor │ │ │ └── responsibilities.png │ │ └── undo_redo │ │ │ └── undo_stack.png │ ├── developer-manual.pdf │ ├── quickstart-guide-src │ │ └── quickstart-guide.lyx │ ├── quickstart-guide.pdf │ ├── user-manual-src │ │ ├── basics │ │ │ ├── basics.lyx │ │ │ ├── main_interface.png │ │ │ ├── multi_mode.png │ │ │ ├── multi_tab_context_menu.png │ │ │ ├── multi_tab_reordering.png │ │ │ ├── project_manager.png │ │ │ ├── resizable_rect_right_edge.png │ │ │ └── resizable_rect_top_right_corner.png │ │ ├── imageset_editing │ │ │ ├── context_menu.png │ │ │ ├── image_property_box.png │ │ │ ├── imageset_editing.lyx │ │ │ └── overview.png │ │ ├── just-content.lyx │ │ ├── layout_editing │ │ │ ├── alignment_icons.png │ │ │ ├── alignment_properties.png │ │ │ ├── aspect_ratio_expanded.png │ │ │ ├── aspect_ratio_properties.png │ │ │ ├── aspect_ratio_shrunk.png │ │ │ ├── button_udims.png │ │ │ ├── complex_properties.png │ │ │ ├── editbox_centred.png │ │ │ ├── layout_editing.lyx │ │ │ ├── live_preview.png │ │ │ ├── overview.png │ │ │ ├── snapgrid_aligned.png │ │ │ ├── snapgrid_in_progress.png │ │ │ └── snapgrid_unaligned.png │ │ ├── project_creation │ │ │ ├── first_step.png │ │ │ ├── project_creation.lyx │ │ │ ├── settings_resource_paths.png │ │ │ └── settings_top.png │ │ ├── settings │ │ │ ├── changing_key_seq.png │ │ │ └── overview.png │ │ └── user-manual.lyx │ └── user-manual.pdf ├── fonts │ ├── DejaVuSans.ttf │ └── LicenseDejaVu.txt ├── icons │ ├── LICENSE │ ├── actions │ │ ├── application_settings.png │ │ ├── close_all_tabs.png │ │ ├── close_other_tabs.png │ │ ├── close_project.png │ │ ├── close_tab.png │ │ ├── copy.png │ │ ├── cut.png │ │ ├── delete.png │ │ ├── filesystem_active_file_directory.png │ │ ├── filesystem_home_directory.png │ │ ├── filesystem_parent_directory.png │ │ ├── filesystem_project_directory.png │ │ ├── help_about.png │ │ ├── help_feedback.png │ │ ├── help_quickstart.png │ │ ├── help_user_manual.png │ │ ├── help_wiki_page.png │ │ ├── new_file.png │ │ ├── new_project.png │ │ ├── open_file.png │ │ ├── open_project.png │ │ ├── paste.png │ │ ├── project_settings.png │ │ ├── quit.png │ │ ├── recent_projects.png │ │ ├── redo.png │ │ ├── save.png │ │ ├── save_all.png │ │ ├── save_as.png │ │ ├── save_project.png │ │ ├── screenshot.png │ │ ├── undo.png │ │ ├── view_fullscreen.png │ │ ├── zoom_in.png │ │ ├── zoom_original.png │ │ └── zoom_out.png │ ├── anchors │ │ ├── Anchors.png │ │ ├── ParentBottom.png │ │ ├── ParentHCenter.png │ │ ├── ParentHStretch.png │ │ ├── ParentLeft.png │ │ ├── ParentRight.png │ │ ├── ParentTop.png │ │ ├── ParentVCenter.png │ │ ├── ParentVStretch.png │ │ ├── SelfBottom.png │ │ ├── SelfHCenter.png │ │ ├── SelfHStretch.png │ │ ├── SelfLeft.png │ │ ├── SelfRight.png │ │ ├── SelfTop.png │ │ ├── SelfVCenter.png │ │ └── SelfVStretch.png │ ├── animation_editing │ │ ├── timeline_loop.png │ │ ├── timeline_pause.png │ │ ├── timeline_play.png │ │ └── timeline_stop.png │ ├── ceed.ico │ ├── ceed.png │ ├── ceed.svg │ ├── cegui │ │ └── debug_info.png │ ├── clean_undo_state.png │ ├── imageset_editing │ │ ├── create_image.png │ │ ├── cycle_overlapping.png │ │ ├── duplicate_image.png │ │ ├── edit_offsets.png │ │ ├── filter_reset.png │ │ ├── focus_image_list_filter_box.png │ │ └── offset_crosshair.png │ ├── layout_editing │ │ ├── SelectParent.png │ │ ├── abs_integers_mode.png │ │ ├── absolute_mode.png │ │ ├── align_hcentre.png │ │ ├── align_hleft.png │ │ ├── align_hright.png │ │ ├── align_vbottom.png │ │ ├── align_vcentre.png │ │ ├── align_vtop.png │ │ ├── focus_property_inspector_filter_box.png │ │ ├── lock_widget.png │ │ ├── lock_widget_recursively.png │ │ ├── manipulator_locked.png │ │ ├── manipulator_unlocked.png │ │ ├── move_backward_in_parent_list.png │ │ ├── move_forward_in_parent_list.png │ │ ├── normalise_position.png │ │ ├── normalise_size.png │ │ ├── rename.png │ │ ├── round_position.png │ │ ├── round_size.png │ │ ├── snap_grid.png │ │ ├── unlock_widget.png │ │ └── unlock_widget_recursively.png │ ├── looknfeel_editing │ │ ├── absolute_mode.png │ │ ├── align_hcentre.png │ │ ├── align_hleft.png │ │ ├── align_hright.png │ │ ├── align_vbottom.png │ │ ├── align_vcentre.png │ │ ├── align_vtop.png │ │ ├── focus_property_inspector_filter_box.png │ │ ├── lock_widget.png │ │ ├── lock_widget_recursively.png │ │ ├── manipulator_locked.png │ │ ├── manipulator_unlocked.png │ │ ├── normalise_position.png │ │ ├── normalise_size.png │ │ ├── rename.png │ │ ├── snap_grid.png │ │ ├── unlock_widget.png │ │ └── unlock_widget_recursively.png │ ├── project_items │ │ ├── animation.png │ │ ├── bitmap.png │ │ ├── folder.png │ │ ├── font.png │ │ ├── imageset.png │ │ ├── layout.png │ │ ├── looknfeel.png │ │ ├── lua_script.png │ │ ├── python_script.png │ │ ├── scheme.png │ │ ├── text.png │ │ ├── unknown.png │ │ └── xml.png │ ├── project_management │ │ ├── add_existing_file.png │ │ ├── add_new_file.png │ │ ├── create_folder.png │ │ ├── reload_resources.png │ │ ├── remove.png │ │ └── rename.png │ ├── property_inspecting │ │ └── filter_reset.png │ ├── settings │ │ └── reset_entry_to_default.png │ ├── tabs │ │ └── has_changes.png │ ├── unhandled_exception.png │ └── widgets │ │ ├── GLC.png │ │ ├── GLCt.png │ │ ├── HLC.png │ │ ├── VLC.png │ │ └── edit-clear.png ├── images │ ├── BrushScriptStd.otf │ ├── splashscreen.bmp │ ├── splashscreen.png │ └── splashscreen.svg └── misc │ └── update.cmd ├── reference ├── README.md ├── compatibility │ ├── __init__.py │ ├── animation_list │ │ └── __init__.py │ ├── ceguihelpers.py │ ├── font │ │ ├── __init__.py │ │ └── cegui.py │ ├── imageset │ │ ├── __init__.py │ │ ├── cegui.py │ │ └── gorilla.py │ ├── layout │ │ ├── __init__.py │ │ └── cegui.py │ ├── looknfeel │ │ ├── __init__.py │ │ └── cegui.py │ ├── project │ │ └── __init__.py │ └── scheme │ │ ├── __init__.py │ │ └── cegui.py ├── editors │ ├── animation_list │ │ └── timeline.py │ └── looknfeel │ │ ├── falagard_element_editor.py │ │ ├── falagard_element_inspector.py │ │ ├── falagard_element_interface.py │ │ ├── hierarchy_dock_widget.py │ │ ├── hierarchy_tree_item.py │ │ ├── hierarchy_tree_model.py │ │ └── hierarchy_tree_view.py ├── error.py ├── metaimageset │ ├── __init__.py │ ├── compiler.py │ ├── inputs │ │ ├── __init__.py │ │ ├── bitmap.py │ │ ├── imageset.py │ │ ├── inkscape_svg.py │ │ ├── qsvg.py │ │ └── registry.py │ └── rectanglepacking.py ├── paths.py ├── tests │ ├── __init__.py │ ├── cli.py │ └── compatibility │ │ ├── __init__.py │ │ ├── layout_cegui.py │ │ └── layout_data │ │ ├── TabPage1_0_7.layout │ │ ├── TabPage1_1_0.layout │ │ ├── TextDemo_0_7.layout │ │ ├── TextDemo_1_0.layout │ │ ├── VanillaWindows_0_7.layout │ │ └── VanillaWindows_1_0.layout └── ui │ ├── ExceptionDialog.ui │ └── editors │ ├── animation_list │ ├── AnimationListDockWidget.ui │ ├── KeyFramePropertiesDockWidget.ui │ ├── TimelineDockWidget.ui │ └── VisualEditing.ui │ └── looknfeel │ ├── LookNFeelHierarchyDockWidget.ui │ ├── LookNFeelPropertyEditorDockWidget.ui │ └── LookNFeelWidgetLookSelectorWidget.ui ├── src ├── Application.cpp ├── Application.h ├── QtStdHash.h ├── cegui │ ├── CEGUIManager.cpp │ ├── CEGUIManager.h │ ├── CEGUIManipulator.cpp │ ├── CEGUIManipulator.h │ ├── CEGUIProject.cpp │ ├── CEGUIProject.h │ ├── CEGUIProjectItem.cpp │ ├── CEGUIProjectItem.h │ ├── CEGUIUtils.cpp │ ├── CEGUIUtils.h │ ├── QtnProperty2DRotation.h │ ├── QtnPropertyColour.h │ ├── QtnPropertyColourRect.cpp │ ├── QtnPropertyColourRect.h │ ├── QtnPropertyGlmVec2.h │ ├── QtnPropertyGlmVec3.h │ ├── QtnPropertyRectf.h │ ├── QtnPropertySizef.h │ ├── QtnPropertyUBox.cpp │ ├── QtnPropertyUBox.h │ ├── QtnPropertyUDim.cpp │ ├── QtnPropertyUDim.h │ ├── QtnPropertyURect.cpp │ ├── QtnPropertyURect.h │ ├── QtnPropertyUSize.cpp │ ├── QtnPropertyUSize.h │ ├── QtnPropertyUVector2.cpp │ ├── QtnPropertyUVector2.h │ ├── QtnPropertyUVector3.cpp │ └── QtnPropertyUVector3.h ├── editors │ ├── BitmapEditor.cpp │ ├── BitmapEditor.h │ ├── CodeEditMode.cpp │ ├── CodeEditMode.h │ ├── EditorBase.cpp │ ├── EditorBase.h │ ├── MultiModeEditor.cpp │ ├── MultiModeEditor.h │ ├── NoEditor.cpp │ ├── NoEditor.h │ ├── TextEditor.cpp │ ├── TextEditor.h │ ├── anim │ │ ├── AnimationCodeMode.cpp │ │ ├── AnimationCodeMode.h │ │ ├── AnimationEditor.cpp │ │ ├── AnimationEditor.h │ │ ├── AnimationUndoCommands.cpp │ │ ├── AnimationUndoCommands.h │ │ ├── AnimationVisualMode.cpp │ │ └── AnimationVisualMode.h │ ├── imageset │ │ ├── ImagesetCodeMode.cpp │ │ ├── ImagesetCodeMode.h │ │ ├── ImagesetEditor.cpp │ │ ├── ImagesetEditor.h │ │ ├── ImagesetUndoCommands.cpp │ │ ├── ImagesetUndoCommands.h │ │ ├── ImagesetVisualMode.cpp │ │ └── ImagesetVisualMode.h │ ├── layout │ │ ├── LayoutCodeMode.cpp │ │ ├── LayoutCodeMode.h │ │ ├── LayoutEditor.cpp │ │ ├── LayoutEditor.h │ │ ├── LayoutPreviewerMode.cpp │ │ ├── LayoutPreviewerMode.h │ │ ├── LayoutUndoCommands.cpp │ │ ├── LayoutUndoCommands.h │ │ ├── LayoutVisualMode.cpp │ │ └── LayoutVisualMode.h │ └── looknfeel │ │ ├── LookNFeelCodeMode.cpp │ │ ├── LookNFeelCodeMode.h │ │ ├── LookNFeelEditor.cpp │ │ ├── LookNFeelEditor.h │ │ ├── LookNFeelPreviewMode.cpp │ │ ├── LookNFeelPreviewMode.h │ │ ├── LookNFeelScene.cpp │ │ ├── LookNFeelScene.h │ │ ├── LookNFeelUndoCommands.cpp │ │ ├── LookNFeelUndoCommands.h │ │ ├── LookNFeelVisualMode.cpp │ │ └── LookNFeelVisualMode.h ├── main.cpp ├── ui │ ├── CEGUIDebugInfo.cpp │ ├── CEGUIDebugInfo.h │ ├── CEGUIGraphicsScene.cpp │ ├── CEGUIGraphicsScene.h │ ├── CEGUIGraphicsView.cpp │ ├── CEGUIGraphicsView.h │ ├── CEGUIWidget.cpp │ ├── CEGUIWidget.h │ ├── FileSystemBrowser.cpp │ ├── FileSystemBrowser.h │ ├── GuideLine.cpp │ ├── GuideLine.h │ ├── MainWindow.cpp │ ├── MainWindow.h │ ├── NumericValueItem.cpp │ ├── NumericValueItem.h │ ├── ProjectManager.cpp │ ├── ProjectManager.h │ ├── ResizableGraphicsView.cpp │ ├── ResizableGraphicsView.h │ ├── ResizableRectItem.cpp │ ├── ResizableRectItem.h │ ├── ResizingHandle.cpp │ ├── ResizingHandle.h │ ├── SettingEntryEditors.cpp │ ├── SettingEntryEditors.h │ ├── UndoViewer.cpp │ ├── UndoViewer.h │ ├── XMLSyntaxHighlighter.cpp │ ├── XMLSyntaxHighlighter.h │ ├── dialogs │ │ ├── AboutDialog.cpp │ │ ├── AboutDialog.h │ │ ├── KeySequenceDialog.cpp │ │ ├── KeySequenceDialog.h │ │ ├── LicenseDialog.cpp │ │ ├── LicenseDialog.h │ │ ├── MultiplePossibleFactoriesDialog.cpp │ │ ├── MultiplePossibleFactoriesDialog.h │ │ ├── NewProjectDialog.cpp │ │ ├── NewProjectDialog.h │ │ ├── PenDialog.cpp │ │ ├── PenDialog.h │ │ ├── ProjectSettingsDialog.cpp │ │ ├── ProjectSettingsDialog.h │ │ ├── SettingsDialog.cpp │ │ ├── SettingsDialog.h │ │ ├── UpdateDialog.cpp │ │ └── UpdateDialog.h │ ├── imageset │ │ ├── ImageEntry.cpp │ │ ├── ImageEntry.h │ │ ├── ImageLabel.cpp │ │ ├── ImageLabel.h │ │ ├── ImageOffsetMark.cpp │ │ ├── ImageOffsetMark.h │ │ ├── ImagesetEditorDockWidget.cpp │ │ ├── ImagesetEditorDockWidget.h │ │ ├── ImagesetEntry.cpp │ │ └── ImagesetEntry.h │ ├── layout │ │ ├── AnchorCornerHandle.cpp │ │ ├── AnchorCornerHandle.h │ │ ├── AnchorEdgeHandle.cpp │ │ ├── AnchorEdgeHandle.h │ │ ├── AnchorPopupMenu.cpp │ │ ├── AnchorPopupMenu.h │ │ ├── CreateWidgetDockWidget.cpp │ │ ├── CreateWidgetDockWidget.h │ │ ├── LayoutContainerHandle.cpp │ │ ├── LayoutContainerHandle.h │ │ ├── LayoutManipulator.cpp │ │ ├── LayoutManipulator.h │ │ ├── LayoutScene.cpp │ │ ├── LayoutScene.h │ │ ├── WidgetHierarchyDockWidget.cpp │ │ ├── WidgetHierarchyDockWidget.h │ │ ├── WidgetHierarchyItem.cpp │ │ ├── WidgetHierarchyItem.h │ │ ├── WidgetHierarchyTreeModel.cpp │ │ ├── WidgetHierarchyTreeModel.h │ │ ├── WidgetHierarchyTreeView.cpp │ │ ├── WidgetHierarchyTreeView.h │ │ ├── WidgetTypeTreeWidget.cpp │ │ └── WidgetTypeTreeWidget.h │ └── widgets │ │ ├── BitmapEditorWidget.cpp │ │ ├── BitmapEditorWidget.h │ │ ├── ColourButton.cpp │ │ ├── ColourButton.h │ │ ├── FileLineEdit.cpp │ │ ├── FileLineEdit.h │ │ ├── KeySequenceButton.cpp │ │ ├── KeySequenceButton.h │ │ ├── LineEditWithClearButton.cpp │ │ ├── LineEditWithClearButton.h │ │ ├── PenButton.cpp │ │ └── PenButton.h └── util │ ├── DismissableMessage.cpp │ ├── DismissableMessage.h │ ├── RecentlyUsed.cpp │ ├── RecentlyUsed.h │ ├── Settings.cpp │ ├── Settings.h │ ├── SettingsCategory.cpp │ ├── SettingsCategory.h │ ├── SettingsEntry.cpp │ ├── SettingsEntry.h │ ├── SettingsSection.cpp │ ├── SettingsSection.h │ ├── Utils.cpp │ └── Utils.h └── ui ├── CEGUIDebugInfo.ui ├── CEGUIWidget.ui ├── FileSystemBrowser.ui ├── MainWindow.ui ├── ProjectManager.ui ├── dialogs ├── AboutDialog.ui ├── KeySequenceDialog.ui ├── LicenseDialog.ui ├── MultiplePossibleFactoriesDialog.ui ├── NewProjectDialog.ui ├── PenDialog.ui ├── ProjectSettingsDialog.ui └── UpdateDialog.ui ├── imageset └── ImagesetEditorDockWidget.ui ├── layout ├── AnchorPopupMenu.ui ├── CreateWidgetDockWidget.ui └── WidgetHierarchyDockWidget.ui └── widgets ├── BitmapEditorWidget.ui └── FileLineEdit.ui /.editorconfig: -------------------------------------------------------------------------------- 1 |  2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | tab_width = 4 7 | indent_style = space 8 | indent_size = 4 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | *.pro.user* 3 | /3rdParty/CEGUI 4 | !3rdParty/CEGUI/update_cegui_win_sdk*.cmd 5 | *.qm 6 | -------------------------------------------------------------------------------- /3rdParty/OpenSSL/libcrypto-1_1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/3rdParty/OpenSSL/libcrypto-1_1.dll -------------------------------------------------------------------------------- /3rdParty/OpenSSL/libeay32.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/3rdParty/OpenSSL/libeay32.dll -------------------------------------------------------------------------------- /3rdParty/OpenSSL/libssl-1_1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/3rdParty/OpenSSL/libssl-1_1.dll -------------------------------------------------------------------------------- /3rdParty/OpenSSL/ssleay32.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/3rdParty/OpenSSL/ssleay32.dll -------------------------------------------------------------------------------- /3rdParty/QtnProperty/AUTHORS: -------------------------------------------------------------------------------- 1 | Original author: 2 | 3 | Alexey Zhondin 4 | 5 | 6 | Modifications/Extensions by: 7 | 8 | Alexandra Cherdantseva 9 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/NOTICE: -------------------------------------------------------------------------------- 1 | Apache QtnProperty 2 | Copyright 2012-2020 The Apache Software Foundation 3 | 4 | This product includes software developed at 5 | The Apache Software Foundation (http://www.apache.org/). -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Auxiliary/PropertyDelegateInfo.cpp: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #include "PropertyDelegateInfo.h" 19 | #include "QtnProperty/PropertyDelegateAttrs.h" 20 | #include "PropertyMacro.h" 21 | 22 | QtnPropertyDelegateInfo::QtnPropertyDelegateInfo( 23 | const QtnPropertyDelegateInfo &other) 24 | : name(other.name) 25 | , attributes(other.attributes) 26 | { 27 | } 28 | 29 | QtnPropertyDelegateInfo::QtnPropertyDelegateInfo( 30 | const QByteArray &name, const Attributes &attributes) 31 | : name(name) 32 | , attributes(attributes) 33 | { 34 | } 35 | 36 | QByteArray qtnComboBoxDelegate() 37 | { 38 | return QByteArrayLiteral("ComboBox"); 39 | } 40 | 41 | QByteArray qtnCheckBoxDelegate() 42 | { 43 | return QByteArrayLiteral("CheckBox"); 44 | } 45 | 46 | QByteArray qtnFieldDelegateNameAttr() 47 | { 48 | return QByteArrayLiteral("fieldDelegateName"); 49 | } 50 | 51 | double qtnHundredPercent(double value) 52 | { 53 | return std::max(0.0, std::min(100.0, value)); 54 | } 55 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Config.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #pragma once 19 | 20 | #include 21 | 22 | #if defined(QTN_DYNAMIC_LIBRARY) 23 | #define QTN_IMPORT_EXPORT Q_DECL_EXPORT 24 | 25 | #elif defined(QTN_DYNAMIC_IMPORT) 26 | #define QTN_IMPORT_EXPORT Q_DECL_IMPORT 27 | #else 28 | 29 | #define QTN_IMPORT_EXPORT 30 | #ifndef QTN_STATIC_LIBRARY 31 | #define QTN_STATIC_LIBRARY 32 | #endif 33 | #endif 34 | 35 | #define PERCENT_SUFFIX 1 36 | #define DEGREE_SUFFIX 2 37 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Core/PropertyDouble.cpp: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2020 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #include "PropertyDouble.h" 19 | 20 | QtnPropertyDoubleBase::QtnPropertyDoubleBase(QObject *parent) 21 | : QtnNumericPropertyBase>(parent) 22 | { 23 | } 24 | 25 | bool QtnPropertyDoubleBase::fromStrImpl( 26 | const QString &str, QtnPropertyChangeReason reason) 27 | { 28 | bool ok = false; 29 | ValueType value = str.toDouble(&ok); 30 | 31 | if (!ok) 32 | return false; 33 | 34 | return setValue(value, reason); 35 | } 36 | 37 | bool QtnPropertyDoubleBase::toStrImpl(QString &str) const 38 | { 39 | str = QString::number(value(), 'g', std::numeric_limits::digits10); 40 | return true; 41 | } 42 | 43 | QtnPropertyDoubleCallback::QtnPropertyDoubleCallback(QObject *parent) 44 | : QtnSinglePropertyCallback(parent) 45 | { 46 | } 47 | 48 | QtnPropertyDouble::QtnPropertyDouble(QObject *parent) 49 | : QtnNumericPropertyValue(parent) 50 | { 51 | } 52 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Core/PropertyFloat.cpp: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2020 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #include "PropertyFloat.h" 19 | 20 | QtnPropertyFloatBase::QtnPropertyFloatBase(QObject *parent) 21 | : QtnNumericPropertyBase>(parent) 22 | { 23 | } 24 | 25 | bool QtnPropertyFloatBase::fromStrImpl( 26 | const QString &str, QtnPropertyChangeReason reason) 27 | { 28 | bool ok = false; 29 | ValueType value = str.toFloat(&ok); 30 | 31 | if (!ok) 32 | return false; 33 | 34 | return setValue(value, reason); 35 | } 36 | 37 | bool QtnPropertyFloatBase::toStrImpl(QString &str) const 38 | { 39 | str = QString::number(value(), 'g', std::numeric_limits::digits10); 40 | return true; 41 | } 42 | 43 | QtnPropertyFloatCallback::QtnPropertyFloatCallback(QObject *parent) 44 | : QtnSinglePropertyCallback(parent) 45 | { 46 | } 47 | 48 | QtnPropertyFloat::QtnPropertyFloat(QObject *parent) 49 | : QtnNumericPropertyValue(parent) 50 | { 51 | } 52 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Core/PropertyInt.cpp: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #include "PropertyInt.h" 19 | 20 | #include 21 | 22 | QtnPropertyIntBase::QtnPropertyIntBase(QObject *parent) 23 | : QtnNumericPropertyBase>(parent) 24 | { 25 | } 26 | 27 | bool QtnPropertyIntBase::fromStrImpl( 28 | const QString &str, QtnPropertyChangeReason reason) 29 | { 30 | bool ok = false; 31 | ValueType value = str.toInt(&ok); 32 | 33 | if (!ok) 34 | return false; 35 | 36 | return setValue(value, reason); 37 | } 38 | 39 | bool QtnPropertyIntBase::toStrImpl(QString &str) const 40 | { 41 | str = QString::number(value()); 42 | return true; 43 | } 44 | 45 | QtnPropertyIntCallback::QtnPropertyIntCallback(QObject *parent) 46 | : QtnSinglePropertyCallback(parent) 47 | { 48 | } 49 | 50 | QtnPropertyInt::QtnPropertyInt(QObject *parent) 51 | : QtnNumericPropertyValue(parent) 52 | { 53 | } 54 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Core/PropertyUInt.cpp: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #include "PropertyUInt.h" 19 | 20 | #include 21 | 22 | QtnPropertyUIntBase::QtnPropertyUIntBase(QObject *parent) 23 | : QtnNumericPropertyBase>(parent) 24 | { 25 | } 26 | 27 | bool QtnPropertyUIntBase::fromStrImpl( 28 | const QString &str, QtnPropertyChangeReason reason) 29 | { 30 | bool ok = false; 31 | ValueType value = str.toUInt(&ok); 32 | 33 | if (!ok) 34 | return false; 35 | 36 | return setValue(value, reason); 37 | } 38 | 39 | bool QtnPropertyUIntBase::toStrImpl(QString &str) const 40 | { 41 | str = QString::number(value()); 42 | return true; 43 | } 44 | 45 | QtnPropertyUIntCallback::QtnPropertyUIntCallback(QObject *parent) 46 | : QtnSinglePropertyCallback(parent) 47 | { 48 | } 49 | 50 | QtnPropertyUInt::QtnPropertyUInt(QObject *parent) 51 | : QtnNumericPropertyValue(parent) 52 | { 53 | } 54 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Delegates/Core/PropertyDelegateEnum.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #ifndef PROPERTY_DELEGATE_ENUM_H 19 | #define PROPERTY_DELEGATE_ENUM_H 20 | 21 | #include "QtnProperty/Delegates/Utils/PropertyDelegateMisc.h" 22 | #include "QtnProperty/Core/PropertyEnum.h" 23 | 24 | class QTN_IMPORT_EXPORT QtnPropertyDelegateEnum 25 | : public QtnPropertyDelegateTyped 26 | { 27 | Q_DISABLE_COPY(QtnPropertyDelegateEnum) 28 | 29 | public: 30 | QtnPropertyDelegateEnum(QtnPropertyEnumBase &owner); 31 | 32 | static void Register(QtnPropertyDelegateFactory &factory); 33 | 34 | protected: 35 | virtual QWidget *createValueEditorImpl(QWidget *parent, const QRect &rect, 36 | QtnInplaceInfo *inplaceInfo = nullptr) override; 37 | 38 | virtual bool propertyValueToStrImpl(QString &strValue) const override; 39 | }; 40 | 41 | #endif // PROPERTY_DELEGATE_ENUM_H 42 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Delegates/Core/PropertyDelegateEnumFlags.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #ifndef PROPERTY_DELEGATE_ENUM_FLAGS_H 19 | #define PROPERTY_DELEGATE_ENUM_FLAGS_H 20 | 21 | #include "QtnProperty/Delegates/Utils/PropertyDelegateMisc.h" 22 | #include "QtnProperty/Core/PropertyEnumFlags.h" 23 | 24 | class QTN_IMPORT_EXPORT QtnPropertyDelegateEnumFlags 25 | : public QtnPropertyDelegateTypedEx 26 | { 27 | Q_DISABLE_COPY(QtnPropertyDelegateEnumFlags) 28 | 29 | public: 30 | QtnPropertyDelegateEnumFlags(QtnPropertyEnumFlagsBase &owner); 31 | 32 | static void Register(QtnPropertyDelegateFactory &factory); 33 | 34 | protected: 35 | virtual QWidget *createValueEditorImpl(QWidget *parent, const QRect &rect, 36 | QtnInplaceInfo *inplaceInfo = nullptr) override; 37 | 38 | virtual bool propertyValueToStrImpl(QString &strValue) const override; 39 | }; 40 | 41 | #endif // PROPERTY_DELEGATE_ENUM_FLAGS_H 42 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Delegates/Core/PropertyDelegateQPoint.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #ifndef PROPERTY_DELEGATE_QPOINT_H 19 | #define PROPERTY_DELEGATE_QPOINT_H 20 | 21 | #include "QtnProperty/Delegates/Utils/PropertyDelegateMisc.h" 22 | #include "QtnProperty/Core/PropertyQPoint.h" 23 | 24 | class QtnPropertyQPointBase; 25 | 26 | class QTN_IMPORT_EXPORT QtnPropertyDelegateQPoint 27 | : public QtnPropertyDelegateTypedEx 28 | { 29 | Q_DISABLE_COPY(QtnPropertyDelegateQPoint) 30 | 31 | QString m_suffix; 32 | 33 | public: 34 | QtnPropertyDelegateQPoint(QtnPropertyQPointBase &owner); 35 | 36 | static void Register(QtnPropertyDelegateFactory &factory); 37 | 38 | protected: 39 | virtual void applyAttributesImpl( 40 | const QtnPropertyDelegateInfo &info) override; 41 | 42 | virtual QWidget *createValueEditorImpl(QWidget *parent, const QRect &rect, 43 | QtnInplaceInfo *inplaceInfo = nullptr) override; 44 | 45 | virtual bool propertyValueToStrImpl(QString &strValue) const override; 46 | }; 47 | 48 | #endif // PROPERTY_DELEGATE_QPOINT_H 49 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Delegates/Core/PropertyDelegateQRect.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #ifndef PROPERTY_DELEGATE_QRECT_H 19 | #define PROPERTY_DELEGATE_QRECT_H 20 | 21 | #include "QtnProperty/Delegates/Utils/PropertyDelegateMisc.h" 22 | #include "QtnProperty/Core/PropertyQRect.h" 23 | 24 | class QTN_IMPORT_EXPORT QtnPropertyDelegateQRect 25 | : public QtnPropertyDelegateTypedEx 26 | { 27 | Q_DISABLE_COPY(QtnPropertyDelegateQRect) 28 | 29 | bool m_coordinates; 30 | 31 | public: 32 | QtnPropertyDelegateQRect( 33 | QtnPropertyQRectBase &owner, bool useCoordinates = false); 34 | 35 | static void Register(QtnPropertyDelegateFactory &factory); 36 | 37 | protected: 38 | virtual void applyAttributesImpl( 39 | const QtnPropertyDelegateInfo &info) override; 40 | 41 | virtual QWidget *createValueEditorImpl(QWidget *parent, const QRect &rect, 42 | QtnInplaceInfo *inplaceInfo = nullptr) override; 43 | 44 | virtual bool propertyValueToStrImpl(QString &strValue) const override; 45 | }; 46 | 47 | #endif // PROPERTY_DELEGATE_QRECT_H 48 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Delegates/Core/PropertyDelegateQSize.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #ifndef PROPERTY_DELEGATE_QSIZE_H 19 | #define PROPERTY_DELEGATE_QSIZE_H 20 | 21 | #include "QtnProperty/Delegates/Utils/PropertyDelegateMisc.h" 22 | #include "QtnProperty/Core/PropertyQSize.h" 23 | 24 | class QTN_IMPORT_EXPORT QtnPropertyDelegateQSize 25 | : public QtnPropertyDelegateTypedEx 26 | { 27 | Q_DISABLE_COPY(QtnPropertyDelegateQSize) 28 | 29 | public: 30 | QtnPropertyDelegateQSize(QtnPropertyQSizeBase &owner); 31 | 32 | static void Register(QtnPropertyDelegateFactory &factory); 33 | 34 | protected: 35 | virtual void applyAttributesImpl( 36 | const QtnPropertyDelegateInfo &info) override; 37 | 38 | virtual QWidget *createValueEditorImpl(QWidget *parent, const QRect &rect, 39 | QtnInplaceInfo *inplaceInfo = nullptr) override; 40 | 41 | virtual bool propertyValueToStrImpl(QString &strValue) const override; 42 | }; 43 | 44 | #endif // PROPERTY_DELEGATE_QSIZE_H 45 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Delegates/Core/PropertyDelegateQSizeF.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2020 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #ifndef PROPERTY_DELEGATE_QSIZEF_H 19 | #define PROPERTY_DELEGATE_QSIZEF_H 20 | 21 | #include "QtnProperty/Delegates/Utils/PropertyDelegateMisc.h" 22 | #include "QtnProperty/Core/PropertyQSizeF.h" 23 | 24 | class QTN_IMPORT_EXPORT QtnPropertyDelegateQSizeF 25 | : public QtnPropertyDelegateTypedEx 26 | { 27 | Q_DISABLE_COPY(QtnPropertyDelegateQSizeF) 28 | 29 | int m_precision; 30 | 31 | public: 32 | QtnPropertyDelegateQSizeF(QtnPropertyQSizeFBase &owner); 33 | 34 | static void Register(QtnPropertyDelegateFactory &factory); 35 | 36 | protected: 37 | virtual void applyAttributesImpl( 38 | const QtnPropertyDelegateInfo &info) override; 39 | 40 | virtual QWidget *createValueEditorImpl(QWidget *parent, const QRect &rect, 41 | QtnInplaceInfo *inplaceInfo = nullptr) override; 42 | 43 | virtual bool propertyValueToStrImpl(QString &strValue) const override; 44 | }; 45 | 46 | #endif // PROPERTY_DELEGATE_QSIZEF_H 47 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Delegates/GUI/PropertyDelegateQVector3D.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2020 Alexandra Cherdantseva 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | *******************************************************************************/ 16 | #pragma once 17 | 18 | #include "QtnProperty/Delegates/Utils/PropertyDelegateMisc.h" 19 | #include "QtnProperty/GUI/PropertyQVector3D.h" 20 | 21 | class QtnPropertyQVector3DBase; 22 | 23 | class QTN_IMPORT_EXPORT QtnPropertyDelegateQVector3D 24 | : public QtnPropertyDelegateTypedEx 25 | { 26 | Q_DISABLE_COPY(QtnPropertyDelegateQVector3D) 27 | 28 | QString m_suffix; 29 | double m_multiplier; 30 | int m_precision; 31 | 32 | public: 33 | QtnPropertyDelegateQVector3D(QtnPropertyQVector3DBase &owner); 34 | 35 | static void Register(QtnPropertyDelegateFactory &factory); 36 | 37 | protected: 38 | virtual void applyAttributesImpl( 39 | const QtnPropertyDelegateInfo &info) override; 40 | 41 | virtual QWidget *createValueEditorImpl(QWidget *parent, const QRect &rect, 42 | QtnInplaceInfo *inplaceInfo = nullptr) override; 43 | 44 | virtual bool propertyValueToStrImpl(QString &strValue) const override; 45 | }; 46 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Delegates/Utils/PropertyDelegateGeoCoord.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #ifndef PROPERTY_DELEGATE_GEOCOORD_H 19 | #define PROPERTY_DELEGATE_GEOCOORD_H 20 | 21 | #include "QtnProperty/Delegates/Utils/PropertyDelegateMisc.h" 22 | #include "QtnProperty/Core/PropertyDouble.h" 23 | 24 | class QTN_IMPORT_EXPORT QtnPropertyDelegateGeoCoord 25 | : public QtnPropertyDelegateTyped 26 | { 27 | Q_DISABLE_COPY(QtnPropertyDelegateGeoCoord) 28 | 29 | public: 30 | QtnPropertyDelegateGeoCoord(QtnPropertyDoubleBase &owner); 31 | 32 | static void Register(QtnPropertyDelegateFactory &factory); 33 | 34 | protected: 35 | virtual QWidget *createValueEditorImpl(QWidget *parent, const QRect &rect, 36 | QtnInplaceInfo *inplaceInfo = nullptr) override; 37 | 38 | virtual bool propertyValueToStrImpl(QString &strValue) const override; 39 | }; 40 | 41 | #endif // PROPERTY_DELEGATE_GEOCOORD_H 42 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Delegates/Utils/PropertyDelegatePropertySet.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #ifndef QTN_PROPERTY_DELEGATE_PROPERTY_SET_H 19 | #define QTN_PROPERTY_DELEGATE_PROPERTY_SET_H 20 | 21 | #include "QtnProperty/Delegates/PropertyDelegate.h" 22 | #include "QtnProperty/PropertySet.h" 23 | 24 | class QtnPropertySet; 25 | 26 | class QTN_IMPORT_EXPORT QtnPropertyDelegatePropertySet 27 | : public QtnPropertyDelegate 28 | { 29 | Q_DISABLE_COPY(QtnPropertyDelegatePropertySet) 30 | 31 | public: 32 | QtnPropertyDelegatePropertySet(QtnPropertySet &owner); 33 | 34 | static void Register(QtnPropertyDelegateFactory &factory); 35 | 36 | protected: 37 | int subPropertyCountImpl() const override; 38 | QtnPropertyBase *subPropertyImpl(int index) override; 39 | 40 | void createSubItemsImpl( 41 | QtnDrawContext &context, QList &subItems) override; 42 | 43 | private: 44 | QtnPropertySet &m_owner; 45 | }; 46 | 47 | #endif // QTN_PROPERTY_DELEGATE_PROPERTY_SET_H 48 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/FunctionalHelpers.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #pragma once 19 | 20 | #include "Config.h" 21 | 22 | #include 23 | 24 | template 25 | std::function qtnMemFn(T *t, R (T::*memFn)(Types...) const) 26 | { 27 | return [t, memFn](Types... args) { 28 | return std::mem_fn(memFn)(t, std::forward(args)...); 29 | }; 30 | } 31 | 32 | template 33 | std::function qtnMemFn(T *t, R (T::*memFn)(Types...)) 34 | { 35 | return [t, memFn](Types... args) { 36 | return std::mem_fn(memFn)(t, std::forward(args)...); 37 | }; 38 | } 39 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/GUI/PropertyButton.cpp: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #include "PropertyButton.h" 19 | 20 | QtnPropertyButton::QtnPropertyButton(QObject *parent) 21 | : QtnProperty(parent) 22 | { 23 | switchState(QtnPropertyStateNonSerialized, true); 24 | } 25 | 26 | void QtnPropertyButton::invokeClick() 27 | { 28 | emit click(this); 29 | } 30 | 31 | void QtnPropertyButton::setClickHandler( 32 | const std::function &clickHandler) 33 | { 34 | QObject::connect(this, &QtnPropertyButton::click, clickHandler); 35 | } 36 | 37 | void QtnPropertyButton::invokePreDrawButton(QStyleOptionButton *option) 38 | { 39 | Q_ASSERT(option); 40 | emit preDrawButton(this, option); 41 | } 42 | 43 | bool QtnPropertyButton::fromStrImpl(const QString &, QtnPropertyChangeReason) 44 | { 45 | return false; 46 | } 47 | 48 | bool QtnPropertyButton::toStrImpl(QString &) const 49 | { 50 | return false; 51 | } 52 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/IQtnPropertyStateProvider.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2015-2019 Alexandra Cherdantseva 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | *******************************************************************************/ 16 | 17 | #pragma once 18 | 19 | #include "Auxiliary/PropertyAux.h" 20 | 21 | struct IQtnPropertyStateProvider 22 | { 23 | virtual ~IQtnPropertyStateProvider() {} 24 | 25 | virtual QtnPropertyState getPropertyState( 26 | const QMetaProperty &metaProperty) const = 0; 27 | 28 | virtual void setPropertyState( 29 | const QMetaProperty &metaProperty, QtnPropertyState state) = 0; 30 | }; 31 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Install.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2015-2019 Alexandra Cherdantseva 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | *******************************************************************************/ 16 | 17 | #pragma once 18 | 19 | #include "Config.h" 20 | 21 | class QLocale; 22 | 23 | QTN_IMPORT_EXPORT void qtnPropertyInstallTranslations(const QLocale &locale); 24 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Property.cpp: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #include "Property.h" 19 | 20 | QtnProperty::QtnProperty(QObject *parent) 21 | : QtnPropertyBase(parent) 22 | { 23 | } 24 | 25 | QtnProperty::~QtnProperty() 26 | { 27 | // Do not remove! Will be compile errors. 28 | } 29 | 30 | QtnProperty *QtnProperty::asProperty() 31 | { 32 | return this; 33 | } 34 | 35 | const QtnProperty *QtnProperty::asProperty() const 36 | { 37 | return this; 38 | } 39 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Property.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #ifndef QTN_PROPERTY_H 19 | #define QTN_PROPERTY_H 20 | 21 | #include "PropertyBase.h" 22 | 23 | class QTN_IMPORT_EXPORT QtnProperty : public QtnPropertyBase 24 | { 25 | Q_OBJECT 26 | Q_DISABLE_COPY(QtnProperty) 27 | 28 | public: 29 | virtual ~QtnProperty() override; 30 | 31 | // casts 32 | virtual QtnProperty *asProperty() override; 33 | virtual const QtnProperty *asProperty() const override; 34 | 35 | signals: 36 | void propertyValueAccept(QtnPropertyValuePtr valueToAccept, bool *accept); 37 | 38 | protected: 39 | explicit QtnProperty(QObject *parent); 40 | }; 41 | 42 | #endif // QTN_PROPERTY_H 43 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/PropertyCore.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #ifndef PROPERTYCORE_H 19 | #define PROPERTYCORE_H 20 | 21 | #include "PropertySet.h" 22 | #include "Core/PropertyBool.h" 23 | #include "Core/PropertyInt.h" 24 | #include "Core/PropertyUInt.h" 25 | #include "Core/PropertyFloat.h" 26 | #include "Core/PropertyDouble.h" 27 | #include "Core/PropertyEnum.h" 28 | #include "Core/PropertyEnumFlags.h" 29 | #include "Core/PropertyQString.h" 30 | #include "Core/PropertyQRect.h" 31 | #include "Core/PropertyQRectF.h" 32 | #include "Core/PropertyQPoint.h" 33 | #include "Core/PropertyQPointF.h" 34 | #include "Core/PropertyQSize.h" 35 | #include "Core/PropertyQSizeF.h" 36 | 37 | #endif // PROPERTYCORE_H 38 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/PropertyGUI.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (c) 2015-2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #ifndef PROPERTYGUI_H 19 | #define PROPERTYGUI_H 20 | 21 | #include "PropertySet.h" 22 | #include "GUI/PropertyQColor.h" 23 | #include "GUI/PropertyQFont.h" 24 | #include "GUI/PropertyQPen.h" 25 | #include "GUI/PropertyQBrush.h" 26 | #include "GUI/PropertyQVector3D.h" 27 | #include "GUI/PropertyButton.h" 28 | 29 | #endif // PROPERTYGUI_H 30 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/QtnProperty.pro: -------------------------------------------------------------------------------- 1 | include(../Internal/TargetConfig.pri) 2 | 3 | TARGET = QtnProperty 4 | TEMPLATE = lib 5 | VERSION = 2.0.3 6 | 7 | qtnproperty_dynamic { 8 | DEFINES += QTN_DYNAMIC_LIBRARY 9 | macx { 10 | QMAKE_SONAME_PREFIX = @rpath 11 | } 12 | 13 | CONFIG += shared 14 | } else { 15 | CONFIG += static 16 | } 17 | 18 | include(./QtnProperty.pri) 19 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/QtnProperty.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | Translations/en.qm 4 | 5 | 6 | Translations/ru.qm 7 | 8 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Utils/DoubleSpinBox.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2015-2019 Alexandra Cherdantseva 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | *******************************************************************************/ 16 | #pragma once 17 | 18 | #include 19 | 20 | #include "QtnProperty/Config.h" 21 | 22 | class QTN_IMPORT_EXPORT QtnDoubleSpinBox : public QDoubleSpinBox 23 | { 24 | public: 25 | explicit QtnDoubleSpinBox(QWidget *parent = nullptr); 26 | 27 | virtual QString textFromValue(double val) const override; 28 | virtual QValidator::State validate(QString &text, int &pos) const override; 29 | 30 | static QString valueToText(double value, const QLocale &locale = QLocale(), 31 | int decimals = 15, bool groupSeparatorShown = false); 32 | }; 33 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Utils/InplaceEditing.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2012-2016 Alex Zhondin 3 | Copyright (C) 2015-2019 Alexandra Cherdantseva 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | *******************************************************************************/ 17 | 18 | #ifndef INPLACE_EDITING_H 19 | #define INPLACE_EDITING_H 20 | 21 | #include "QtnProperty/Config.h" 22 | 23 | #include 24 | 25 | QTN_IMPORT_EXPORT void qtnRetainInplaceEditor(); 26 | QTN_IMPORT_EXPORT void qtnReleaseInplaceEditor(); 27 | QTN_IMPORT_EXPORT bool qtnStartInplaceEdit(QWidget *editor); 28 | QTN_IMPORT_EXPORT QWidget *qtnGetInplaceEdit(); 29 | QTN_IMPORT_EXPORT bool qtnStopInplaceEdit( 30 | bool delete_later = true, bool restoreParentFocus = true); 31 | 32 | #endif // INPLACE_EDITING_H 33 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Utils/MultilineTextDialog.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2015-2019 Alexandra Cherdantseva 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | *******************************************************************************/ 16 | 17 | #pragma once 18 | 19 | #include "QtnProperty/Config.h" 20 | 21 | #include 22 | 23 | namespace Ui 24 | { 25 | class MultilineTextDialog; 26 | } 27 | 28 | class QAbstractButton; 29 | 30 | class QTN_IMPORT_EXPORT MultilineTextDialog : public QDialog 31 | { 32 | Q_OBJECT 33 | 34 | public: 35 | explicit MultilineTextDialog(QWidget *parent = nullptr); 36 | virtual ~MultilineTextDialog(); 37 | 38 | void setReadOnly(bool value); 39 | 40 | void setText(const QString &text); 41 | QString getText() const; 42 | 43 | private slots: 44 | void on_buttonBox_clicked(QAbstractButton *button); 45 | 46 | private: 47 | Ui::MultilineTextDialog *ui; 48 | }; 49 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Utils/MultilineTextDialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MultilineTextDialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 400 10 | 300 11 | 12 | 13 | 14 | 15 | 16 | 17 | true 18 | 19 | 20 | true 21 | 22 | 23 | 24 | 6 25 | 26 | 27 | 6 28 | 29 | 30 | 6 31 | 32 | 33 | 6 34 | 35 | 36 | 37 | 38 | true 39 | 40 | 41 | QPlainTextEdit::WidgetWidth 42 | 43 | 44 | 45 | 46 | 47 | 48 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 49 | 50 | 51 | false 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Utils/QtnCompleterItemDelegate.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | class QtnCompleterLineEdit; 6 | class QtnCompleterItemDelegate : public QStyledItemDelegate 7 | { 8 | Q_OBJECT 9 | 10 | QtnCompleterLineEdit *mLineEdit; 11 | 12 | public: 13 | QtnCompleterItemDelegate( 14 | QtnCompleterLineEdit *lineEdit, QObject *parent = nullptr); 15 | 16 | void paint(QPainter *painter, const QStyleOptionViewItem &option, 17 | const QModelIndex &index) const override; 18 | }; 19 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Utils/QtnCompleterLineEdit.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "QtnProperty/Config.h" 4 | 5 | #include 6 | 7 | class QAbstractItemModel; 8 | class QtnCompleterItemDelegate; 9 | 10 | class QTN_IMPORT_EXPORT QtnCompleterLineEdit : public QLineEdit 11 | { 12 | Q_OBJECT 13 | 14 | class ListView; 15 | class Completer; 16 | QtnCompleterItemDelegate *mDefaultItemDelegate; 17 | 18 | public: 19 | explicit QtnCompleterLineEdit(QWidget *parent = nullptr); 20 | virtual ~QtnCompleterLineEdit() override; 21 | 22 | QAbstractItemModel *completerModel() const; 23 | void setCompleterModel(QAbstractItemModel *model); 24 | 25 | public slots: 26 | void complete(); 27 | 28 | signals: 29 | void escaped(); 30 | 31 | protected: 32 | virtual bool event(QEvent *e) override; 33 | 34 | private: 35 | using QLineEdit::setCompleter; 36 | }; 37 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Utils/QtnConnections.cpp: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2015-2019 Alexandra Cherdantseva 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | *******************************************************************************/ 16 | 17 | #include "QtnConnections.h" 18 | 19 | #include 20 | 21 | void QtnConnections::disconnect() 22 | { 23 | for (auto &connection : *this) 24 | { 25 | QObject::disconnect(connection); 26 | } 27 | 28 | clear(); 29 | } 30 | 31 | QtnConnections::QtnConnections() {} 32 | 33 | QtnConnections::~QtnConnections() 34 | { 35 | if (!empty()) 36 | disconnect(); 37 | } 38 | -------------------------------------------------------------------------------- /3rdParty/QtnProperty/QtnProperty/Utils/QtnConnections.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | Copyright (c) 2015-2019 Alexandra Cherdantseva 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | *******************************************************************************/ 16 | 17 | #pragma once 18 | 19 | #include "QtnProperty/Config.h" 20 | 21 | #include 22 | 23 | #include 24 | 25 | class QTN_IMPORT_EXPORT QtnConnections 26 | : public std::vector 27 | { 28 | Q_DISABLE_COPY(QtnConnections) 29 | 30 | public: 31 | void disconnect(); 32 | 33 | QtnConnections(); 34 | ~QtnConnections(); 35 | }; 36 | -------------------------------------------------------------------------------- /3rdParty/minizip-ng/LICENSE: -------------------------------------------------------------------------------- 1 | Condition of use and distribution are the same as zlib: 2 | 3 | This software is provided 'as-is', without any express or implied 4 | warranty. In no event will the authors be held liable for any damages 5 | arising from the use of this software. 6 | 7 | Permission is granted to anyone to use this software for any purpose, 8 | including commercial applications, and to alter it and redistribute it 9 | freely, subject to the following restrictions: 10 | 11 | 1. The origin of this software must not be misrepresented; you must not 12 | claim that you wrote the original software. If you use this software 13 | in a product, an acknowledgement in the product documentation would be 14 | appreciated but is not required. 15 | 2. Altered source versions must be plainly marked as such, and must not be 16 | misrepresented as being the original software. 17 | 3. This notice may not be removed or altered from any source distribution. 18 | -------------------------------------------------------------------------------- /3rdParty/minizip-ng/minizip-ng.pri: -------------------------------------------------------------------------------- 1 | 2 | HEADERS += \ 3 | $$PWD/mz.h \ 4 | $$PWD/mz_crypt.h \ 5 | $$PWD/mz_os.h \ 6 | $$PWD/mz_strm.h \ 7 | $$PWD/mz_strm_buf.h \ 8 | $$PWD/mz_strm_mem.h \ 9 | $$PWD/mz_strm_os.h \ 10 | $$PWD/mz_strm_split.h \ 11 | $$PWD/mz_strm_zlib.h \ 12 | $$PWD/mz_zip.h \ 13 | $$PWD/mz_zip_rw.h 14 | 15 | SOURCES += \ 16 | $$PWD/mz_crypt.c \ 17 | $$PWD/mz_os.c \ 18 | $$PWD/mz_strm.c \ 19 | $$PWD/mz_strm_buf.c \ 20 | $$PWD/mz_strm_mem.c \ 21 | $$PWD/mz_strm_split.c \ 22 | $$PWD/mz_strm_zlib.c \ 23 | $$PWD/mz_zip.c \ 24 | $$PWD/mz_zip_rw.c 25 | 26 | win32 { 27 | SOURCES += $$PWD/mz_os_win32.c \ 28 | $$PWD/mz_strm_os_win32.c 29 | } else { 30 | SOURCES += $$PWD/mz_os_posix.c \ 31 | $$PWD/mz_strm_os_posix.c 32 | } 33 | 34 | INCLUDEPATH += $$PWD 35 | 36 | DEFINES += _CRT_SECURE_NO_DEPRECATE HAVE_ZLIB NO_FSEEKO HAVE_STDINT_H HAVE_INTTYPES_H MZ_ZIP_NO_CRYPTO MZ_ZIP_NO_ENCRYPTION 37 | 38 | -------------------------------------------------------------------------------- /3rdParty/minizip-ng/mz_strm_buf.h: -------------------------------------------------------------------------------- 1 | /* mz_strm_buf.h -- Stream for buffering reads/writes 2 | part of the minizip-ng project 3 | 4 | This version of ioapi is designed to buffer IO. 5 | 6 | Copyright (C) 2010-2021 Nathan Moinvaziri 7 | https://github.com/zlib-ng/minizip-ng 8 | 9 | This program is distributed under the terms of the same license as zlib. 10 | See the accompanying LICENSE file for the full text of the license. 11 | */ 12 | 13 | #ifndef MZ_STREAM_BUFFERED_H 14 | #define MZ_STREAM_BUFFERED_H 15 | 16 | #ifdef __cplusplus 17 | extern "C" { 18 | #endif 19 | 20 | /***************************************************************************/ 21 | 22 | int32_t mz_stream_buffered_open(void *stream, const char *path, int32_t mode); 23 | int32_t mz_stream_buffered_is_open(void *stream); 24 | int32_t mz_stream_buffered_read(void *stream, void *buf, int32_t size); 25 | int32_t mz_stream_buffered_write(void *stream, const void *buf, int32_t size); 26 | int64_t mz_stream_buffered_tell(void *stream); 27 | int32_t mz_stream_buffered_seek(void *stream, int64_t offset, int32_t origin); 28 | int32_t mz_stream_buffered_close(void *stream); 29 | int32_t mz_stream_buffered_error(void *stream); 30 | 31 | void* mz_stream_buffered_create(void **stream); 32 | void mz_stream_buffered_delete(void **stream); 33 | 34 | void* mz_stream_buffered_get_interface(void); 35 | 36 | /***************************************************************************/ 37 | 38 | #ifdef __cplusplus 39 | } 40 | #endif 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /3rdParty/minizip-ng/mz_strm_mem.h: -------------------------------------------------------------------------------- 1 | /* mz_strm_mem.h -- Stream for memory access 2 | part of the minizip-ng project 3 | 4 | Copyright (C) 2010-2021 Nathan Moinvaziri 5 | https://github.com/zlib-ng/minizip-ng 6 | 7 | This program is distributed under the terms of the same license as zlib. 8 | See the accompanying LICENSE file for the full text of the license. 9 | */ 10 | 11 | #ifndef MZ_STREAM_MEM_H 12 | #define MZ_STREAM_MEM_H 13 | 14 | #ifdef __cplusplus 15 | extern "C" { 16 | #endif 17 | 18 | /***************************************************************************/ 19 | 20 | int32_t mz_stream_mem_open(void *stream, const char *filename, int32_t mode); 21 | int32_t mz_stream_mem_is_open(void *stream); 22 | int32_t mz_stream_mem_read(void *stream, void *buf, int32_t size); 23 | int32_t mz_stream_mem_write(void *stream, const void *buf, int32_t size); 24 | int64_t mz_stream_mem_tell(void *stream); 25 | int32_t mz_stream_mem_seek(void *stream, int64_t offset, int32_t origin); 26 | int32_t mz_stream_mem_close(void *stream); 27 | int32_t mz_stream_mem_error(void *stream); 28 | 29 | void mz_stream_mem_set_buffer(void *stream, void *buf, int32_t size); 30 | int32_t mz_stream_mem_get_buffer(void *stream, const void **buf); 31 | int32_t mz_stream_mem_get_buffer_at(void *stream, int64_t position, const void **buf); 32 | int32_t mz_stream_mem_get_buffer_at_current(void *stream, const void **buf); 33 | void mz_stream_mem_get_buffer_length(void *stream, int32_t *length); 34 | void mz_stream_mem_set_buffer_limit(void *stream, int32_t limit); 35 | void mz_stream_mem_set_grow_size(void *stream, int32_t grow_size); 36 | 37 | void* mz_stream_mem_create(void **stream); 38 | void mz_stream_mem_delete(void **stream); 39 | 40 | void* mz_stream_mem_get_interface(void); 41 | 42 | /***************************************************************************/ 43 | 44 | #ifdef __cplusplus 45 | } 46 | #endif 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /3rdParty/minizip-ng/mz_strm_os.h: -------------------------------------------------------------------------------- 1 | /* mz_sstrm_os.h -- Stream for filesystem access 2 | part of the minizip-ng project 3 | 4 | Copyright (C) 2010-2021 Nathan Moinvaziri 5 | https://github.com/zlib-ng/minizip-ng 6 | 7 | This program is distributed under the terms of the same license as zlib. 8 | See the accompanying LICENSE file for the full text of the license. 9 | */ 10 | 11 | #ifndef MZ_STREAM_OS_H 12 | #define MZ_STREAM_OS_H 13 | 14 | #ifdef __cplusplus 15 | extern "C" { 16 | #endif 17 | 18 | /***************************************************************************/ 19 | 20 | int32_t mz_stream_os_open(void *stream, const char *path, int32_t mode); 21 | int32_t mz_stream_os_is_open(void *stream); 22 | int32_t mz_stream_os_read(void *stream, void *buf, int32_t size); 23 | int32_t mz_stream_os_write(void *stream, const void *buf, int32_t size); 24 | int64_t mz_stream_os_tell(void *stream); 25 | int32_t mz_stream_os_seek(void *stream, int64_t offset, int32_t origin); 26 | int32_t mz_stream_os_close(void *stream); 27 | int32_t mz_stream_os_error(void *stream); 28 | 29 | void* mz_stream_os_create(void **stream); 30 | void mz_stream_os_delete(void **stream); 31 | 32 | void* mz_stream_os_get_interface(void); 33 | 34 | /***************************************************************************/ 35 | 36 | #ifdef __cplusplus 37 | } 38 | #endif 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /3rdParty/minizip-ng/mz_strm_split.h: -------------------------------------------------------------------------------- 1 | /* mz_strm_split.h -- Stream for split files 2 | part of the minizip-ng project 3 | 4 | Copyright (C) 2010-2021 Nathan Moinvaziri 5 | https://github.com/zlib-ng/minizip-ng 6 | 7 | This program is distributed under the terms of the same license as zlib. 8 | See the accompanying LICENSE file for the full text of the license. 9 | */ 10 | 11 | #ifndef MZ_STREAM_SPLIT_H 12 | #define MZ_STREAM_SPLIT_H 13 | 14 | #ifdef __cplusplus 15 | extern "C" { 16 | #endif 17 | 18 | /***************************************************************************/ 19 | 20 | int32_t mz_stream_split_open(void *stream, const char *filename, int32_t mode); 21 | int32_t mz_stream_split_is_open(void *stream); 22 | int32_t mz_stream_split_read(void *stream, void *buf, int32_t size); 23 | int32_t mz_stream_split_write(void *stream, const void *buf, int32_t size); 24 | int64_t mz_stream_split_tell(void *stream); 25 | int32_t mz_stream_split_seek(void *stream, int64_t offset, int32_t origin); 26 | int32_t mz_stream_split_close(void *stream); 27 | int32_t mz_stream_split_error(void *stream); 28 | 29 | int32_t mz_stream_split_get_prop_int64(void *stream, int32_t prop, int64_t *value); 30 | int32_t mz_stream_split_set_prop_int64(void *stream, int32_t prop, int64_t value); 31 | 32 | void* mz_stream_split_create(void **stream); 33 | void mz_stream_split_delete(void **stream); 34 | 35 | void* mz_stream_split_get_interface(void); 36 | 37 | /***************************************************************************/ 38 | 39 | #ifdef __cplusplus 40 | } 41 | #endif 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /3rdParty/minizip-ng/mz_strm_zlib.h: -------------------------------------------------------------------------------- 1 | /* mz_strm_zlib.h -- Stream for zlib inflate/deflate 2 | part of the minizip-ng project 3 | 4 | Copyright (C) 2010-2021 Nathan Moinvaziri 5 | https://github.com/zlib-ng/minizip-ng 6 | 7 | This program is distributed under the terms of the same license as zlib. 8 | See the accompanying LICENSE file for the full text of the license. 9 | */ 10 | 11 | #ifndef MZ_STREAM_ZLIB_H 12 | #define MZ_STREAM_ZLIB_H 13 | 14 | #ifdef __cplusplus 15 | extern "C" { 16 | #endif 17 | 18 | /***************************************************************************/ 19 | 20 | int32_t mz_stream_zlib_open(void *stream, const char *filename, int32_t mode); 21 | int32_t mz_stream_zlib_is_open(void *stream); 22 | int32_t mz_stream_zlib_read(void *stream, void *buf, int32_t size); 23 | int32_t mz_stream_zlib_write(void *stream, const void *buf, int32_t size); 24 | int64_t mz_stream_zlib_tell(void *stream); 25 | int32_t mz_stream_zlib_seek(void *stream, int64_t offset, int32_t origin); 26 | int32_t mz_stream_zlib_close(void *stream); 27 | int32_t mz_stream_zlib_error(void *stream); 28 | 29 | int32_t mz_stream_zlib_get_prop_int64(void *stream, int32_t prop, int64_t *value); 30 | int32_t mz_stream_zlib_set_prop_int64(void *stream, int32_t prop, int64_t value); 31 | 32 | void* mz_stream_zlib_create(void **stream); 33 | void mz_stream_zlib_delete(void **stream); 34 | 35 | void* mz_stream_zlib_get_interface(void); 36 | 37 | /***************************************************************************/ 38 | 39 | #ifdef __cplusplus 40 | } 41 | #endif 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /3rdParty/zlib/gzclose.c: -------------------------------------------------------------------------------- 1 | /* gzclose.c -- zlib gzclose() function 2 | * Copyright (C) 2004, 2010 Mark Adler 3 | * For conditions of distribution and use, see copyright notice in zlib.h 4 | */ 5 | 6 | #include "gzguts.h" 7 | 8 | /* gzclose() is in a separate file so that it is linked in only if it is used. 9 | That way the other gzclose functions can be used instead to avoid linking in 10 | unneeded compression or decompression routines. */ 11 | int ZEXPORT gzclose(file) 12 | gzFile file; 13 | { 14 | #ifndef NO_GZCOMPRESS 15 | gz_statep state; 16 | 17 | if (file == NULL) 18 | return Z_STREAM_ERROR; 19 | state = (gz_statep)file; 20 | 21 | return state->mode == GZ_READ ? gzclose_r(file) : gzclose_w(file); 22 | #else 23 | return gzclose_r(file); 24 | #endif 25 | } 26 | -------------------------------------------------------------------------------- /3rdParty/zlib/inffast.h: -------------------------------------------------------------------------------- 1 | /* inffast.h -- header to use inffast.c 2 | * Copyright (C) 1995-2003, 2010 Mark Adler 3 | * For conditions of distribution and use, see copyright notice in zlib.h 4 | */ 5 | 6 | /* WARNING: this file should *not* be used by applications. It is 7 | part of the implementation of the compression library and is 8 | subject to change. Applications should only use zlib.h. 9 | */ 10 | 11 | void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start)); 12 | -------------------------------------------------------------------------------- /3rdParty/zlib/zlib.pri: -------------------------------------------------------------------------------- 1 | 2 | HEADERS += \ 3 | $$PWD/crc32.h \ 4 | $$PWD/deflate.h \ 5 | $$PWD/gzguts.h \ 6 | $$PWD/inffast.h \ 7 | $$PWD/inffixed.h \ 8 | $$PWD/inflate.h \ 9 | $$PWD/inftrees.h \ 10 | $$PWD/trees.h \ 11 | $$PWD/zconf.h \ 12 | $$PWD/zlib.h \ 13 | $$PWD/zutil.h 14 | 15 | SOURCES += \ 16 | $$PWD/adler32.c \ 17 | $$PWD/compress.c \ 18 | $$PWD/crc32.c \ 19 | $$PWD/deflate.c \ 20 | $$PWD/gzclose.c \ 21 | $$PWD/gzlib.c \ 22 | $$PWD/gzread.c \ 23 | $$PWD/gzwrite.c \ 24 | $$PWD/infback.c \ 25 | $$PWD/inffast.c \ 26 | $$PWD/inflate.c \ 27 | $$PWD/inftrees.c \ 28 | $$PWD/trees.c \ 29 | $$PWD/uncompr.c \ 30 | $$PWD/zutil.c 31 | 32 | INCLUDEPATH += $$PWD 33 | 34 | DEFINES += _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE 35 | 36 | -------------------------------------------------------------------------------- /data/doc/developer-manual-src/bibliography.bib: -------------------------------------------------------------------------------- 1 | % This file was created with JabRef 2.8. 2 | % Encoding: UTF-8 3 | 4 | @BOOK{cppcodingstandardsbook, 5 | author = {Andrei Alexandrescu and Herb Sutter}, 6 | title = {C++ Coding Standards: 101 Rules, Guidelines, and Best Practices}, 7 | year = {2004}, 8 | date = {25/10/2004}, 9 | isbn = {978-0321113580}, 10 | owner = {mpreisle}, 11 | timestamp = {2012.07.26} 12 | } 13 | 14 | @UNPUBLISHED{imagesetformat, 15 | author = {{CEGUI development team}}, 16 | title = {Imageset XML format specification}, 17 | note = {\url{http://www.cegui.org.uk/docs/current/xml_imageset.html}}, 18 | owner = {mpreisle}, 19 | timestamp = {2012.07.08} 20 | } 21 | 22 | @BOOK{designpatternscppqt4book, 23 | author = {Alan Ezust}, 24 | title = {An Introduction to Design Patterns in C++ with Qt 4}, 25 | year = {2006}, 26 | date = {10/9/2006}, 27 | isbn = {978-8131713266}, 28 | owner = {mpreisle}, 29 | timestamp = {2012.07.26} 30 | } 31 | 32 | @UNPUBLISHED{cxfreezedoc, 33 | author = {Anthony Tuininga}, 34 | title = {{cxFreeze} documentation}, 35 | note = {\url{http://cx_freeze.readthedocs.org/en/latest/index.html}}, 36 | owner = {mpreisle}, 37 | timestamp = {2012.07.08} 38 | } 39 | 40 | @comment{jabref-meta: selector_review:} 41 | 42 | @comment{jabref-meta: selector_publisher:} 43 | 44 | @comment{jabref-meta: selector_author:} 45 | 46 | @comment{jabref-meta: selector_journal:} 47 | 48 | @comment{jabref-meta: selector_keywords:} 49 | 50 | -------------------------------------------------------------------------------- /data/doc/developer-manual-src/tabbed_editor/responsibilities.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/developer-manual-src/tabbed_editor/responsibilities.png -------------------------------------------------------------------------------- /data/doc/developer-manual-src/undo_redo/undo_stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/developer-manual-src/undo_redo/undo_stack.png -------------------------------------------------------------------------------- /data/doc/developer-manual.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/developer-manual.pdf -------------------------------------------------------------------------------- /data/doc/quickstart-guide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/quickstart-guide.pdf -------------------------------------------------------------------------------- /data/doc/user-manual-src/basics/main_interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/basics/main_interface.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/basics/multi_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/basics/multi_mode.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/basics/multi_tab_context_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/basics/multi_tab_context_menu.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/basics/multi_tab_reordering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/basics/multi_tab_reordering.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/basics/project_manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/basics/project_manager.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/basics/resizable_rect_right_edge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/basics/resizable_rect_right_edge.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/basics/resizable_rect_top_right_corner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/basics/resizable_rect_top_right_corner.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/imageset_editing/context_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/imageset_editing/context_menu.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/imageset_editing/image_property_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/imageset_editing/image_property_box.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/imageset_editing/overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/imageset_editing/overview.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/layout_editing/alignment_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/layout_editing/alignment_icons.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/layout_editing/alignment_properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/layout_editing/alignment_properties.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/layout_editing/aspect_ratio_expanded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/layout_editing/aspect_ratio_expanded.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/layout_editing/aspect_ratio_properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/layout_editing/aspect_ratio_properties.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/layout_editing/aspect_ratio_shrunk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/layout_editing/aspect_ratio_shrunk.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/layout_editing/button_udims.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/layout_editing/button_udims.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/layout_editing/complex_properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/layout_editing/complex_properties.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/layout_editing/editbox_centred.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/layout_editing/editbox_centred.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/layout_editing/live_preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/layout_editing/live_preview.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/layout_editing/overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/layout_editing/overview.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/layout_editing/snapgrid_aligned.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/layout_editing/snapgrid_aligned.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/layout_editing/snapgrid_in_progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/layout_editing/snapgrid_in_progress.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/layout_editing/snapgrid_unaligned.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/layout_editing/snapgrid_unaligned.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/project_creation/first_step.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/project_creation/first_step.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/project_creation/settings_resource_paths.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/project_creation/settings_resource_paths.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/project_creation/settings_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/project_creation/settings_top.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/settings/changing_key_seq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/settings/changing_key_seq.png -------------------------------------------------------------------------------- /data/doc/user-manual-src/settings/overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual-src/settings/overview.png -------------------------------------------------------------------------------- /data/doc/user-manual.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/doc/user-manual.pdf -------------------------------------------------------------------------------- /data/fonts/DejaVuSans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/fonts/DejaVuSans.ttf -------------------------------------------------------------------------------- /data/icons/LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/LICENSE -------------------------------------------------------------------------------- /data/icons/actions/application_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/application_settings.png -------------------------------------------------------------------------------- /data/icons/actions/close_all_tabs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/close_all_tabs.png -------------------------------------------------------------------------------- /data/icons/actions/close_other_tabs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/close_other_tabs.png -------------------------------------------------------------------------------- /data/icons/actions/close_project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/close_project.png -------------------------------------------------------------------------------- /data/icons/actions/close_tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/close_tab.png -------------------------------------------------------------------------------- /data/icons/actions/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/copy.png -------------------------------------------------------------------------------- /data/icons/actions/cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/cut.png -------------------------------------------------------------------------------- /data/icons/actions/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/delete.png -------------------------------------------------------------------------------- /data/icons/actions/filesystem_active_file_directory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/filesystem_active_file_directory.png -------------------------------------------------------------------------------- /data/icons/actions/filesystem_home_directory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/filesystem_home_directory.png -------------------------------------------------------------------------------- /data/icons/actions/filesystem_parent_directory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/filesystem_parent_directory.png -------------------------------------------------------------------------------- /data/icons/actions/filesystem_project_directory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/filesystem_project_directory.png -------------------------------------------------------------------------------- /data/icons/actions/help_about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/help_about.png -------------------------------------------------------------------------------- /data/icons/actions/help_feedback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/help_feedback.png -------------------------------------------------------------------------------- /data/icons/actions/help_quickstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/help_quickstart.png -------------------------------------------------------------------------------- /data/icons/actions/help_user_manual.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/help_user_manual.png -------------------------------------------------------------------------------- /data/icons/actions/help_wiki_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/help_wiki_page.png -------------------------------------------------------------------------------- /data/icons/actions/new_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/new_file.png -------------------------------------------------------------------------------- /data/icons/actions/new_project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/new_project.png -------------------------------------------------------------------------------- /data/icons/actions/open_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/open_file.png -------------------------------------------------------------------------------- /data/icons/actions/open_project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/open_project.png -------------------------------------------------------------------------------- /data/icons/actions/paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/paste.png -------------------------------------------------------------------------------- /data/icons/actions/project_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/project_settings.png -------------------------------------------------------------------------------- /data/icons/actions/quit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/quit.png -------------------------------------------------------------------------------- /data/icons/actions/recent_projects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/recent_projects.png -------------------------------------------------------------------------------- /data/icons/actions/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/redo.png -------------------------------------------------------------------------------- /data/icons/actions/save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/save.png -------------------------------------------------------------------------------- /data/icons/actions/save_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/save_all.png -------------------------------------------------------------------------------- /data/icons/actions/save_as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/save_as.png -------------------------------------------------------------------------------- /data/icons/actions/save_project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/save_project.png -------------------------------------------------------------------------------- /data/icons/actions/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/screenshot.png -------------------------------------------------------------------------------- /data/icons/actions/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/undo.png -------------------------------------------------------------------------------- /data/icons/actions/view_fullscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/view_fullscreen.png -------------------------------------------------------------------------------- /data/icons/actions/zoom_in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/zoom_in.png -------------------------------------------------------------------------------- /data/icons/actions/zoom_original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/zoom_original.png -------------------------------------------------------------------------------- /data/icons/actions/zoom_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/actions/zoom_out.png -------------------------------------------------------------------------------- /data/icons/anchors/Anchors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/anchors/Anchors.png -------------------------------------------------------------------------------- /data/icons/anchors/ParentBottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/anchors/ParentBottom.png -------------------------------------------------------------------------------- /data/icons/anchors/ParentHCenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/anchors/ParentHCenter.png -------------------------------------------------------------------------------- /data/icons/anchors/ParentHStretch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/anchors/ParentHStretch.png -------------------------------------------------------------------------------- /data/icons/anchors/ParentLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/anchors/ParentLeft.png -------------------------------------------------------------------------------- /data/icons/anchors/ParentRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/anchors/ParentRight.png -------------------------------------------------------------------------------- /data/icons/anchors/ParentTop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/anchors/ParentTop.png -------------------------------------------------------------------------------- /data/icons/anchors/ParentVCenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/anchors/ParentVCenter.png -------------------------------------------------------------------------------- /data/icons/anchors/ParentVStretch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/anchors/ParentVStretch.png -------------------------------------------------------------------------------- /data/icons/anchors/SelfBottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/anchors/SelfBottom.png -------------------------------------------------------------------------------- /data/icons/anchors/SelfHCenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/anchors/SelfHCenter.png -------------------------------------------------------------------------------- /data/icons/anchors/SelfHStretch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/anchors/SelfHStretch.png -------------------------------------------------------------------------------- /data/icons/anchors/SelfLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/anchors/SelfLeft.png -------------------------------------------------------------------------------- /data/icons/anchors/SelfRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/anchors/SelfRight.png -------------------------------------------------------------------------------- /data/icons/anchors/SelfTop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/anchors/SelfTop.png -------------------------------------------------------------------------------- /data/icons/anchors/SelfVCenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/anchors/SelfVCenter.png -------------------------------------------------------------------------------- /data/icons/anchors/SelfVStretch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/anchors/SelfVStretch.png -------------------------------------------------------------------------------- /data/icons/animation_editing/timeline_loop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/animation_editing/timeline_loop.png -------------------------------------------------------------------------------- /data/icons/animation_editing/timeline_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/animation_editing/timeline_pause.png -------------------------------------------------------------------------------- /data/icons/animation_editing/timeline_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/animation_editing/timeline_play.png -------------------------------------------------------------------------------- /data/icons/animation_editing/timeline_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/animation_editing/timeline_stop.png -------------------------------------------------------------------------------- /data/icons/ceed.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/ceed.ico -------------------------------------------------------------------------------- /data/icons/ceed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/ceed.png -------------------------------------------------------------------------------- /data/icons/cegui/debug_info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/cegui/debug_info.png -------------------------------------------------------------------------------- /data/icons/clean_undo_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/clean_undo_state.png -------------------------------------------------------------------------------- /data/icons/imageset_editing/create_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/imageset_editing/create_image.png -------------------------------------------------------------------------------- /data/icons/imageset_editing/cycle_overlapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/imageset_editing/cycle_overlapping.png -------------------------------------------------------------------------------- /data/icons/imageset_editing/duplicate_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/imageset_editing/duplicate_image.png -------------------------------------------------------------------------------- /data/icons/imageset_editing/edit_offsets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/imageset_editing/edit_offsets.png -------------------------------------------------------------------------------- /data/icons/imageset_editing/filter_reset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/imageset_editing/filter_reset.png -------------------------------------------------------------------------------- /data/icons/imageset_editing/focus_image_list_filter_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/imageset_editing/focus_image_list_filter_box.png -------------------------------------------------------------------------------- /data/icons/imageset_editing/offset_crosshair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/imageset_editing/offset_crosshair.png -------------------------------------------------------------------------------- /data/icons/layout_editing/SelectParent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/SelectParent.png -------------------------------------------------------------------------------- /data/icons/layout_editing/abs_integers_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/abs_integers_mode.png -------------------------------------------------------------------------------- /data/icons/layout_editing/absolute_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/absolute_mode.png -------------------------------------------------------------------------------- /data/icons/layout_editing/align_hcentre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/align_hcentre.png -------------------------------------------------------------------------------- /data/icons/layout_editing/align_hleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/align_hleft.png -------------------------------------------------------------------------------- /data/icons/layout_editing/align_hright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/align_hright.png -------------------------------------------------------------------------------- /data/icons/layout_editing/align_vbottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/align_vbottom.png -------------------------------------------------------------------------------- /data/icons/layout_editing/align_vcentre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/align_vcentre.png -------------------------------------------------------------------------------- /data/icons/layout_editing/align_vtop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/align_vtop.png -------------------------------------------------------------------------------- /data/icons/layout_editing/focus_property_inspector_filter_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/focus_property_inspector_filter_box.png -------------------------------------------------------------------------------- /data/icons/layout_editing/lock_widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/lock_widget.png -------------------------------------------------------------------------------- /data/icons/layout_editing/lock_widget_recursively.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/lock_widget_recursively.png -------------------------------------------------------------------------------- /data/icons/layout_editing/manipulator_locked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/manipulator_locked.png -------------------------------------------------------------------------------- /data/icons/layout_editing/manipulator_unlocked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/manipulator_unlocked.png -------------------------------------------------------------------------------- /data/icons/layout_editing/move_backward_in_parent_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/move_backward_in_parent_list.png -------------------------------------------------------------------------------- /data/icons/layout_editing/move_forward_in_parent_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/move_forward_in_parent_list.png -------------------------------------------------------------------------------- /data/icons/layout_editing/normalise_position.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/normalise_position.png -------------------------------------------------------------------------------- /data/icons/layout_editing/normalise_size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/normalise_size.png -------------------------------------------------------------------------------- /data/icons/layout_editing/rename.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/rename.png -------------------------------------------------------------------------------- /data/icons/layout_editing/round_position.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/round_position.png -------------------------------------------------------------------------------- /data/icons/layout_editing/round_size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/round_size.png -------------------------------------------------------------------------------- /data/icons/layout_editing/snap_grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/snap_grid.png -------------------------------------------------------------------------------- /data/icons/layout_editing/unlock_widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/unlock_widget.png -------------------------------------------------------------------------------- /data/icons/layout_editing/unlock_widget_recursively.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/layout_editing/unlock_widget_recursively.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/absolute_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/absolute_mode.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/align_hcentre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/align_hcentre.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/align_hleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/align_hleft.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/align_hright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/align_hright.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/align_vbottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/align_vbottom.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/align_vcentre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/align_vcentre.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/align_vtop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/align_vtop.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/focus_property_inspector_filter_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/focus_property_inspector_filter_box.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/lock_widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/lock_widget.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/lock_widget_recursively.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/lock_widget_recursively.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/manipulator_locked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/manipulator_locked.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/manipulator_unlocked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/manipulator_unlocked.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/normalise_position.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/normalise_position.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/normalise_size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/normalise_size.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/rename.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/rename.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/snap_grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/snap_grid.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/unlock_widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/unlock_widget.png -------------------------------------------------------------------------------- /data/icons/looknfeel_editing/unlock_widget_recursively.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/looknfeel_editing/unlock_widget_recursively.png -------------------------------------------------------------------------------- /data/icons/project_items/animation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_items/animation.png -------------------------------------------------------------------------------- /data/icons/project_items/bitmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_items/bitmap.png -------------------------------------------------------------------------------- /data/icons/project_items/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_items/folder.png -------------------------------------------------------------------------------- /data/icons/project_items/font.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_items/font.png -------------------------------------------------------------------------------- /data/icons/project_items/imageset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_items/imageset.png -------------------------------------------------------------------------------- /data/icons/project_items/layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_items/layout.png -------------------------------------------------------------------------------- /data/icons/project_items/looknfeel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_items/looknfeel.png -------------------------------------------------------------------------------- /data/icons/project_items/lua_script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_items/lua_script.png -------------------------------------------------------------------------------- /data/icons/project_items/python_script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_items/python_script.png -------------------------------------------------------------------------------- /data/icons/project_items/scheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_items/scheme.png -------------------------------------------------------------------------------- /data/icons/project_items/text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_items/text.png -------------------------------------------------------------------------------- /data/icons/project_items/unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_items/unknown.png -------------------------------------------------------------------------------- /data/icons/project_items/xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_items/xml.png -------------------------------------------------------------------------------- /data/icons/project_management/add_existing_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_management/add_existing_file.png -------------------------------------------------------------------------------- /data/icons/project_management/add_new_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_management/add_new_file.png -------------------------------------------------------------------------------- /data/icons/project_management/create_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_management/create_folder.png -------------------------------------------------------------------------------- /data/icons/project_management/reload_resources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_management/reload_resources.png -------------------------------------------------------------------------------- /data/icons/project_management/remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_management/remove.png -------------------------------------------------------------------------------- /data/icons/project_management/rename.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/project_management/rename.png -------------------------------------------------------------------------------- /data/icons/property_inspecting/filter_reset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/property_inspecting/filter_reset.png -------------------------------------------------------------------------------- /data/icons/settings/reset_entry_to_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/settings/reset_entry_to_default.png -------------------------------------------------------------------------------- /data/icons/tabs/has_changes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/tabs/has_changes.png -------------------------------------------------------------------------------- /data/icons/unhandled_exception.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/unhandled_exception.png -------------------------------------------------------------------------------- /data/icons/widgets/GLC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/widgets/GLC.png -------------------------------------------------------------------------------- /data/icons/widgets/GLCt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/widgets/GLCt.png -------------------------------------------------------------------------------- /data/icons/widgets/HLC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/widgets/HLC.png -------------------------------------------------------------------------------- /data/icons/widgets/VLC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/widgets/VLC.png -------------------------------------------------------------------------------- /data/icons/widgets/edit-clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/icons/widgets/edit-clear.png -------------------------------------------------------------------------------- /data/images/BrushScriptStd.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/images/BrushScriptStd.otf -------------------------------------------------------------------------------- /data/images/splashscreen.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/images/splashscreen.bmp -------------------------------------------------------------------------------- /data/images/splashscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cegui/ceed-cpp/26e1a69338ae45ed303ba056a33c198ae8949420/data/images/splashscreen.png -------------------------------------------------------------------------------- /data/misc/update.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set AppFileSlashesEsc=%~1 4 | set InstallPath=%~2 5 | set UpdatePath=%~3 6 | set "PrevVersionBackupPath=%InstallPath%_old" 7 | 8 | :: Wait for all processes running from this .exe to finish 9 | :loop 10 | wmic process get ExecutablePath | findstr /i "%AppFileSlashesEsc%" >nul 11 | if %errorlevel% neq 1 ( 12 | timeout /t 2 >nul 13 | goto :loop 14 | ) 15 | 16 | :: Rename an application directory into a temporary folder with the previous version backup 17 | move /y "%InstallPath%" "%PrevVersionBackupPath%" 18 | if %errorlevel% neq 0 ( 19 | set "ResultCode=10" 20 | set "ResultMsg=Failed to rename an installation directory to create a previous version backup" 21 | goto :run 22 | ) 23 | 24 | :: Move the new version to the application directory 25 | mkdir "%InstallPath%" 26 | (robocopy "%UpdatePath%" "%InstallPath%" *.* /r:5 /w:2 /e /move >nul) & if %errorlevel% lss 8 set errorlevel=0 27 | if %errorlevel% neq 0 ( 28 | :: Restore backup 29 | rmdir /S /Q "%InstallPath%" 30 | move /y "%PrevVersionBackupPath%" "%InstallPath%" 31 | set "ResultCode=20" 32 | set "ResultMsg=Failed to move an update to the installation directory" 33 | goto :run 34 | ) 35 | 36 | :: Remove a temporary folder with the previous version backup 37 | rmdir /S /Q "%PrevVersionBackupPath%" | rem 38 | if %errorlevel% neq 0 ( 39 | set "ResultCode=30" 40 | set "ResultMsg=Updated successfully but failed to remove temporary folder %PrevVersionBackupPath%" 41 | goto :run 42 | ) 43 | 44 | set "ResultCode=0" 45 | set "ResultMsg=Updated successfully" 46 | 47 | :run 48 | 49 | :: First "" is an empty title for a new command prompt 50 | start "" "%InstallPath%\ceed.exe" -updateResult %ResultCode% -updateMessage "%ResultMsg%" 51 | 52 | -------------------------------------------------------------------------------- /reference/README.md: -------------------------------------------------------------------------------- 1 | This is a copy of original CEED with ported parts removed. 2 | It is convenient to have one near during porting. Then anyone will know what is done and what is not yet. 3 | This folder will be removed completely when porting is done. -------------------------------------------------------------------------------- /reference/tests/__init__.py: -------------------------------------------------------------------------------- 1 | ############################################################################## 2 | # CEED - Unified CEGUI asset editor 3 | # 4 | # Copyright (C) 2011-2012 Martin Preisler 5 | # and contributing authors (see AUTHORS file) 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU General Public License as published by 9 | # the Free Software Foundation, either version 3 of the License, or 10 | # (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | ############################################################################## 20 | 21 | # package stub file 22 | -------------------------------------------------------------------------------- /reference/tests/compatibility/__init__.py: -------------------------------------------------------------------------------- 1 | ############################################################################## 2 | # CEED - Unified CEGUI asset editor 3 | # 4 | # Copyright (C) 2011-2012 Martin Preisler 5 | # and contributing authors (see AUTHORS file) 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU General Public License as published by 9 | # the Free Software Foundation, either version 3 of the License, or 10 | # (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | ############################################################################## 20 | 21 | # package stub file 22 | -------------------------------------------------------------------------------- /reference/ui/editors/animation_list/AnimationListDockWidget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | AnimationListDockWidget 4 | 5 | 6 | true 7 | 8 | 9 | 10 | 0 11 | 0 12 | 290 13 | 300 14 | 15 | 16 | 17 | List of animations 18 | 19 | 20 | 21 | 22 | 0 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /reference/ui/editors/animation_list/VisualEditing.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | VisualEditing 4 | 5 | 6 | 7 | 0 8 | 0 9 | 400 10 | 300 11 | 12 | 13 | 14 | Form 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Preview widget 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 0 38 | 0 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /reference/ui/editors/looknfeel/LookNFeelPropertyEditorDockWidget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | LookNFeelPropertyEditorDockWidget 4 | 5 | 6 | false 7 | 8 | 9 | 10 | 0 11 | 0 12 | 550 13 | 773 14 | 15 | 16 | 17 | 18 | 336 19 | 112 20 | 21 | 22 | 23 | WidgetLook Property Editor 24 | 25 | 26 | 27 | 28 | 0 29 | 0 30 | 31 | 32 | 33 | 34 | 336 35 | 70 36 | 37 | 38 | 39 | 40 | 0 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /src/Application.h: -------------------------------------------------------------------------------- 1 | #ifndef APPLICATION_H 2 | #define APPLICATION_H 3 | 4 | #include 5 | #include "ui/MainWindow.h" 6 | #include 7 | 8 | // The central application class 9 | 10 | class Settings; 11 | class SettingsSection; 12 | class QNetworkAccessManager; 13 | class QCommandLineParser; 14 | 15 | class Application : public QApplication 16 | { 17 | Q_OBJECT 18 | 19 | public: 20 | 21 | Application(int& argc, char** argv); 22 | virtual ~Application() override; 23 | 24 | MainWindow* getMainWindow() { return _mainWindow; } 25 | Settings* getSettings() const { return _settings; } 26 | QNetworkAccessManager* getNetworkManager() const { return _network; } 27 | 28 | SettingsSection* getOrCreateShortcutSettingsSection(const QString& groupId, const QString& label); 29 | QAction* registerAction(const QString& groupId, const QString& id, const QString& label, 30 | const QString& help, QIcon icon = QIcon(), QKeySequence defaultShortcut = QKeySequence(), bool checkable = false); 31 | QAction* getAction(const QString& fullId) const; 32 | void setActionsEnabled(const QString& groupId, bool enabled); 33 | 34 | QString getDocumentationPath() const; 35 | QString getUpdatePath() const; 36 | 37 | void checkForUpdates(bool manual, const std::function& cb = nullptr); 38 | 39 | private: 40 | 41 | void createSettingsEntries(); 42 | void onUpdateError(const QUrl& url, const QString& errorString); 43 | void checkUpdateResults(); 44 | 45 | QCommandLineParser* _cmdLine = nullptr; 46 | MainWindow* _mainWindow = nullptr; 47 | Settings* _settings = nullptr; 48 | QNetworkAccessManager* _network = nullptr; 49 | std::map _globalActions; 50 | }; 51 | 52 | #endif // APPLICATION_H 53 | -------------------------------------------------------------------------------- /src/QtStdHash.h: -------------------------------------------------------------------------------- 1 | #ifndef QTSTDHASH_H 2 | #define QTSTDHASH_H 3 | 4 | #include "qstring.h" 5 | #include "qhash.h" 6 | 7 | #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) 8 | namespace std 9 | { 10 | template<> struct hash 11 | { 12 | std::size_t operator()(const QString& s) const 13 | { 14 | return qHash(s); 15 | } 16 | }; 17 | } 18 | #endif 19 | 20 | #endif // QTSTDHASH_H 21 | -------------------------------------------------------------------------------- /src/cegui/CEGUIProjectItem.h: -------------------------------------------------------------------------------- 1 | #ifndef CEGUIPROJECTITEM_H 2 | #define CEGUIPROJECTITEM_H 3 | 4 | #include "qstandarditemmodel.h" 5 | #include "qdom.h" 6 | 7 | // One item in the project. This is usually a file or a folder. 8 | 9 | class CEGUIProject; 10 | 11 | class CEGUIProjectItem : public QStandardItem 12 | { 13 | public: 14 | 15 | enum class Type 16 | { 17 | Unknown, 18 | 19 | // A file is an item that can't have any children, it is directly opened instead of 20 | // being expanded/collapsed like folders 21 | File, 22 | 23 | // Folder is a group of files. Project folders don't necessarily have to have 24 | // a counterpart on the HDD, they could be virtual. 25 | Folder 26 | }; 27 | 28 | static Type getItemType(const QModelIndex& index); 29 | static bool isFile(const QModelIndex& index); 30 | static bool isFolder(const QModelIndex& index); 31 | 32 | CEGUIProjectItem(CEGUIProject* project); 33 | virtual ~CEGUIProjectItem() override; 34 | 35 | // Qt docs say we have to overload type() and return something > QStandardItem.UserType 36 | virtual int type() const { return QStandardItem::UserType + 1; } 37 | virtual QStandardItem* clone() const; 38 | 39 | void loadFromElement(const QDomElement& xml); 40 | bool saveToElement(QDomElement& xml); 41 | 42 | void setType(Type type); 43 | Type getType() const; 44 | void setPath(const QString& path); 45 | QString getPath() const; 46 | QString getRelativePath() const; 47 | QString getAbsolutePath() const; 48 | bool referencesFilePath(const QString& filePath) const; 49 | 50 | protected: 51 | 52 | CEGUIProject* _project = nullptr; 53 | }; 54 | 55 | #endif // CEGUIPROJECTITEM_H 56 | -------------------------------------------------------------------------------- /src/editors/BitmapEditor.cpp: -------------------------------------------------------------------------------- 1 | #include "src/editors/BitmapEditor.h" 2 | #include 3 | 4 | BitmapEditor::BitmapEditor(const QString& filePath) 5 | : EditorBase(/*nullptr,*/ filePath) 6 | { 7 | } 8 | 9 | void BitmapEditor::initialize() 10 | { 11 | EditorBase::initialize(); 12 | widget.openFile(_filePath); 13 | } 14 | 15 | QString BitmapEditor::getFileTypesDescription() const 16 | { 17 | return BitmapEditorFactory::bitmapFileTypesDescription(); 18 | } 19 | 20 | QStringList BitmapEditor::getFileExtensions() const 21 | { 22 | return BitmapEditorFactory::bitmapFileExtensions(); 23 | } 24 | 25 | QString BitmapEditor::getDefaultFolder(CEGUIProject* /*project*/) const 26 | { 27 | return ""; 28 | } 29 | 30 | //--------------------------------------------------------------------- 31 | 32 | QString BitmapEditorFactory::bitmapFileTypesDescription() 33 | { 34 | return "Bitmap"; 35 | } 36 | 37 | QStringList BitmapEditorFactory::bitmapFileExtensions() 38 | { 39 | return { "png", "jpg", "jpeg", "tga", "dds" }; 40 | } 41 | 42 | EditorBasePtr BitmapEditorFactory::create(const QString& filePath) const 43 | { 44 | return std::make_unique(filePath); 45 | } 46 | -------------------------------------------------------------------------------- /src/editors/BitmapEditor.h: -------------------------------------------------------------------------------- 1 | #ifndef BITMAPEDITOR_H 2 | #define BITMAPEDITOR_H 3 | 4 | #include "src/editors/EditorBase.h" 5 | #include "src/ui/widgets/BitmapEditorWidget.h" 6 | 7 | // A simple external bitmap editor starter/image viewer 8 | 9 | class BitmapEditor : public EditorBase 10 | { 11 | public: 12 | 13 | BitmapEditor(const QString& filePath); 14 | 15 | virtual void initialize() override; 16 | 17 | virtual QWidget* getWidget() override { return &widget; } 18 | 19 | protected: 20 | 21 | virtual QString getFileTypesDescription() const override; 22 | virtual QStringList getFileExtensions() const override; 23 | virtual QString getDefaultFolder(CEGUIProject* project) const override; 24 | 25 | BitmapEditorWidget widget; 26 | }; 27 | 28 | class BitmapEditorFactory : public EditorFactoryBase 29 | { 30 | public: 31 | 32 | static QString bitmapFileTypesDescription(); 33 | static QStringList bitmapFileExtensions(); 34 | 35 | virtual QString getFileTypesDescription() const override { return bitmapFileTypesDescription(); } 36 | virtual QStringList getFileExtensions() const override { return bitmapFileExtensions(); } 37 | virtual EditorBasePtr create(const QString& filePath) const override; 38 | }; 39 | 40 | #endif // BITMAPEDITOR_H 41 | -------------------------------------------------------------------------------- /src/editors/NoEditor.cpp: -------------------------------------------------------------------------------- 1 | #include "src/editors/NoEditor.h" 2 | #include "qlabel.h" 3 | 4 | NoEditor::NoEditor(const QString& filePath, const QString& message) 5 | : EditorBase(/*nullptr,*/ filePath) 6 | { 7 | auto label = new QLabel(message); 8 | label->setWordWrap(true); 9 | widget = new QScrollArea(); 10 | widget->setWidget(label); 11 | } 12 | 13 | NoEditor::~NoEditor() 14 | { 15 | delete widget; 16 | } 17 | -------------------------------------------------------------------------------- /src/editors/NoEditor.h: -------------------------------------------------------------------------------- 1 | #ifndef NOEDITOR_H 2 | #define NOEDITOR_H 3 | 4 | #include "src/editors/EditorBase.h" 5 | #include "qscrollarea.h" 6 | 7 | // This is basically a stub editor, it simply displays a message 8 | // and doesn't allow any sort of editing at all, all functionality is stubbed. 9 | // This is for internal use only so there is no factory for this particular editor 10 | 11 | class NoEditor final : public EditorBase 12 | { 13 | public: 14 | 15 | NoEditor(const QString& filePath, const QString& message); 16 | virtual ~NoEditor() override; 17 | 18 | virtual QWidget* getWidget() override { return widget; } 19 | 20 | private: 21 | 22 | virtual QString getFileTypesDescription() const override { return QString(); } 23 | virtual QStringList getFileExtensions() const override { return QStringList(); } 24 | virtual QString getDefaultFolder(CEGUIProject* /*project*/) const override { return QString(); } 25 | 26 | QScrollArea* widget = nullptr; 27 | }; 28 | 29 | #endif // NOEDITOR_H 30 | -------------------------------------------------------------------------------- /src/editors/anim/AnimationCodeMode.cpp: -------------------------------------------------------------------------------- 1 | #include "src/editors/anim/AnimationCodeMode.h" 2 | 3 | AnimationCodeMode::AnimationCodeMode() 4 | { 5 | 6 | } 7 | 8 | /* 9 | 10 | class CodeEditing(multi.CodeEditMode): 11 | def __init__(self, tabbedEditor): 12 | super(CodeEditing, self).__init__() 13 | 14 | self.tabbedEditor = tabbedEditor 15 | 16 | def getNativeCode(self): 17 | return self.tabbedEditor.visual.generateNativeData() 18 | 19 | def propagateNativeCode(self, code): 20 | element = None 21 | 22 | try: 23 | element = ElementTree.fromstring(code) 24 | 25 | except: 26 | return False 27 | 28 | else: 29 | self.tabbedEditor.visual.loadFromElement(element) 30 | return True 31 | */ 32 | -------------------------------------------------------------------------------- /src/editors/anim/AnimationCodeMode.h: -------------------------------------------------------------------------------- 1 | #ifndef ANIMATIONCODEMODE_H 2 | #define ANIMATIONCODEMODE_H 3 | 4 | 5 | class AnimationCodeMode 6 | { 7 | public: 8 | AnimationCodeMode(); 9 | }; 10 | 11 | #endif // ANIMATIONCODEMODE_H 12 | -------------------------------------------------------------------------------- /src/editors/anim/AnimationEditor.h: -------------------------------------------------------------------------------- 1 | #ifndef ANIMATIONEDITOR_H 2 | #define ANIMATIONEDITOR_H 3 | 4 | #include "src/editors/MultiModeEditor.h" 5 | 6 | // Animation list file editor (XML file containing list of animations) 7 | 8 | class AnimationEditor : public MultiModeEditor 9 | { 10 | public: 11 | 12 | AnimationEditor(const QString& filePath); 13 | 14 | virtual QWidget* getWidget() override { return &tabs; } 15 | virtual bool requiresProject() const override { return true; } 16 | 17 | protected: 18 | 19 | virtual QString getFileTypesDescription() const override; 20 | virtual QStringList getFileExtensions() const override; 21 | virtual QString getDefaultFolder(CEGUIProject* project) const override; 22 | }; 23 | 24 | class AnimationEditorFactory : public EditorFactoryBase 25 | { 26 | public: 27 | 28 | static QString animationFileTypesDescription(); 29 | static QStringList animationFileExtensions(); 30 | 31 | virtual QString getFileTypesDescription() const override { return animationFileTypesDescription(); } 32 | virtual QStringList getFileExtensions() const override { return animationFileExtensions(); } 33 | virtual bool requiresProject() const override { return true; } 34 | virtual EditorBasePtr create(const QString& filePath) const override; 35 | }; 36 | 37 | #endif // ANIMATIONEDITOR_H 38 | -------------------------------------------------------------------------------- /src/editors/anim/AnimationUndoCommands.h: -------------------------------------------------------------------------------- 1 | #ifndef ANIMATIONUNDOCOMMANDS_H 2 | #define ANIMATIONUNDOCOMMANDS_H 3 | 4 | 5 | class AnimationUndoCommands 6 | { 7 | public: 8 | AnimationUndoCommands(); 9 | }; 10 | 11 | #endif // ANIMATIONUNDOCOMMANDS_H 12 | -------------------------------------------------------------------------------- /src/editors/anim/AnimationVisualMode.h: -------------------------------------------------------------------------------- 1 | #ifndef ANIMATIONVISUALMODE_H 2 | #define ANIMATIONVISUALMODE_H 3 | 4 | 5 | class AnimationVisualMode 6 | { 7 | public: 8 | AnimationVisualMode(); 9 | }; 10 | 11 | #endif // ANIMATIONVISUALMODE_H 12 | -------------------------------------------------------------------------------- /src/editors/imageset/ImagesetCodeMode.cpp: -------------------------------------------------------------------------------- 1 | #include "src/editors/imageset/ImagesetCodeMode.h" 2 | #include "src/editors/imageset/ImagesetEditor.h" 3 | #include "src/editors/imageset/ImagesetVisualMode.h" 4 | #include "src/ui/XMLSyntaxHighlighter.h" 5 | #include "qdom.h" 6 | 7 | ImagesetCodeMode::ImagesetCodeMode(ImagesetEditor& editor) 8 | : ViewRestoringCodeEditMode(editor) 9 | { 10 | setAcceptRichText(false); 11 | highlighter = new XMLSyntaxHighlighter(this); 12 | } 13 | 14 | QString ImagesetCodeMode::getNativeCode() 15 | { 16 | return static_cast(_editor).getSourceCode(); 17 | } 18 | 19 | bool ImagesetCodeMode::propagateNativeCode(const QString& code) 20 | { 21 | QDomDocument doc; 22 | if (!doc.setContent(code)) return false; 23 | static_cast(_editor).getVisualMode()->loadImagesetEntryFromElement(doc.documentElement()); 24 | return true; 25 | } 26 | -------------------------------------------------------------------------------- /src/editors/imageset/ImagesetCodeMode.h: -------------------------------------------------------------------------------- 1 | #ifndef IMAGESETCODEMODE_H 2 | #define IMAGESETCODEMODE_H 3 | 4 | #include "src/editors/CodeEditMode.h" 5 | 6 | class ImagesetEditor; 7 | class XMLSyntaxHighlighter; 8 | 9 | class ImagesetCodeMode : public ViewRestoringCodeEditMode 10 | { 11 | public: 12 | 13 | ImagesetCodeMode(ImagesetEditor& editor); 14 | 15 | virtual QString getNativeCode() override; 16 | virtual bool propagateNativeCode(const QString& code) override; 17 | 18 | protected: 19 | 20 | XMLSyntaxHighlighter* highlighter = nullptr; 21 | }; 22 | 23 | #endif // IMAGESETCODEMODE_H 24 | -------------------------------------------------------------------------------- /src/editors/layout/LayoutCodeMode.cpp: -------------------------------------------------------------------------------- 1 | #include "LayoutCodeMode.h" 2 | #include "src/editors/layout/LayoutVisualMode.h" 3 | #include "src/editors/layout/LayoutEditor.h" 4 | #include "src/cegui/CEGUIUtils.h" 5 | #include 6 | 7 | LayoutCodeMode::LayoutCodeMode(LayoutEditor& editor) 8 | : ViewRestoringCodeEditMode(editor) 9 | { 10 | } 11 | 12 | QString LayoutCodeMode::getNativeCode() 13 | { 14 | const CEGUI::Window* rootWidget = static_cast(_editor).getVisualMode()->getRootWidget(); 15 | return rootWidget ? CEGUIUtils::stringToQString(CEGUI::WindowManager::getSingleton().getLayoutAsString(*rootWidget)) : ""; 16 | } 17 | 18 | bool LayoutCodeMode::propagateNativeCode(const QString& code) 19 | { 20 | return static_cast(_editor).loadVisualFromString(code); 21 | } 22 | -------------------------------------------------------------------------------- /src/editors/layout/LayoutCodeMode.h: -------------------------------------------------------------------------------- 1 | #ifndef LAYOUTCODEMODE_H 2 | #define LAYOUTCODEMODE_H 3 | 4 | #include "src/editors/CodeEditMode.h" 5 | 6 | class LayoutEditor; 7 | 8 | class LayoutCodeMode : public ViewRestoringCodeEditMode 9 | { 10 | public: 11 | 12 | LayoutCodeMode(LayoutEditor& editor); 13 | 14 | virtual QString getNativeCode() override; 15 | virtual bool propagateNativeCode(const QString& code) override; 16 | }; 17 | 18 | #endif // LAYOUTCODEMODE_H 19 | -------------------------------------------------------------------------------- /src/editors/layout/LayoutPreviewerMode.h: -------------------------------------------------------------------------------- 1 | #ifndef LAYOUTPREVIEWERMODE_H 2 | #define LAYOUTPREVIEWERMODE_H 3 | 4 | #include "src/editors/MultiModeEditor.h" 5 | #include 6 | 7 | // Provides "Live Preview" which is basically interactive CEGUI rendering 8 | // without any other outlines or what not over it 9 | 10 | namespace CEGUI 11 | { 12 | class Window; 13 | } 14 | 15 | class LayoutEditor; 16 | class CEGUIWidget; 17 | 18 | class LayoutPreviewerMode : public QWidget, public IEditMode 19 | { 20 | Q_OBJECT 21 | 22 | public: 23 | 24 | explicit LayoutPreviewerMode(LayoutEditor& editor, QWidget *parent = nullptr); 25 | 26 | virtual void activate(MainWindow& mainWindow, bool editorActivated) override; 27 | virtual bool deactivate(MainWindow& mainWindow, bool editorDeactivated) override; 28 | 29 | protected: 30 | 31 | CEGUIWidget* ceguiWidget = nullptr; 32 | CEGUI::Window* rootWidget = nullptr; 33 | }; 34 | 35 | #endif // LAYOUTPREVIEWERMODE_H 36 | -------------------------------------------------------------------------------- /src/editors/looknfeel/LookNFeelCodeMode.h: -------------------------------------------------------------------------------- 1 | #ifndef LOOKNFEELCODEMODE_H 2 | #define LOOKNFEELCODEMODE_H 3 | 4 | #include "src/editors/CodeEditMode.h" 5 | 6 | class LookNFeelEditor; 7 | 8 | class LookNFeelCodeMode : public CodeEditMode 9 | { 10 | public: 11 | 12 | LookNFeelCodeMode(LookNFeelEditor& editor); 13 | 14 | virtual QString getNativeCode() override; 15 | virtual bool propagateNativeCode(const QString& code) override; 16 | virtual void refreshFromVisual() override; 17 | 18 | void moveToAndSelectWidgetLookFeel(QString widgetLookFeelName); 19 | }; 20 | 21 | #endif // LOOKNFEELCODEMODE_H 22 | -------------------------------------------------------------------------------- /src/editors/looknfeel/LookNFeelPreviewMode.h: -------------------------------------------------------------------------------- 1 | #ifndef LOOKNFEELPREVIEWMODE_H 2 | #define LOOKNFEELPREVIEWMODE_H 3 | 4 | #include "src/editors/MultiModeEditor.h" 5 | #include "qwidget.h" 6 | 7 | //???unify with LayoutPreviewMode? rootWindow as input. 8 | 9 | // Provides "Live Preview" which is basically interactive CEGUI rendering 10 | // without any other outlines or what not over it. 11 | 12 | class LookNFeelEditor; 13 | 14 | class LookNFeelPreviewMode : public QWidget, public IEditMode 15 | { 16 | public: 17 | 18 | LookNFeelPreviewMode(LookNFeelEditor& editor); 19 | }; 20 | 21 | #endif // LOOKNFEELPREVIEWMODE_H 22 | -------------------------------------------------------------------------------- /src/editors/looknfeel/LookNFeelScene.h: -------------------------------------------------------------------------------- 1 | #ifndef LOOKNFEELSCENE_H 2 | #define LOOKNFEELSCENE_H 3 | 4 | 5 | class LookNFeelScene 6 | { 7 | public: 8 | LookNFeelScene(); 9 | }; 10 | 11 | #endif // LOOKNFEELSCENE_H 12 | -------------------------------------------------------------------------------- /src/editors/looknfeel/LookNFeelUndoCommands.h: -------------------------------------------------------------------------------- 1 | #ifndef LOOKNFEELUNDOCOMMANDS_H 2 | #define LOOKNFEELUNDOCOMMANDS_H 3 | 4 | 5 | class LookNFeelUndoCommands 6 | { 7 | public: 8 | LookNFeelUndoCommands(); 9 | }; 10 | 11 | #endif // LOOKNFEELUNDOCOMMANDS_H 12 | -------------------------------------------------------------------------------- /src/editors/looknfeel/LookNFeelVisualMode.h: -------------------------------------------------------------------------------- 1 | #ifndef LOOKNFEELVISUALMODE_H 2 | #define LOOKNFEELVISUALMODE_H 3 | 4 | #include "src/editors/MultiModeEditor.h" 5 | #include "qwidget.h" 6 | 7 | // This is the default visual editing mode for look'n'feel 8 | 9 | class LookNFeelEditor; 10 | 11 | class LookNFeelVisualMode : public QWidget, public IEditMode 12 | { 13 | public: 14 | 15 | LookNFeelVisualMode(LookNFeelEditor& editor); 16 | 17 | void initialize(); 18 | 19 | protected: 20 | 21 | void setupActions(); 22 | }; 23 | 24 | #endif // LOOKNFEELVISUALMODE_H 25 | -------------------------------------------------------------------------------- /src/main.cpp: -------------------------------------------------------------------------------- 1 | #include "src/Application.h" 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | // Request OpenGL for our global share context 7 | QSurfaceFormat format; 8 | format.setSamples(0); 9 | format.setVersion(3, 2); 10 | format.setProfile(QSurfaceFormat::CoreProfile); 11 | QSurfaceFormat::setDefaultFormat(format); 12 | 13 | // Allow rendering to QOpenGLWidget using our explicit context 14 | Application::setAttribute(Qt::AA_ShareOpenGLContexts, true); 15 | 16 | Application a(argc, argv); 17 | return a.exec(); 18 | } 19 | -------------------------------------------------------------------------------- /src/ui/CEGUIDebugInfo.h: -------------------------------------------------------------------------------- 1 | #ifndef CEGUIDEBUGINFO_H 2 | #define CEGUIDEBUGINFO_H 3 | 4 | #include 5 | #include 6 | 7 | // A debugging/info widget about the embedded CEGUI instance 8 | 9 | namespace Ui { 10 | class CEGUIDebugInfo; 11 | } 12 | 13 | class QTextBrowser; 14 | 15 | class CEGUIDebugInfo : public QDialog 16 | { 17 | Q_OBJECT 18 | 19 | public: 20 | explicit CEGUIDebugInfo(QWidget *parent = nullptr); 21 | ~CEGUIDebugInfo(); 22 | 23 | void show(); 24 | void logEvent(const CEGUI::String& message, CEGUI::LoggingLevel level); 25 | 26 | private: 27 | Ui::CEGUIDebugInfo *ui; 28 | QTextBrowser* logView = nullptr; 29 | 30 | QStringList logMessages; 31 | 32 | int errors = 0; 33 | int warnings = 0; 34 | int other = 0; 35 | int messageLimit = 1000; 36 | }; 37 | 38 | #endif // CEGUIDEBUGINFO_H 39 | -------------------------------------------------------------------------------- /src/ui/CEGUIGraphicsScene.h: -------------------------------------------------------------------------------- 1 | #ifndef CEGUIGRAPHICSSCENE_H 2 | #define CEGUIGRAPHICSSCENE_H 3 | 4 | #include "qgraphicsscene.h" 5 | 6 | // A scene that draws CEGUI as it's background. Subclass this to be able to show Qt graphic 7 | // items and widgets on top of the embedded CEGUI widget! Interaction is also supported. 8 | 9 | namespace CEGUI 10 | { 11 | class GUIContext; 12 | } 13 | 14 | class QOpenGLFramebufferObject; 15 | 16 | class CEGUIGraphicsScene : public QGraphicsScene 17 | { 18 | public: 19 | 20 | CEGUIGraphicsScene(QObject* parent = nullptr, float width = 0.f, float height = 0.f); 21 | virtual ~CEGUIGraphicsScene() override; 22 | 23 | virtual void setCEGUIDisplaySize(float width, float height); 24 | void drawCEGUIContextOffscreen(); 25 | QImage getCEGUIScreenshot(); 26 | 27 | qint64 getLastDeltaMSec() const { return lastDelta; } 28 | CEGUI::GUIContext* getCEGUIContext() const { return ceguiContext; } 29 | float getContextWidth() const { return contextWidth; } 30 | float getContextHeight() const { return contextHeight; } 31 | QList topLevelItems() const; 32 | 33 | QOpenGLFramebufferObject* getOffscreenBuffer() const { return _fbo; } 34 | 35 | bool ensureDefaultFontExists(); 36 | 37 | protected: 38 | 39 | virtual void mousePressEvent(QGraphicsSceneMouseEvent* event) override; 40 | 41 | void drawCEGUIContextInternal(); 42 | 43 | CEGUI::GUIContext* ceguiContext = nullptr; 44 | QOpenGLFramebufferObject* _fbo = nullptr; 45 | 46 | qint64 lastDelta = 0; 47 | qint64 timeOfLastRender; 48 | 49 | qreal padding = 30.0; 50 | float contextWidth = 0.f; 51 | float contextHeight = 0.f; 52 | }; 53 | 54 | #endif // CEGUIGRAPHICSSCENE_H 55 | -------------------------------------------------------------------------------- /src/ui/CEGUIGraphicsView.h: -------------------------------------------------------------------------------- 1 | #ifndef CEGUIGRAPHICSVIEW_H 2 | #define CEGUIGRAPHICSVIEW_H 3 | 4 | #include "src/ui/ResizableGraphicsView.h" 5 | 6 | // This is a final class, not suitable for subclassing. This views given scene using 7 | // QOpenGLWidget. It's designed to work with CEGUIGraphicsScene derived classes. 8 | 9 | class QOpenGLTextureBlitter; 10 | 11 | class CEGUIGraphicsView final : public ResizableGraphicsView 12 | { 13 | Q_OBJECT 14 | 15 | public: 16 | 17 | explicit CEGUIGraphicsView(QWidget *parent = nullptr); 18 | virtual ~CEGUIGraphicsView() override; 19 | 20 | void injectInput(bool inject); 21 | void setContinuousRendering(bool on) { continuousRendering = on; } 22 | 23 | virtual void drawBackground(QPainter* painter, const QRectF& rect) override; 24 | 25 | signals: 26 | 27 | void cursorPositionChanged(float x, float y); 28 | 29 | private: 30 | 31 | void updateCheckerboardBrush(); 32 | 33 | virtual void wheelEvent(QWheelEvent *event) override; 34 | virtual void mouseMoveEvent(QMouseEvent* event) override; 35 | virtual void mousePressEvent(QMouseEvent* event) override; 36 | virtual void mouseReleaseEvent(QMouseEvent* event) override; 37 | virtual void keyPressEvent(QKeyEvent* event) override; 38 | virtual void keyReleaseEvent(QKeyEvent* event) override; 39 | 40 | QOpenGLTextureBlitter* blitter = nullptr; 41 | QBrush checkerboardBrush; 42 | 43 | bool _injectInput = false; 44 | 45 | // if true, we render always (possibly capped to some FPS) - suitable for live preview 46 | // if false, we render only when update() is called - suitable for visual editing 47 | bool continuousRendering = true; 48 | }; 49 | 50 | #endif // CEGUIGRAPHICSVIEW_H 51 | -------------------------------------------------------------------------------- /src/ui/CEGUIWidget.h: -------------------------------------------------------------------------------- 1 | #ifndef CEGUIWIDGET_H 2 | #define CEGUIWIDGET_H 3 | 4 | #include 5 | 6 | // CEGUI context container widget with size control UI. 7 | // This widget is what you should use (alongside your GraphicsScene derived class) to put CEGUI 8 | // inside parts of the editor. Provides resolution changes, auto expanding and debug widget. 9 | 10 | namespace Ui { 11 | class CEGUIWidget; 12 | } 13 | 14 | class CEGUIGraphicsScene; 15 | class CEGUIGraphicsView; 16 | 17 | class CEGUIWidget : public QWidget 18 | { 19 | Q_OBJECT 20 | 21 | public: 22 | 23 | explicit CEGUIWidget(QWidget* parent = nullptr); 24 | virtual ~CEGUIWidget() override; 25 | 26 | void setScene(CEGUIGraphicsScene* scene); 27 | CEGUIGraphicsScene* getScene() const; 28 | CEGUIGraphicsView* getView() const; 29 | 30 | void setViewFeatures(bool wheelZoom, bool middleButtonScroll, bool continuousRendering, bool help); 31 | void setResolution(int width, int height); 32 | void setInputEnabled(bool enable); 33 | void updateZoomText(); 34 | 35 | protected slots: 36 | 37 | void on_debugInfoButton_clicked(); 38 | void on_btnHelp_toggled(bool checked); 39 | 40 | void onResolutionTextChanged(); 41 | 42 | protected: 43 | 44 | virtual bool eventFilter(QObject* obj, QEvent* ev) override; 45 | 46 | Ui::CEGUIWidget *ui; 47 | }; 48 | 49 | #endif // CEGUIWIDGET_H 50 | -------------------------------------------------------------------------------- /src/ui/FileSystemBrowser.h: -------------------------------------------------------------------------------- 1 | #ifndef FILESYSTEMBROWSER_H 2 | #define FILESYSTEMBROWSER_H 3 | 4 | #include 5 | #include "qfilesystemmodel.h" 6 | 7 | // This class represents the file system browser dock widget, usually located right bottom 8 | // in the main window. It can browse your entire filesystem and if you double click a file 9 | // it will open an editor tab for it. 10 | 11 | namespace Ui { 12 | class FileSystemBrowser; 13 | } 14 | 15 | class QToolButton; 16 | class QMenu; 17 | 18 | class FileSystemBrowser : public QDockWidget 19 | { 20 | Q_OBJECT 21 | 22 | public: 23 | 24 | explicit FileSystemBrowser(QWidget *parent = nullptr); 25 | virtual ~FileSystemBrowser() override; 26 | 27 | void setDirectory(const QString& dir); 28 | 29 | QToolButton* activeFileDirectoryButton() const; 30 | QToolButton* projectDirectoryButton() const; 31 | 32 | signals: 33 | 34 | void fileOpenRequested(const QString& absPath); 35 | 36 | private slots: 37 | 38 | void on_view_doubleClicked(const QModelIndex &index); 39 | 40 | void on_parentDirectoryButton_pressed(); 41 | 42 | void on_projectDirectoryButton_pressed(); 43 | 44 | void on_homeDirectoryButton_pressed(); 45 | 46 | void on_activeFileDirectoryButton_pressed(); 47 | 48 | void on_pathBox_currentIndexChanged(int index); 49 | 50 | private: 51 | 52 | virtual void contextMenuEvent(QContextMenuEvent* event) override; 53 | 54 | void setupContextMenu(); 55 | void openContainingFolderForSelection(); 56 | 57 | Ui::FileSystemBrowser *ui; 58 | QMenu* contextMenu = nullptr; 59 | 60 | QFileSystemModel model; 61 | QString directory; 62 | }; 63 | 64 | #endif // FILESYSTEMBROWSER_H 65 | -------------------------------------------------------------------------------- /src/ui/GuideLine.h: -------------------------------------------------------------------------------- 1 | #ifndef GUIDELINE_H 2 | #define GUIDELINE_H 3 | 4 | #include 5 | #include 6 | 7 | // Cosmetic line that crosses the whole scene or parent rect vertically or horizontally. 8 | // May be dragged. Use it as a guide or as x/y editing handle. 9 | 10 | class GuideLine : public QGraphicsLineItem 11 | { 12 | public: 13 | 14 | GuideLine(bool horizontal, QGraphicsItem* parent = nullptr, int width = 1, Qt::PenStyle style = Qt::PenStyle::SolidLine, QColor normalColor = Qt::white, QColor hoverColor = Qt::white, size_t mouseInteractionDistance = 5); 15 | GuideLine(bool horizontal, QGraphicsItem* parent = nullptr, const QPen& pen = QPen(Qt::white), QColor hoverColor = Qt::white, size_t mouseInteractionDistance = 5); 16 | 17 | virtual QPainterPath shape() const override; 18 | 19 | void setPosSilent(const QPointF& newPos); 20 | void setPosSilent(qreal x, qreal y); 21 | 22 | protected: 23 | 24 | void updateLine(); 25 | void updatePen(bool hovered); 26 | 27 | virtual QVariant itemChange(GraphicsItemChange change, const QVariant& value) override; 28 | virtual void hoverEnterEvent(QGraphicsSceneHoverEvent* event) override; 29 | virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent* event) override; 30 | 31 | virtual void onMoving(QPointF& /*newPos*/) {} 32 | 33 | QPen _normalPen; 34 | QColor _hoverColor; 35 | 36 | size_t _mouseInteractionDistance = 5; // Distance from line in pixels where the mouse interaction starts 37 | bool _horizontal = false; 38 | }; 39 | 40 | #endif // GUIDELINE_H 41 | -------------------------------------------------------------------------------- /src/ui/NumericValueItem.h: -------------------------------------------------------------------------------- 1 | #ifndef NUMERICVALUEITEM_H 2 | #define NUMERICVALUEITEM_H 3 | 4 | #include "qgraphicsitem.h" 5 | 6 | // Graphics scene item which represents a numeric value with optional editing capability. 7 | // When not edited, value can be accompanied by some additional text information. 8 | // Enter is used to accept edited value, Esc to discard. Sometimes Enter breaks due to some 9 | // internal Qt problem. Just click anywhere outside an item for it to lose focus, and value 10 | // will be accepted. 11 | 12 | class NumericValueItem : public QGraphicsTextItem 13 | { 14 | Q_OBJECT 15 | 16 | public: 17 | 18 | NumericValueItem(QGraphicsItem* parent = nullptr); 19 | 20 | void setValue(qreal value); 21 | void setPrecision(int fracDigits); 22 | void setTextTemplate(const QString& tpl); 23 | void setHorizontalAlignment(Qt::Alignment alignment); 24 | 25 | Q_SIGNALS: 26 | 27 | void valueChanged(qreal newValue); 28 | 29 | protected slots: 30 | 31 | void onTextChanged(); 32 | 33 | protected: 34 | 35 | void updateText(); 36 | void acceptNewValue(); 37 | qreal textToValue(bool* ok = nullptr) const; 38 | 39 | virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) override; 40 | virtual void focusInEvent(QFocusEvent* event) override; 41 | virtual void focusOutEvent(QFocusEvent* event) override; 42 | virtual void keyPressEvent(QKeyEvent* event) override; 43 | virtual void keyReleaseEvent(QKeyEvent* event) override; 44 | virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent* event) override; 45 | 46 | QString _toolTipMsg; 47 | QString _lastValidText; 48 | int _lastValidCursorPos = 0; 49 | qreal _value = 0.0; 50 | int _precision = -1; 51 | QString _template = "%1"; 52 | bool _ignoreNextMouseRelease = false; 53 | bool _acceptValueOnFocusOut = true; 54 | }; 55 | 56 | #endif // NUMERICVALUEITEM_H 57 | -------------------------------------------------------------------------------- /src/ui/ProjectManager.h: -------------------------------------------------------------------------------- 1 | #ifndef PROJECTMANAGER_H 2 | #define PROJECTMANAGER_H 3 | 4 | #include 5 | 6 | // TODO: rename to ProjectWindow / ProjectBrowser / SolutionBrowser / SolutionExplorer! 7 | 8 | namespace Ui { 9 | class ProjectManager; 10 | } 11 | 12 | class CEGUIProject; 13 | class QMenu; 14 | 15 | class ProjectManager : public QDockWidget 16 | { 17 | Q_OBJECT 18 | 19 | public: 20 | 21 | explicit ProjectManager(QWidget *parent = nullptr); 22 | ~ProjectManager(); 23 | 24 | void setProject(CEGUIProject* project = nullptr); 25 | 26 | signals: 27 | 28 | void itemOpenRequested(const QString& name); 29 | 30 | private slots: 31 | void on_view_doubleClicked(const QModelIndex &index); 32 | 33 | void on_view_customContextMenuRequested(const QPoint &pos); 34 | 35 | void on_actionCreateFolder_triggered(); 36 | 37 | void on_actionNewFile_triggered(); 38 | 39 | void on_actionExistingFiles_triggered(); 40 | 41 | void on_actionRename_triggered(); 42 | 43 | void on_actionRemove_triggered(); 44 | 45 | private: 46 | 47 | Ui::ProjectManager *ui; 48 | QMenu* _contextMenu = nullptr; 49 | CEGUIProject* _project = nullptr; 50 | }; 51 | 52 | #endif // PROJECTMANAGER_H 53 | -------------------------------------------------------------------------------- /src/ui/ResizingHandle.h: -------------------------------------------------------------------------------- 1 | #ifndef RESIZINGHANDLE_H 2 | #define RESIZINGHANDLE_H 3 | 4 | #include "qgraphicsitem.h" 5 | 6 | // A rectangle that when moved resizes the parent resizable rect item. 7 | // The reason to go with a child GraphicsRectItem instead of just overriding mousePressEvent et al 8 | // is to easily support multi selection resizing (you can multi-select various edges in all imaginable 9 | // combinations and resize many things at once). 10 | 11 | class QMouseEvent; 12 | class ResizableRectItem; 13 | 14 | class ResizingHandle : public QGraphicsRectItem 15 | { 16 | public: 17 | 18 | enum class Type 19 | { 20 | Top, 21 | Bottom, 22 | Left, 23 | Right, 24 | TopRight, 25 | BottomRight, 26 | BottomLeft, 27 | TopLeft 28 | }; 29 | 30 | ResizingHandle(Type type, ResizableRectItem* parent = nullptr); 31 | 32 | void onScaleChanged(qreal scaleX, qreal scaleY); 33 | 34 | void showHandle(bool show); 35 | void ignoreGeometryChanges(bool ignore) { _ignoreGeometryChanges = ignore; } 36 | 37 | bool isEdge() const { return _type == Type::Top || _type == Type::Bottom || _type == Type::Left || _type == Type::Right; } 38 | bool isHorizontal() const { return _type == Type::Top || _type == Type::Bottom; } 39 | bool isVertical() const { return _type == Type::Left || _type == Type::Right; } 40 | bool isCorner() const { return !isEdge(); } 41 | 42 | protected: 43 | 44 | QPointF performResizing(QPointF value); 45 | 46 | virtual QVariant itemChange(GraphicsItemChange change, const QVariant& value) override; 47 | virtual void hoverEnterEvent(QGraphicsSceneHoverEvent* event) override; 48 | virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent* event) override; 49 | 50 | Type _type = Type::Top; 51 | bool _ignoreGeometryChanges = false; 52 | }; 53 | 54 | #endif // RESIZINGHANDLE_H 55 | -------------------------------------------------------------------------------- /src/ui/UndoViewer.cpp: -------------------------------------------------------------------------------- 1 | #include "src/ui/UndoViewer.h" 2 | #include "qundoview.h" 3 | #include "qboxlayout.h" 4 | 5 | UndoViewer::UndoViewer(QWidget *parent) : 6 | QDockWidget(parent) 7 | { 8 | setObjectName("Undo Viewer dock widget"); 9 | setWindowTitle("Undo Viewer"); 10 | 11 | view = new QUndoView(); 12 | view->setCleanIcon(QIcon(":/icons/clean_undo_state.png")); 13 | 14 | auto contentsWidget = new QWidget(); 15 | auto contentsLayout = new QVBoxLayout(contentsWidget); 16 | auto margins = contentsLayout->contentsMargins(); 17 | margins.setTop(0); 18 | contentsLayout->setContentsMargins(margins); 19 | contentsLayout->addWidget(view); 20 | 21 | setWidget(contentsWidget); 22 | } 23 | 24 | void UndoViewer::setUndoStack(QUndoStack* undoStack) 25 | { 26 | view->setStack(undoStack); 27 | 28 | // If stack is None this effectively disables the entire dock widget to improve UX 29 | setEnabled(!!undoStack); 30 | } 31 | -------------------------------------------------------------------------------- /src/ui/UndoViewer.h: -------------------------------------------------------------------------------- 1 | #ifndef UNDOVIEWER_H 2 | #define UNDOVIEWER_H 3 | 4 | #include 5 | 6 | // A dockwidget able to view the entire undo history of given undo stack 7 | 8 | class QUndoView; 9 | class QUndoStack; 10 | 11 | class UndoViewer : public QDockWidget 12 | { 13 | Q_OBJECT 14 | 15 | public: 16 | 17 | explicit UndoViewer(QWidget *parent = nullptr); 18 | 19 | void setUndoStack(QUndoStack* undoStack); 20 | 21 | protected: 22 | 23 | QUndoView* view = nullptr; 24 | }; 25 | 26 | #endif // UNDOVIEWER_H 27 | -------------------------------------------------------------------------------- /src/ui/XMLSyntaxHighlighter.h: -------------------------------------------------------------------------------- 1 | #ifndef XMLSYNTAXHIGHLIGHTER_H 2 | #define XMLSYNTAXHIGHLIGHTER_H 3 | 4 | #include "qsyntaxhighlighter.h" 5 | #include "qregularexpression.h" 6 | 7 | class XMLSyntaxHighlighter : public QSyntaxHighlighter 8 | { 9 | public: 10 | 11 | XMLSyntaxHighlighter(QObject* parent = nullptr); 12 | XMLSyntaxHighlighter(QTextDocument* parent = nullptr); 13 | 14 | protected: 15 | 16 | void init(); 17 | 18 | virtual void highlightBlock(const QString& text) override; 19 | 20 | std::vector> highlightingRules; 21 | }; 22 | 23 | #endif // XMLSYNTAXHIGHLIGHTER_H 24 | -------------------------------------------------------------------------------- /src/ui/dialogs/AboutDialog.cpp: -------------------------------------------------------------------------------- 1 | #include "src/ui/dialogs/AboutDialog.h" 2 | #include "ui_AboutDialog.h" 3 | #include "src/Application.h" 4 | #include 5 | 6 | AboutDialog::AboutDialog(QWidget *parent) : 7 | QDialog(parent), 8 | ui(new Ui::AboutDialog) 9 | { 10 | ui->setupUi(this); 11 | 12 | setFixedSize(size()); 13 | 14 | // Background, see the data/images directory for SVG source 15 | ui->aboutImage->setPixmap(QPixmap(":/images/splashscreen.png")); 16 | 17 | ui->CEEDDescription->setText("Please report any issues to help this project."); 18 | ui->CEEDDescription->setTextFormat(Qt::RichText); 19 | ui->CEEDDescription->setTextInteractionFlags(Qt::TextBrowserInteraction); 20 | ui->CEEDDescription->setOpenExternalLinks(true); 21 | 22 | ui->CEEDVersion->setText("CEED: " + qApp->applicationVersion()); 23 | ui->QtVersion->setText("Qt: " + QString(qVersion())); 24 | ui->CEGUIVersion->setText(QString("CEGUI: %1.%2.%3").arg(CEGUI_VERSION_MAJOR).arg(CEGUI_VERSION_MINOR).arg(CEGUI_VERSION_PATCH)); 25 | } 26 | 27 | AboutDialog::~AboutDialog() 28 | { 29 | delete ui; 30 | } 31 | -------------------------------------------------------------------------------- /src/ui/dialogs/AboutDialog.h: -------------------------------------------------------------------------------- 1 | #ifndef ABOUTDIALOG_H 2 | #define ABOUTDIALOG_H 3 | 4 | #include 5 | 6 | // About/Version dialog shown when user selects Help -> About. 7 | // The main goal is to show versions of various things, we can then tell the 8 | // user to just go to this dialog and tell us the versions when something 9 | // goes wrong for them. 10 | 11 | namespace Ui { 12 | class AboutDialog; 13 | } 14 | 15 | class AboutDialog : public QDialog 16 | { 17 | Q_OBJECT 18 | 19 | public: 20 | explicit AboutDialog(QWidget *parent = nullptr); 21 | ~AboutDialog(); 22 | 23 | private: 24 | Ui::AboutDialog *ui; 25 | }; 26 | 27 | #endif // ABOUTDIALOG_H 28 | -------------------------------------------------------------------------------- /src/ui/dialogs/KeySequenceDialog.cpp: -------------------------------------------------------------------------------- 1 | #include "src/ui/dialogs/KeySequenceDialog.h" 2 | #include "ui_KeySequenceDialog.h" 3 | #include "qevent.h" 4 | 5 | KeySequenceDialog::KeySequenceDialog(QWidget *parent) : 6 | QDialog(parent), 7 | ui(new Ui::KeySequenceDialog) 8 | { 9 | setFocusPolicy(Qt::StrongFocus); 10 | 11 | ui->setupUi(this); 12 | } 13 | 14 | KeySequenceDialog::~KeySequenceDialog() 15 | { 16 | delete ui; 17 | } 18 | 19 | void KeySequenceDialog::setKeySequence(QKeySequence newSeq) 20 | { 21 | _seq = newSeq; 22 | 23 | auto keyCombination = findChild("keyCombination"); 24 | keyCombination->setText(newSeq.toString()); 25 | } 26 | 27 | void KeySequenceDialog::keyPressEvent(QKeyEvent* event) 28 | { 29 | setKeySequence(event->modifiers() | event->key()); 30 | } 31 | -------------------------------------------------------------------------------- /src/ui/dialogs/KeySequenceDialog.h: -------------------------------------------------------------------------------- 1 | #ifndef KEYSEQUENCEDIALOG_H 2 | #define KEYSEQUENCEDIALOG_H 3 | 4 | #include 5 | 6 | namespace Ui { 7 | class KeySequenceDialog; 8 | } 9 | 10 | class KeySequenceDialog : public QDialog 11 | { 12 | Q_OBJECT 13 | 14 | public: 15 | 16 | explicit KeySequenceDialog(QWidget *parent = nullptr); 17 | ~KeySequenceDialog(); 18 | 19 | void setKeySequence(QKeySequence newSeq); 20 | QKeySequence keySequence() const { return _seq; } 21 | 22 | private: 23 | 24 | virtual void keyPressEvent(QKeyEvent* event) override; 25 | 26 | Ui::KeySequenceDialog *ui; 27 | 28 | QKeySequence _seq; 29 | }; 30 | 31 | #endif // KEYSEQUENCEDIALOG_H 32 | -------------------------------------------------------------------------------- /src/ui/dialogs/LicenseDialog.cpp: -------------------------------------------------------------------------------- 1 | #include "src/ui/dialogs/LicenseDialog.h" 2 | #include "ui_LicenseDialog.h" 3 | 4 | LicenseDialog::LicenseDialog(QWidget *parent) : 5 | QDialog(parent), 6 | ui(new Ui::LicenseDialog) 7 | { 8 | ui->setupUi(this); 9 | } 10 | 11 | LicenseDialog::~LicenseDialog() 12 | { 13 | delete ui; 14 | } 15 | -------------------------------------------------------------------------------- /src/ui/dialogs/LicenseDialog.h: -------------------------------------------------------------------------------- 1 | #ifndef LICENSEDIALOG_H 2 | #define LICENSEDIALOG_H 3 | 4 | #include 5 | 6 | // Shows GPLv3 and related info in the UI of the application as FSF recommends. 7 | // Almost all of it is in the .ui file, editable with QtDesigner 8 | 9 | namespace Ui { 10 | class LicenseDialog; 11 | } 12 | 13 | class LicenseDialog : public QDialog 14 | { 15 | Q_OBJECT 16 | 17 | public: 18 | explicit LicenseDialog(QWidget *parent = nullptr); 19 | ~LicenseDialog(); 20 | 21 | private: 22 | Ui::LicenseDialog *ui; 23 | }; 24 | 25 | #endif // LICENSEDIALOG_H 26 | -------------------------------------------------------------------------------- /src/ui/dialogs/MultiplePossibleFactoriesDialog.cpp: -------------------------------------------------------------------------------- 1 | #include "src/ui/dialogs/MultiplePossibleFactoriesDialog.h" 2 | #include "ui_MultiplePossibleFactoriesDialog.h" 3 | #include "src/editors/EditorBase.h" 4 | 5 | MultiplePossibleFactoriesDialog::MultiplePossibleFactoriesDialog(const std::vector& variants, QWidget *parent) : 6 | QDialog(parent), 7 | ui(new Ui::MultiplePossibleFactoriesDialog) 8 | { 9 | ui->setupUi(this); 10 | 11 | auto factoryChoice = findChild("factoryChoice"); 12 | for (auto factory : variants) 13 | { 14 | auto item = new QListWidgetItem(factory->getFileTypesDescription()); //, factoryChoice); 15 | item->setData(Qt::UserRole, QVariant::fromValue(factory)); 16 | factoryChoice->addItem(item); 17 | } 18 | } 19 | 20 | MultiplePossibleFactoriesDialog::~MultiplePossibleFactoriesDialog() 21 | { 22 | delete ui; 23 | } 24 | 25 | EditorFactoryBase* MultiplePossibleFactoriesDialog::getSelectedFactory() const 26 | { 27 | auto factoryChoice = findChild("factoryChoice"); 28 | auto selection = factoryChoice->selectedItems(); 29 | return (selection.size() == 1) ? selection[0]->data(Qt::UserRole).value() : nullptr; 30 | } 31 | -------------------------------------------------------------------------------- /src/ui/dialogs/MultiplePossibleFactoriesDialog.h: -------------------------------------------------------------------------------- 1 | #ifndef MULTIPLEPOSSIBLEFACTORIESDIALOG_H 2 | #define MULTIPLEPOSSIBLEFACTORIESDIALOG_H 3 | 4 | #include 5 | 6 | namespace Ui { 7 | class MultiplePossibleFactoriesDialog; 8 | } 9 | 10 | class EditorFactoryBase; 11 | 12 | class MultiplePossibleFactoriesDialog : public QDialog 13 | { 14 | Q_OBJECT 15 | 16 | public: 17 | explicit MultiplePossibleFactoriesDialog(const std::vector& variants, QWidget *parent = nullptr); 18 | ~MultiplePossibleFactoriesDialog(); 19 | 20 | EditorFactoryBase* getSelectedFactory() const; 21 | 22 | private: 23 | Ui::MultiplePossibleFactoriesDialog *ui; 24 | }; 25 | 26 | #endif // MULTIPLEPOSSIBLEFACTORIESDIALOG_H 27 | -------------------------------------------------------------------------------- /src/ui/dialogs/NewProjectDialog.cpp: -------------------------------------------------------------------------------- 1 | #include "src/ui/dialogs/NewProjectDialog.h" 2 | #include "src/cegui/CEGUIManager.h" 3 | #include "ui_NewProjectDialog.h" 4 | #include "qmessagebox.h" 5 | #include "qcheckbox.h" 6 | #include "qfileinfo.h" 7 | #include "qdir.h" 8 | 9 | NewProjectDialog::NewProjectDialog(QWidget *parent) : 10 | QDialog(parent), 11 | ui(new Ui::NewProjectDialog) 12 | { 13 | ui->setupUi(this); 14 | 15 | auto projectFilePath = findChild("projectFilePath"); 16 | projectFilePath->setFilter(QString("CEED project file (*.%1)").arg(CEGUIManager::ceedProjectExtension())); 17 | projectFilePath->setMode(FileLineEdit::Mode::NewFile); 18 | } 19 | 20 | NewProjectDialog::~NewProjectDialog() 21 | { 22 | delete ui; 23 | } 24 | 25 | QString NewProjectDialog::getFilePath() const 26 | { 27 | return ui->projectFilePath->text(); 28 | } 29 | 30 | bool NewProjectDialog::isCreateResourceDirsSelected() const 31 | { 32 | auto createResourceDirs = findChild("createResourceDirs"); 33 | return createResourceDirs->checkState() == Qt::Checked; 34 | } 35 | 36 | void NewProjectDialog::accept() 37 | { 38 | QString path = ui->projectFilePath->text(); 39 | if (path.isEmpty()) 40 | { 41 | QMessageBox::critical(this, "Project file path empty!", "You must supply a valid project file path!"); 42 | return; 43 | } 44 | 45 | //???create directory instead? 46 | QDir parentDir = QFileInfo(path).dir(); 47 | if (!parentDir.exists()) 48 | { 49 | QMessageBox::critical(this, "Project file path invalid!", "Its parent directory ('" + parentDir.path() + "') is inaccessible!"); 50 | return; 51 | } 52 | 53 | QDialog::accept(); 54 | } 55 | -------------------------------------------------------------------------------- /src/ui/dialogs/NewProjectDialog.h: -------------------------------------------------------------------------------- 1 | #ifndef NEWPROJECTDIALOG_H 2 | #define NEWPROJECTDIALOG_H 3 | 4 | #include 5 | 6 | // Dialog responsible for creation of entirely new projects 7 | 8 | namespace Ui { 9 | class NewProjectDialog; 10 | } 11 | 12 | class NewProjectDialog : public QDialog 13 | { 14 | Q_OBJECT 15 | 16 | public: 17 | 18 | explicit NewProjectDialog(QWidget *parent = nullptr); 19 | virtual ~NewProjectDialog() override; 20 | 21 | QString getFilePath() const; 22 | bool isCreateResourceDirsSelected() const; 23 | 24 | public slots: 25 | 26 | virtual void accept() override; 27 | 28 | private: 29 | 30 | Ui::NewProjectDialog *ui; 31 | }; 32 | 33 | #endif // NEWPROJECTDIALOG_H 34 | -------------------------------------------------------------------------------- /src/ui/dialogs/PenDialog.h: -------------------------------------------------------------------------------- 1 | #ifndef PENDIALOG_H 2 | #define PENDIALOG_H 3 | 4 | #include 5 | 6 | namespace Ui { 7 | class PenDialog; 8 | } 9 | 10 | class PenDialog : public QDialog 11 | { 12 | Q_OBJECT 13 | 14 | public: 15 | 16 | explicit PenDialog(QWidget *parent = nullptr); 17 | ~PenDialog(); 18 | 19 | void setPen(const QPen& newPen); 20 | QPen getPen() const; 21 | 22 | private: 23 | 24 | Ui::PenDialog *ui; 25 | }; 26 | 27 | #endif // PENDIALOG_H 28 | -------------------------------------------------------------------------------- /src/ui/dialogs/ProjectSettingsDialog.h: -------------------------------------------------------------------------------- 1 | #ifndef PROJECTSETTINGSDIALOG_H 2 | #define PROJECTSETTINGSDIALOG_H 3 | 4 | #include 5 | 6 | // Dialog able to change various project settings 7 | 8 | namespace Ui { 9 | class ProjectSettingsDialog; 10 | } 11 | 12 | class CEGUIProject; 13 | class FileLineEdit; 14 | class QComboBox; 15 | 16 | class ProjectSettingsDialog : public QDialog 17 | { 18 | Q_OBJECT 19 | 20 | public: 21 | 22 | explicit ProjectSettingsDialog(CEGUIProject& project, QWidget *parent = nullptr); 23 | virtual ~ProjectSettingsDialog() override; 24 | 25 | void apply(CEGUIProject& project) const; 26 | 27 | private slots: 28 | 29 | void on_resourceDirectoryApplyButton_pressed(); 30 | 31 | private: 32 | 33 | Ui::ProjectSettingsDialog *ui; 34 | 35 | QComboBox* CEGUIVersion = nullptr; 36 | QComboBox* CEGUIDefaultResolution = nullptr; 37 | 38 | FileLineEdit* baseDirectory = nullptr; 39 | FileLineEdit* resourceDirectory = nullptr; 40 | FileLineEdit* imagesetsPath = nullptr; 41 | FileLineEdit* fontsPath = nullptr; 42 | FileLineEdit* looknfeelsPath = nullptr; 43 | FileLineEdit* schemesPath = nullptr; 44 | FileLineEdit* layoutsPath = nullptr; 45 | FileLineEdit* xmlSchemasPath = nullptr; 46 | }; 47 | 48 | #endif // PROJECTSETTINGSDIALOG_H 49 | -------------------------------------------------------------------------------- /src/ui/dialogs/SettingsDialog.h: -------------------------------------------------------------------------------- 1 | #ifndef SETTINGSDIALOG_H 2 | #define SETTINGSDIALOG_H 3 | 4 | #include 5 | 6 | class QAbstractButton; 7 | class QDialogButtonBox; 8 | class QTabWidget; 9 | 10 | class SettingsDialog : public QDialog 11 | { 12 | Q_OBJECT 13 | 14 | public: 15 | 16 | explicit SettingsDialog(QWidget *parent = nullptr); 17 | 18 | private slots: 19 | 20 | void onButtonBoxClicked(QAbstractButton* button); 21 | 22 | private: 23 | 24 | void checkIfRestartRequired(); 25 | 26 | QDialogButtonBox* buttonBox = nullptr; 27 | QTabWidget* tabs = nullptr; 28 | }; 29 | 30 | #endif // SETTINGSDIALOG_H 31 | -------------------------------------------------------------------------------- /src/ui/dialogs/UpdateDialog.h: -------------------------------------------------------------------------------- 1 | #ifndef UPDATEDIALOG_H 2 | #define UPDATEDIALOG_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | class QJsonObject; 10 | 11 | namespace Ui { 12 | class UpdateDialog; 13 | } 14 | 15 | class UpdateDialog : public QDialog 16 | { 17 | Q_OBJECT 18 | 19 | public: 20 | explicit UpdateDialog(const QVersionNumber& currentVersion, const QVersionNumber& newVersion, 21 | const QJsonObject& releaseInfo, QWidget *parent = nullptr); 22 | virtual ~UpdateDialog() override; 23 | 24 | private slots: 25 | void on_btnUpdate_clicked(); 26 | 27 | void on_btnWeb_clicked(); 28 | 29 | private: 30 | 31 | virtual void keyPressEvent(QKeyEvent* event) override; 32 | virtual void closeEvent(QCloseEvent* event) override; 33 | 34 | void downloadUpdate(); 35 | void installUpdate(const QString& packageName); 36 | void onUpdateError(const QString& error); 37 | 38 | Ui::UpdateDialog *ui; 39 | 40 | QElapsedTimer _downloadTimer; 41 | 42 | QVersionNumber _releaseVersion; 43 | QUrl _releaseWebPage; 44 | QUrl _releaseAsset; 45 | QString _releaseAssetFileName; 46 | int64_t _releaseAssetSize = 0.0; 47 | bool _blocked = false; 48 | }; 49 | 50 | #endif // UPDATEDIALOG_H 51 | -------------------------------------------------------------------------------- /src/ui/imageset/ImageLabel.cpp: -------------------------------------------------------------------------------- 1 | #include "src/ui/imageset/ImageLabel.h" 2 | #include "qapplication.h" 3 | #include "qpalette.h" 4 | #include "qpainter.h" 5 | 6 | ImageLabel::ImageLabel(QGraphicsItem* parent) 7 | : QGraphicsTextItem(parent) 8 | { 9 | setOpacity(0.8); 10 | setVisible(false); 11 | setPlainText("Unknown"); 12 | 13 | // We make the label a lot more transparent when mouse is over it to make it easier 14 | // to work around the top edge of the image 15 | setAcceptHoverEvents(true); 16 | 17 | setY(-boundingRect().height() - 2.0); 18 | } 19 | 20 | void ImageLabel::onScaleChanged(qreal scaleX, qreal scaleY) 21 | { 22 | auto tfm = transform(); 23 | 24 | const qreal counterScaleX = (1.0 / scaleX); 25 | const qreal counterScaleY = (1.0 / scaleY); 26 | 27 | tfm = QTransform(counterScaleX, tfm.m12(), tfm.m13(), 28 | tfm.m21(), counterScaleY, tfm.m23(), 29 | tfm.m31(), tfm.m32(), tfm.m33()); 30 | 31 | setTransform(tfm); 32 | setY((-boundingRect().height() - 2.0) * counterScaleY); 33 | } 34 | 35 | void ImageLabel::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) 36 | { 37 | painter->fillRect(boundingRect(), qApp->palette().color(QPalette::Normal, QPalette::Base)); 38 | painter->drawRect(boundingRect()); 39 | QGraphicsTextItem::paint(painter, option, widget); 40 | } 41 | 42 | void ImageLabel::hoverEnterEvent(QGraphicsSceneHoverEvent* event) 43 | { 44 | QGraphicsTextItem::hoverEnterEvent(event); 45 | setOpacity(0.2); 46 | } 47 | 48 | void ImageLabel::hoverLeaveEvent(QGraphicsSceneHoverEvent* event) 49 | { 50 | setOpacity(0.8); 51 | QGraphicsTextItem::hoverLeaveEvent(event); 52 | } 53 | -------------------------------------------------------------------------------- /src/ui/imageset/ImageLabel.h: -------------------------------------------------------------------------------- 1 | #ifndef IMAGELABEL_H 2 | #define IMAGELABEL_H 3 | 4 | #include "qgraphicsitem.h" 5 | 6 | // Text item showing image's label when the image is hovered or selected. 7 | // You should not use this directly! Use ImageEntry.name instead to get the name. 8 | 9 | class ImageLabel : public QGraphicsTextItem 10 | { 11 | public: 12 | 13 | ImageLabel(QGraphicsItem* parent = nullptr); 14 | 15 | void onScaleChanged(qreal scaleX, qreal scaleY); 16 | 17 | protected: 18 | 19 | virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = nullptr) override; 20 | virtual void hoverEnterEvent(QGraphicsSceneHoverEvent* event) override; 21 | virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent* event) override; 22 | }; 23 | 24 | #endif // IMAGELABEL_H 25 | -------------------------------------------------------------------------------- /src/ui/imageset/ImageOffsetMark.h: -------------------------------------------------------------------------------- 1 | #ifndef IMAGEOFFSETMARK_H 2 | #define IMAGEOFFSETMARK_H 3 | 4 | #include "qgraphicsitem.h" 5 | 6 | // A crosshair showing where the imaginary (0, 0) point of the image is. The actual offset 7 | // is just a negated vector of the crosshair's position but this is easier to work with from 8 | // the artist's point of view. 9 | 10 | class ImageOffsetMark : public QGraphicsPixmapItem 11 | { 12 | public: 13 | 14 | ImageOffsetMark(QGraphicsItem* parent = nullptr); 15 | 16 | bool isHovered() const { return _isHovered; } 17 | QPointF getOldPos() const { return oldPosition; } 18 | 19 | void onPotentialMove(bool move); 20 | 21 | protected: 22 | 23 | virtual QVariant itemChange(GraphicsItemChange change, const QVariant& value) override; 24 | virtual void hoverEnterEvent(QGraphicsSceneHoverEvent* event) override; 25 | virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent* event) override; 26 | 27 | QPointF oldPosition; // Used for undo 28 | bool potentialMove = false; // Used for undo 29 | bool _isHovered = false; // Internal attribute to help decide when to hide/show the offset crosshair 30 | }; 31 | 32 | #endif // IMAGEOFFSETMARK_H 33 | -------------------------------------------------------------------------------- /src/ui/layout/AnchorCornerHandle.h: -------------------------------------------------------------------------------- 1 | #ifndef ANCHORCORNERHANDLE_H 2 | #define ANCHORCORNERHANDLE_H 3 | 4 | #include 5 | #include 6 | 7 | class AnchorCornerHandle : public QGraphicsPolygonItem 8 | { 9 | public: 10 | 11 | AnchorCornerHandle(bool left, bool top, QGraphicsItem* parent = nullptr, qreal size = 12.0, const QPen& pen = QPen(Qt::white), QColor hoverColor = Qt::white); 12 | 13 | void setPosSilent(const QPointF& newPos); 14 | void setPosSilent(qreal x, qreal y); 15 | 16 | protected: 17 | 18 | void updatePen(bool hovered); 19 | void updateBrush(); 20 | void updateStatusMessage(bool newMoveOpposite); 21 | 22 | virtual QVariant itemChange(GraphicsItemChange change, const QVariant& value) override; 23 | virtual void hoverEnterEvent(QGraphicsSceneHoverEvent* event) override; 24 | virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent* event) override; 25 | virtual void hoverMoveEvent(QGraphicsSceneHoverEvent* event) override; 26 | 27 | QPen _normalPen; 28 | QColor _hoverColor; 29 | qreal _moveOppositeThreshold; 30 | bool _moveOpposite = false; // When overlap with opposite items, move them or stop moving self? 31 | }; 32 | 33 | #endif // ANCHORCORNERHANDLE_H 34 | -------------------------------------------------------------------------------- /src/ui/layout/AnchorEdgeHandle.h: -------------------------------------------------------------------------------- 1 | #ifndef ANCHOREDGEHANDLE_H 2 | #define ANCHOREDGEHANDLE_H 3 | 4 | #include "src/ui/GuideLine.h" 5 | 6 | class AnchorEdgeHandle : public GuideLine 7 | { 8 | public: 9 | 10 | AnchorEdgeHandle(bool horizontal, QGraphicsItem* parent = nullptr, int width = 1, Qt::PenStyle style = Qt::PenStyle::SolidLine, QColor normalColor = Qt::white, QColor hoverColor = Qt::white, size_t mouseInteractionDistance = 5); 11 | AnchorEdgeHandle(bool horizontal, QGraphicsItem* parent = nullptr, const QPen& pen = QPen(Qt::white), QColor hoverColor = Qt::white, size_t mouseInteractionDistance = 5); 12 | 13 | protected: 14 | 15 | virtual void hoverEnterEvent(QGraphicsSceneHoverEvent* event) override; 16 | virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent* event) override; 17 | 18 | virtual QVariant itemChange(GraphicsItemChange change, const QVariant& value) override; 19 | 20 | virtual void onMoving(QPointF& newPos) override; 21 | }; 22 | 23 | #endif // ANCHOREDGEHANDLE_H 24 | -------------------------------------------------------------------------------- /src/ui/layout/CreateWidgetDockWidget.cpp: -------------------------------------------------------------------------------- 1 | #include "src/ui/layout/CreateWidgetDockWidget.h" 2 | #include "src/cegui/CEGUIManager.h" 3 | #include "ui_CreateWidgetDockWidget.h" 4 | 5 | CreateWidgetDockWidget::CreateWidgetDockWidget(QWidget *parent) : 6 | QDockWidget(parent), 7 | ui(new Ui::CreateWidgetDockWidget) 8 | { 9 | ui->setupUi(this); 10 | } 11 | 12 | CreateWidgetDockWidget::~CreateWidgetDockWidget() 13 | { 14 | delete ui; 15 | } 16 | 17 | void CreateWidgetDockWidget::populate() 18 | { 19 | ui->tree->clear(); 20 | 21 | std::map widgetsBySkin; 22 | CEGUIManager::Instance().getAvailableWidgetsBySkin(widgetsBySkin); 23 | 24 | for (auto& pair : widgetsBySkin) 25 | { 26 | QTreeWidgetItem* skinItem; 27 | if (pair.first == "__no_skin__") 28 | { 29 | skinItem = ui->tree->invisibleRootItem(); 30 | } 31 | else 32 | { 33 | skinItem = new QTreeWidgetItem(); 34 | skinItem->setText(0, pair.first); 35 | 36 | // This makes sure the skin item isn't draggable 37 | skinItem->setFlags(Qt::ItemIsEnabled); 38 | ui->tree->addTopLevelItem(skinItem); 39 | } 40 | 41 | // skinItem now represents the skin node, we add all widgets in that skin to it 42 | for (auto& widget : pair.second) 43 | { 44 | auto widgetItem = new QTreeWidgetItem(); 45 | widgetItem->setText(0, widget); 46 | skinItem->addChild(widgetItem); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/ui/layout/CreateWidgetDockWidget.h: -------------------------------------------------------------------------------- 1 | #ifndef CREATEWIDGETDOCKWIDGET_H 2 | #define CREATEWIDGETDOCKWIDGET_H 3 | 4 | #include 5 | 6 | // This lists available widgets you can create and allows their creation (by drag N drop) 7 | 8 | namespace Ui { 9 | class CreateWidgetDockWidget; 10 | } 11 | 12 | class CreateWidgetDockWidget : public QDockWidget 13 | { 14 | Q_OBJECT 15 | 16 | public: 17 | 18 | explicit CreateWidgetDockWidget(QWidget *parent = nullptr); 19 | virtual ~CreateWidgetDockWidget() override; 20 | 21 | void populate(); 22 | 23 | private: 24 | 25 | Ui::CreateWidgetDockWidget *ui; 26 | }; 27 | 28 | #endif // CREATEWIDGETDOCKWIDGET_H 29 | -------------------------------------------------------------------------------- /src/ui/layout/LayoutContainerHandle.h: -------------------------------------------------------------------------------- 1 | #ifndef LAYOUTCONTAINERHANDLE_H 2 | #define LAYOUTCONTAINERHANDLE_H 3 | 4 | #include 5 | 6 | class LayoutManipulator; 7 | 8 | class LayoutContainerHandle : public QGraphicsPixmapItem 9 | { 10 | public: 11 | 12 | LayoutContainerHandle(LayoutManipulator& host); 13 | 14 | void updateLook(); 15 | void updatePositionAndScale(qreal scaleX, qreal scaleY); 16 | void updateTooltip(); 17 | 18 | protected: 19 | 20 | virtual void dragEnterEvent(QGraphicsSceneDragDropEvent* event) override; 21 | virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent* event) override; 22 | virtual void dropEvent(QGraphicsSceneDragDropEvent* event) override; 23 | virtual void mouseMoveEvent(QGraphicsSceneMouseEvent* event) override; 24 | 25 | virtual QVariant itemChange(GraphicsItemChange change, const QVariant& value) override; 26 | void hoverEnterEvent(QGraphicsSceneHoverEvent* event) override; 27 | void hoverLeaveEvent(QGraphicsSceneHoverEvent* event) override; 28 | 29 | bool _mouseOver = false; 30 | bool _ignoreGeometryChanges = false; 31 | }; 32 | 33 | #endif // LAYOUTCONTAINERHANDLE_H 34 | -------------------------------------------------------------------------------- /src/ui/layout/WidgetHierarchyDockWidget.h: -------------------------------------------------------------------------------- 1 | #ifndef WIDGETHIERARCHYDOCKWIDGET_H 2 | #define WIDGETHIERARCHYDOCKWIDGET_H 3 | 4 | #include 5 | 6 | // Displays and manages the widget hierarchy. Contains the WidgetHierarchyTreeWidget. 7 | 8 | namespace Ui { 9 | class WidgetHierarchyDockWidget; 10 | } 11 | 12 | class LayoutManipulator; 13 | class LayoutVisualMode; 14 | class QTreeView; 15 | 16 | class WidgetHierarchyDockWidget : public QDockWidget 17 | { 18 | Q_OBJECT 19 | 20 | public: 21 | 22 | explicit WidgetHierarchyDockWidget(LayoutVisualMode& visualMode); 23 | virtual ~WidgetHierarchyDockWidget() override; 24 | 25 | void setupContextMenu(); 26 | 27 | LayoutVisualMode& getVisualMode() const { return _visualMode; } 28 | void setRootWidgetManipulator(LayoutManipulator* root); 29 | void refresh(); 30 | 31 | bool isIgnoringSelectionChanges() const { return _ignoreSelectionChanges; } 32 | void ignoreSelectionChanges(bool ignore) { _ignoreSelectionChanges = ignore; } 33 | void ignoreSelectionChangesInScene(bool ignore); 34 | 35 | QTreeView* getTreeView() const; 36 | 37 | signals: 38 | 39 | void deleteRequested(); 40 | 41 | private: 42 | 43 | virtual void keyReleaseEvent(QKeyEvent* event) override; 44 | 45 | Ui::WidgetHierarchyDockWidget *ui; 46 | 47 | LayoutVisualMode& _visualMode; 48 | bool _ignoreSelectionChanges = false; 49 | LayoutManipulator* _rootWidgetManipulator = nullptr; 50 | }; 51 | 52 | #endif // WIDGETHIERARCHYDOCKWIDGET_H 53 | -------------------------------------------------------------------------------- /src/ui/layout/WidgetHierarchyItem.h: -------------------------------------------------------------------------------- 1 | #ifndef WIDGETHIERARCHYITEM_H 2 | #define WIDGETHIERARCHYITEM_H 3 | 4 | #include "qstandarditemmodel.h" 5 | 6 | class LayoutManipulator; 7 | 8 | class WidgetHierarchyItem : public QStandardItem 9 | { 10 | public: 11 | 12 | WidgetHierarchyItem(LayoutManipulator* manipulator); 13 | 14 | virtual QStandardItem* clone() const override; 15 | virtual void setData(const QVariant& value, int role = Qt::UserRole + 1) override; 16 | 17 | void refreshPathData(bool recursive = true); 18 | void refreshOrderingData(bool resort = true, bool recursive = true); 19 | void setLocked(bool locked, bool recursive = false); 20 | LayoutManipulator* getManipulator() const { return _manipulator; } 21 | 22 | protected: 23 | 24 | LayoutManipulator* _manipulator = nullptr; 25 | }; 26 | 27 | #endif // WIDGETHIERARCHYITEM_H 28 | -------------------------------------------------------------------------------- /src/ui/layout/WidgetHierarchyTreeModel.h: -------------------------------------------------------------------------------- 1 | #ifndef WIDGETHIERARCHYTREEMODEL_H 2 | #define WIDGETHIERARCHYTREEMODEL_H 3 | 4 | #include "qstandarditemmodel.h" 5 | 6 | class WidgetHierarchyItem; 7 | class LayoutManipulator; 8 | class LayoutVisualMode; 9 | 10 | class WidgetHierarchyTreeModel : public QStandardItemModel 11 | { 12 | public: 13 | 14 | WidgetHierarchyTreeModel(LayoutVisualMode& visualMode); 15 | 16 | virtual bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override; 17 | virtual QMimeData* mimeData(const QModelIndexList& indexes) const override; 18 | virtual QStringList mimeTypes() const override; 19 | virtual bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent) override; 20 | 21 | void setRootManipulator(LayoutManipulator* rootManipulator); 22 | 23 | protected: 24 | 25 | bool synchroniseSubtree(WidgetHierarchyItem* item, LayoutManipulator* manipulator, bool recursive = true); 26 | WidgetHierarchyItem* constructSubtree(LayoutManipulator* manipulator); 27 | 28 | LayoutVisualMode& _visualMode; 29 | }; 30 | 31 | #endif // WIDGETHIERARCHYTREEMODEL_H 32 | -------------------------------------------------------------------------------- /src/ui/layout/WidgetHierarchyTreeView.h: -------------------------------------------------------------------------------- 1 | #ifndef WIDGETHIERARCHYTREEVIEW_H 2 | #define WIDGETHIERARCHYTREEVIEW_H 3 | 4 | #include "qtreeview.h" 5 | 6 | // The actual widget hierarchy tree widget - what a horrible name 7 | 8 | class LayoutManipulator; 9 | 10 | class WidgetHierarchyTreeView : public QTreeView 11 | { 12 | Q_OBJECT 13 | 14 | public: 15 | 16 | WidgetHierarchyTreeView(QWidget* parent = nullptr); 17 | virtual ~WidgetHierarchyTreeView() override; 18 | 19 | void setupContextMenu(); 20 | 21 | public slots: 22 | 23 | void copySelectedWidgetPaths(); 24 | void editSelectedWidgetName(); 25 | void expandChildrenOfSelected(); 26 | void collapseChildrenOfSelected(); 27 | 28 | protected: 29 | 30 | LayoutManipulator* getManipulatorFromIndex(const QModelIndex& index) const; 31 | void setSelectedWidgetsLocked(bool locked, bool recursive); 32 | 33 | virtual void selectionChanged(const QItemSelection& selected, const QItemSelection& deselected) override; 34 | virtual void contextMenuEvent(QContextMenuEvent* event) override; 35 | 36 | QMenu* contextMenu = nullptr; 37 | QAction* actionCopyWidgetPath = nullptr; 38 | QAction* actionRename = nullptr; 39 | QAction* actionLockWidget = nullptr; 40 | QAction* actionUnlockWidget = nullptr; 41 | QAction* actionLockWidgetRecursively = nullptr; 42 | QAction* actionUnlockWidgetRecursively = nullptr; 43 | QAction* actionExpandChildren = nullptr; 44 | QAction* actionCollapseChildren = nullptr; 45 | }; 46 | 47 | #endif // WIDGETHIERARCHYTREEVIEW_H 48 | -------------------------------------------------------------------------------- /src/ui/layout/WidgetTypeTreeWidget.h: -------------------------------------------------------------------------------- 1 | #ifndef WIDGETTYPETREEWIDGET_H 2 | #define WIDGETTYPETREEWIDGET_H 3 | 4 | #include "qtreewidget.h" 5 | 6 | // Represents a single available widget for creation (it has a mapping in the scheme or is 7 | // a stock special widget - like DefaultWindow). Also provides previews for the widgets 8 | 9 | class WidgetTypeTreeWidget : public QTreeWidget 10 | { 11 | public: 12 | 13 | WidgetTypeTreeWidget(QWidget* parent = nullptr); 14 | 15 | protected: 16 | 17 | virtual void startDrag(Qt::DropActions supportedActions) override; 18 | virtual bool viewportEvent(QEvent* event) override; 19 | }; 20 | 21 | #endif // WIDGETTYPETREEWIDGET_H 22 | -------------------------------------------------------------------------------- /src/ui/widgets/BitmapEditorWidget.cpp: -------------------------------------------------------------------------------- 1 | #include "src/ui/widgets/BitmapEditorWidget.h" 2 | #include "ui_BitmapEditorWidget.h" 3 | 4 | BitmapEditorWidget::BitmapEditorWidget(QWidget *parent) : 5 | QWidget(parent), 6 | ui(new Ui::BitmapEditorWidget) 7 | { 8 | ui->setupUi(this); 9 | } 10 | 11 | BitmapEditorWidget::~BitmapEditorWidget() 12 | { 13 | delete ui; 14 | } 15 | 16 | void BitmapEditorWidget::openFile(const QString& filePath) 17 | { 18 | ui->preview->setPixmap(QPixmap(filePath)); 19 | } 20 | -------------------------------------------------------------------------------- /src/ui/widgets/BitmapEditorWidget.h: -------------------------------------------------------------------------------- 1 | #ifndef BITMAPEDITORWIDGET_H 2 | #define BITMAPEDITORWIDGET_H 3 | 4 | #include 5 | 6 | namespace Ui { 7 | class BitmapEditorWidget; 8 | } 9 | 10 | class BitmapEditorWidget : public QWidget 11 | { 12 | Q_OBJECT 13 | 14 | public: 15 | 16 | explicit BitmapEditorWidget(QWidget *parent = nullptr); 17 | ~BitmapEditorWidget(); 18 | 19 | void openFile(const QString& filePath); 20 | 21 | private: 22 | 23 | Ui::BitmapEditorWidget *ui; 24 | }; 25 | 26 | #endif // BITMAPEDITORWIDGET_H 27 | -------------------------------------------------------------------------------- /src/ui/widgets/ColourButton.cpp: -------------------------------------------------------------------------------- 1 | #include "src/ui/widgets/ColourButton.h" 2 | #include "qcolordialog.h" 3 | #include "qpainter.h" 4 | 5 | ColourButton::ColourButton(QWidget* parent) 6 | : QPushButton(parent) 7 | { 8 | setAutoFillBackground(true); 9 | //setFlat(true); 10 | setIconSize(QSize(24, 24)); 11 | setColour(Qt::white); 12 | 13 | connect(this, &QPushButton::clicked, this, &ColourButton::onClick); 14 | } 15 | 16 | void ColourButton::setColour(const QColor& newColour) 17 | { 18 | if (_colour == newColour) return; 19 | 20 | //??? to utils? 21 | QPixmap pixmap(24, 24); 22 | pixmap.fill(QColor(newColour)); 23 | QPainter painter(&pixmap); 24 | painter.drawRect(0, 0, 23, 23); 25 | setIcon(QIcon(pixmap)); 26 | 27 | _colour = newColour; 28 | setText(QString("R: %1, G: %2, B: %3, A: %4") 29 | .arg(_colour.red(), 3, 10, QChar('0')) 30 | .arg(_colour.green(), 3, 10, QChar('0')) 31 | .arg(_colour.blue(), 3, 10, QChar('0')) 32 | .arg(_colour.alpha(), 3, 10, QChar('0'))); 33 | 34 | emit colourChanged(_colour); 35 | } 36 | 37 | void ColourButton::onClick() 38 | { 39 | // We pass parent widget because we may use setStyleSheet and we don't want to propagate it to QColorDialog 40 | QColor newColour = QColorDialog::getColor(_colour, parentWidget(), "", QColorDialog::ShowAlphaChannel | QColorDialog::DontUseNativeDialog); 41 | if (newColour.isValid()) setColour(newColour); 42 | } 43 | -------------------------------------------------------------------------------- /src/ui/widgets/ColourButton.h: -------------------------------------------------------------------------------- 1 | #ifndef COLOURBUTTON_H 2 | #define COLOURBUTTON_H 3 | 4 | #include "qpushbutton.h" 5 | 6 | class ColourButton : public QPushButton 7 | { 8 | Q_OBJECT 9 | 10 | public: 11 | 12 | ColourButton(QWidget* parent = nullptr); 13 | 14 | const QColor& colour() const { return _colour; } 15 | void setColour(const QColor& newColour); 16 | 17 | signals: 18 | 19 | void colourChanged(const QColor& color); 20 | 21 | protected slots: 22 | 23 | void onClick(); 24 | 25 | protected: 26 | 27 | QColor _colour; 28 | }; 29 | 30 | #endif // COLOURBUTTON_H 31 | -------------------------------------------------------------------------------- /src/ui/widgets/FileLineEdit.cpp: -------------------------------------------------------------------------------- 1 | #include "src/ui/widgets/FileLineEdit.h" 2 | #include "ui_FileLineEdit.h" 3 | #include "qlineedit.h" 4 | #include "qfiledialog.h" 5 | 6 | FileLineEdit::FileLineEdit(QWidget *parent) : 7 | QWidget(parent), 8 | ui(new Ui::FileLineEdit), 9 | filter("Any file (*.*)") 10 | { 11 | ui->setupUi(this); 12 | 13 | lineEdit = findChild("lineEdit"); 14 | getInitialDirectory = []() { return ""; }; 15 | } 16 | 17 | FileLineEdit::~FileLineEdit() 18 | { 19 | delete ui; 20 | } 21 | 22 | void FileLineEdit::setText(const QString& text) 23 | { 24 | lineEdit->setText(text); 25 | } 26 | 27 | QString FileLineEdit::text() const 28 | { 29 | return lineEdit->text(); 30 | } 31 | 32 | void FileLineEdit::on_browseButton_pressed() 33 | { 34 | QString path; 35 | switch (mode) 36 | { 37 | case Mode::NewFile: 38 | { 39 | path = QFileDialog::getSaveFileName(this, "Choose a path", getInitialDirectory(), filter); 40 | break; 41 | } 42 | case Mode::ExistingFile: 43 | { 44 | path = QFileDialog::getOpenFileName(this, "Choose a path", getInitialDirectory(), filter); 45 | break; 46 | } 47 | case Mode::ExistingDirectory: 48 | { 49 | path = QFileDialog::getExistingDirectory(this, "Choose a directory", getInitialDirectory()); 50 | break; 51 | } 52 | } 53 | 54 | if (!path.isEmpty()) 55 | lineEdit->setText(path); 56 | } 57 | -------------------------------------------------------------------------------- /src/ui/widgets/FileLineEdit.h: -------------------------------------------------------------------------------- 1 | #ifndef FILELINEEDIT_H 2 | #define FILELINEEDIT_H 3 | 4 | #include 5 | #include 6 | 7 | namespace Ui { 8 | class FileLineEdit; 9 | } 10 | 11 | class QLineEdit; 12 | 13 | class FileLineEdit : public QWidget 14 | { 15 | Q_OBJECT 16 | 17 | public: 18 | 19 | enum class Mode 20 | { 21 | NewFile, 22 | ExistingFile, 23 | ExistingDirectory 24 | }; 25 | 26 | explicit FileLineEdit(QWidget *parent = nullptr); 27 | ~FileLineEdit(); 28 | 29 | void setText(const QString& text); 30 | QString text() const; 31 | 32 | void setMode(Mode newMode) { mode = newMode; } 33 | void setInitialDirectoryDelegate(std::function delegate) { getInitialDirectory = delegate; } 34 | void setFilter(const QString& newFilter) { filter = newFilter; } 35 | 36 | private slots: 37 | 38 | void on_browseButton_pressed(); 39 | 40 | private: 41 | 42 | Ui::FileLineEdit *ui; 43 | QLineEdit* lineEdit = nullptr; 44 | 45 | Mode mode = Mode::ExistingFile; 46 | QString filter; 47 | std::function getInitialDirectory; 48 | }; 49 | 50 | #endif // FILELINEEDIT_H 51 | -------------------------------------------------------------------------------- /src/ui/widgets/KeySequenceButton.cpp: -------------------------------------------------------------------------------- 1 | #include "src/ui/widgets/KeySequenceButton.h" 2 | #include "src/ui/dialogs/KeySequenceDialog.h" 3 | 4 | KeySequenceButton::KeySequenceButton(QWidget* parent) 5 | : QPushButton(parent) 6 | { 7 | setAutoFillBackground(true); 8 | setKeySequence(QKeySequence()); 9 | 10 | connect(this, &QPushButton::clicked, this, &KeySequenceButton::onClick); 11 | } 12 | 13 | void KeySequenceButton::setKeySequence(QKeySequence newSeq) 14 | { 15 | _seq = newSeq; 16 | setText(newSeq.toString()); 17 | emit keySequenceChanged(_seq); 18 | } 19 | 20 | void KeySequenceButton::onClick() 21 | { 22 | KeySequenceDialog dialog(this); 23 | dialog.setKeySequence(_seq); 24 | if (dialog.exec() == QDialog::Accepted) 25 | setKeySequence(dialog.keySequence()); 26 | } 27 | -------------------------------------------------------------------------------- /src/ui/widgets/KeySequenceButton.h: -------------------------------------------------------------------------------- 1 | #ifndef KEYSEQUENCEBUTTON_H 2 | #define KEYSEQUENCEBUTTON_H 3 | 4 | #include "qpushbutton.h" 5 | 6 | class KeySequenceButton : public QPushButton 7 | { 8 | Q_OBJECT 9 | 10 | public: 11 | 12 | KeySequenceButton(QWidget* parent = nullptr); 13 | 14 | void setKeySequence(QKeySequence newSeq); 15 | QKeySequence keySequence() const { return _seq; } 16 | 17 | signals: 18 | 19 | void keySequenceChanged(const QKeySequence& newSeq); 20 | 21 | protected slots: 22 | 23 | void onClick(); 24 | 25 | protected: 26 | 27 | QKeySequence _seq; 28 | }; 29 | 30 | #endif // KEYSEQUENCEBUTTON_H 31 | -------------------------------------------------------------------------------- /src/ui/widgets/LineEditWithClearButton.cpp: -------------------------------------------------------------------------------- 1 | #include "src/ui/widgets/LineEditWithClearButton.h" 2 | #include "qtoolbutton.h" 3 | #include "qaction.h" 4 | #include "qstyle.h" 5 | 6 | LineEditWithClearButton::LineEditWithClearButton(QWidget* parent) 7 | : QLineEdit(parent) 8 | { 9 | auto icon = QPixmap(":/icons/widgets/edit-clear.png"); 10 | 11 | button = new QToolButton(this); 12 | button->setIcon(icon); 13 | button->setIconSize(icon.size()); 14 | button->setCursor(Qt::ArrowCursor); 15 | button->setStyleSheet("QToolButton { border: none; padding: 0px; }"); 16 | button->hide(); 17 | 18 | connect(button, &QToolButton::clicked, this, &LineEditWithClearButton::clear); 19 | connect(this, &LineEditWithClearButton::textChanged, [this](const QString& text) 20 | { 21 | button->setVisible(!text.isEmpty()); 22 | }); 23 | 24 | auto clearAction = new QAction(this); 25 | clearAction->setShortcut(QKeySequence("Esc")); 26 | clearAction->setShortcutContext(Qt::ShortcutContext::WidgetShortcut); 27 | connect(clearAction, &QAction::triggered, this, &LineEditWithClearButton::clear); 28 | addAction(clearAction); 29 | 30 | auto frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); 31 | setStyleSheet(QString("QLineEdit { padding-right: %1px; }").arg(button->sizeHint().width() + frameWidth + 1)); 32 | 33 | auto minSizeHint = minimumSizeHint(); 34 | setMinimumSize(std::max(minSizeHint.width(), button->sizeHint().width() + frameWidth * 2 + 2), 35 | std::max(minSizeHint.height(), button->sizeHint().height() + frameWidth * 2 + 2)); 36 | } 37 | 38 | void LineEditWithClearButton::resizeEvent(QResizeEvent* /*event*/) 39 | { 40 | auto sz = button->sizeHint(); 41 | auto frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); 42 | button->move(rect().right() - frameWidth - sz.width(), (rect().bottom() + 1 - sz.height()) / 2); 43 | } 44 | -------------------------------------------------------------------------------- /src/ui/widgets/LineEditWithClearButton.h: -------------------------------------------------------------------------------- 1 | #ifndef LINEEDITWITHCLEARBUTTON_H 2 | #define LINEEDITWITHCLEARBUTTON_H 3 | 4 | #include "qlineedit.h" 5 | 6 | // A QLineEdit with an inline clear button. Hitting Escape in the line edit clears it. 7 | // Based on http://labs.qt.nokia.com/2007/06/06/lineedit-with-a-clear-button/ 8 | 9 | class QToolButton; 10 | 11 | class LineEditWithClearButton : public QLineEdit 12 | { 13 | public: 14 | 15 | LineEditWithClearButton(QWidget* parent = nullptr); 16 | 17 | protected: 18 | 19 | virtual void resizeEvent(QResizeEvent* event) override; 20 | 21 | QToolButton* button = nullptr; 22 | }; 23 | 24 | #endif // LINEEDITWITHCLEARBUTTON_H 25 | -------------------------------------------------------------------------------- /src/ui/widgets/PenButton.h: -------------------------------------------------------------------------------- 1 | #ifndef PENBUTTON_H 2 | #define PENBUTTON_H 3 | 4 | #include "qpushbutton.h" 5 | #include "qpen.h" 6 | 7 | class PenButton : public QPushButton 8 | { 9 | Q_OBJECT 10 | 11 | public: 12 | 13 | PenButton(QWidget* parent = nullptr); 14 | 15 | const QPen& pen() const { return _pen; } 16 | void setPen(const QPen& newPen); 17 | 18 | signals: 19 | 20 | void penChanged(const QPen& newPen); 21 | 22 | protected slots: 23 | 24 | void onClick(); 25 | 26 | protected: 27 | 28 | QPen _pen; 29 | }; 30 | 31 | #endif // PENBUTTON_H 32 | -------------------------------------------------------------------------------- /src/util/DismissableMessage.cpp: -------------------------------------------------------------------------------- 1 | #include "src/util/DismissableMessage.h" 2 | #include "src/Application.h" 3 | #include "src/util/Settings.h" 4 | #include "qcryptographichash.h" 5 | #include "qsettings.h" 6 | #include "qmessagebox.h" 7 | 8 | /* 9 | Pops up a modal warning dialog, blocks until user dismisses 10 | 11 | app - ceed.Application, we get QSettings from there 12 | parentWidget - parent Qt widget of the spawned dialog 13 | title - window title of the spawned dialog 14 | message - message text, plain text 15 | token - this is used to remember whether user dismissed to never show again 16 | 17 | token is generated automatically from title and message if None is passed. 18 | For messages containing diagnostic info this may not be appropriate. The 19 | info inside will change, thus changing the token and user will see the 20 | same warning again. Passing a proper descriptive token is advised. 21 | */ 22 | void DismissableMessage::warning(QWidget* parent, const QString& title, const QString& message, QString token) 23 | { 24 | if (token.isEmpty()) 25 | { 26 | QCryptographicHash sha1(QCryptographicHash::Sha1); 27 | sha1.addData((title + message).toUtf8()); 28 | token = sha1.result(); 29 | } 30 | 31 | QString key = "messages/never_show_warning_" + token; 32 | 33 | auto&& settings = qobject_cast(qApp)->getSettings()->getQSettings(); 34 | if (settings->value(key, false).toBool()) 35 | { 36 | // User chose to never show this type of dialog again 37 | return; 38 | } 39 | 40 | QMessageBox dialog(parent); 41 | dialog.setIcon(QMessageBox::Warning); 42 | dialog.setWindowTitle(title); 43 | dialog.setText(message); 44 | dialog.addButton("Ok", QMessageBox::AcceptRole); 45 | dialog.addButton("Never show again", QMessageBox::RejectRole); 46 | 47 | if (dialog.exec() == QMessageBox::RejectRole) 48 | settings->setValue(key, true); 49 | } 50 | -------------------------------------------------------------------------------- /src/util/DismissableMessage.h: -------------------------------------------------------------------------------- 1 | #ifndef DISMISSABLEMESSAGE_H 2 | #define DISMISSABLEMESSAGE_H 3 | 4 | #include "qwidget.h" 5 | 6 | // Provides messages that users can dismiss (choose to never show again) 7 | 8 | namespace DismissableMessage 9 | { 10 | void warning(QWidget* parent, const QString& title, const QString& message, QString token = QString()); 11 | }; 12 | 13 | #endif // DISMISSABLEMESSAGE_H 14 | -------------------------------------------------------------------------------- /src/util/RecentlyUsed.h: -------------------------------------------------------------------------------- 1 | #ifndef RECENTLYUSED_H 2 | #define RECENTLYUSED_H 3 | 4 | #include "qstring.h" 5 | #include "qmenu.h" 6 | 7 | // Implements reusable functionality for "recently used" lists/menus. 8 | // Can be used to store pointers to Items like files and images 9 | // for later reuse within the application. 10 | 11 | // Stefan Stammberger is the author of the original python implementation 12 | 13 | // This class can be used to store pointers to Items like files and images 14 | // for later reuse within the application. 15 | class RecentlyUsed : public QObject 16 | { 17 | Q_OBJECT 18 | 19 | public: 20 | 21 | RecentlyUsed(const QString& sectionID, QObject* parent = nullptr); 22 | 23 | virtual void addRecentlyUsed(const QString& name); 24 | virtual bool removeRecentlyUsed(const QString& name); 25 | void getRecentlyUsed(QStringList& outList) const; 26 | 27 | public slots: 28 | 29 | virtual void clearRecentlyUsed(); 30 | 31 | signals: 32 | 33 | void triggered(const QString& itemName); 34 | 35 | protected: 36 | 37 | QString _sectionID; 38 | int _maxItems = 10; 39 | }; 40 | 41 | // This class can be used to manage a Qt Menu entry to items 42 | class RecentlyUsedMenuEntry : public RecentlyUsed 43 | { 44 | Q_OBJECT 45 | 46 | public: 47 | 48 | RecentlyUsedMenuEntry(const QString& sectionID, QObject* parent = nullptr); 49 | 50 | void setParentMenu(QMenu* menu); 51 | virtual void addRecentlyUsed(const QString& name) override; 52 | virtual bool removeRecentlyUsed(const QString& name) override; 53 | 54 | public slots: 55 | 56 | virtual void clearRecentlyUsed() override; 57 | 58 | protected slots: 59 | 60 | void recentItemActionTriggered(); 61 | 62 | protected: 63 | 64 | void updateMenu(); 65 | 66 | QMenu* _menu = nullptr; 67 | }; 68 | 69 | #endif // RECENTLYUSED_H 70 | -------------------------------------------------------------------------------- /src/util/Settings.h: -------------------------------------------------------------------------------- 1 | #ifndef SETTINGS_H 2 | #define SETTINGS_H 3 | 4 | #include "qvariant.h" 5 | #include "vector" 6 | #include 7 | 8 | // Application global settings system 9 | 10 | class QSettings; 11 | class SettingsEntry; 12 | typedef std::unique_ptr SettingsCategoryPtr; 13 | 14 | class Settings 15 | { 16 | public: 17 | 18 | Settings(QSettings* qsettings); 19 | ~Settings(); 20 | 21 | SettingsCategory* createCategory(const QString& name, const QString& label); 22 | SettingsCategory* getCategory(const QString& name) const; 23 | const std::vector& getCategories() const { return categories; } 24 | 25 | SettingsEntry* getEntry(const QString& path) const; 26 | SettingsEntry* getEntry(QStringList pathSplitted) const; 27 | QVariant getEntryValue(const QString& path, const QVariant& defaultValue = QVariant()) const; 28 | 29 | QString getPath() const { return "settings"; } 30 | QSettings* getQSettings() const { return _qsettings; } 31 | 32 | void applyChanges(); 33 | void discardChanges(); 34 | void load(); 35 | void store(); 36 | 37 | void sort(bool deep = true); 38 | 39 | void markRequiresRestart(bool requires = true) { _changesRequireRestart = requires; } 40 | bool changesRequireRestart() const { return _changesRequireRestart; } 41 | 42 | protected: 43 | 44 | QSettings* _qsettings = nullptr; 45 | std::vector categories; 46 | bool _changesRequireRestart = false; 47 | }; 48 | 49 | #endif // SETTINGS_H 50 | -------------------------------------------------------------------------------- /src/util/SettingsCategory.h: -------------------------------------------------------------------------------- 1 | #ifndef SETTINGSCATEGORY_H 2 | #define SETTINGSCATEGORY_H 3 | 4 | #include "qstring.h" 5 | #include "vector" 6 | #include 7 | 8 | // Groups sections, is usually represented by a tab in the interface 9 | 10 | class Settings; 11 | typedef std::unique_ptr SettingsEntryPtr; 12 | typedef std::unique_ptr SettingsSectionPtr; 13 | 14 | class SettingsCategory 15 | { 16 | public: 17 | 18 | SettingsCategory(Settings& settings, const QString& name, const QString& label, int sortingWeight = 0); 19 | ~SettingsCategory(); 20 | 21 | SettingsSection* createSection(const QString& name, const QString& label, int sortingWeight = 0); 22 | SettingsSection* getSection(const QString& name) const; 23 | const std::vector& getSections() const { return sections; } 24 | 25 | SettingsEntry* addEntry(SettingsEntryPtr&& entry); 26 | SettingsEntry* getEntry(const QString& path) const; 27 | SettingsEntry* getEntry(const QStringList& pathSplitted) const; 28 | 29 | const QString& getName() const { return _name; } 30 | QString getLabel() const { return (isModified() ? "* " : "") + _label; } 31 | QString getPath() const; 32 | Settings& getSettings() const { return _settings; } 33 | int getSortingWeight() const { return _sortingWeight; } 34 | 35 | bool isModified() const; 36 | 37 | void applyChanges(); 38 | void discardChanges(); 39 | void load(); 40 | void store(); 41 | 42 | void sort(bool deep = true); 43 | 44 | protected: 45 | 46 | Settings& _settings; 47 | QString _name; 48 | QString _label; 49 | int _sortingWeight = 0; 50 | 51 | std::vector sections; 52 | }; 53 | 54 | #endif // SETTINGSCATEGORY_H 55 | -------------------------------------------------------------------------------- /src/util/SettingsSection.h: -------------------------------------------------------------------------------- 1 | #ifndef SETTINGSSECTION_H 2 | #define SETTINGSSECTION_H 3 | 4 | #include "qstring.h" 5 | #include "vector" 6 | #include 7 | 8 | // Groups entries, is usually represented by a group box in the interface 9 | 10 | class SettingsCategory; 11 | typedef std::unique_ptr SettingsEntryPtr; 12 | 13 | class SettingsSection 14 | { 15 | public: 16 | 17 | SettingsSection(SettingsCategory& category, const QString& name, const QString& label, int sortingWeight = 0); 18 | ~SettingsSection(); 19 | 20 | SettingsEntry* addEntry(SettingsEntryPtr&& entry); 21 | SettingsEntry* getEntry(const QString& name) const; 22 | const std::vector& getEntries() const { return entries; } 23 | 24 | const QString& getName() const { return _name; } 25 | QString getLabel() const { return (isModified() ? "* " : "") + _label; } 26 | QString getPath() const; 27 | SettingsCategory& getCategory() const { return _category; } 28 | int getSortingWeight() const { return _sortingWeight; } 29 | 30 | bool isModified() const; 31 | 32 | void applyChanges(); 33 | void discardChanges(); 34 | void load(); 35 | void store(); 36 | 37 | void sort(); 38 | 39 | protected: 40 | 41 | SettingsCategory& _category; 42 | QString _name; 43 | QString _label; 44 | int _sortingWeight = 0; 45 | 46 | std::vector entries; 47 | }; 48 | 49 | #endif // SETTINGSSECTION_H 50 | -------------------------------------------------------------------------------- /src/util/Utils.h: -------------------------------------------------------------------------------- 1 | #ifndef UTILS_H 2 | #define UTILS_H 3 | 4 | #include "qbrush.h" 5 | 6 | namespace Utils 7 | { 8 | 9 | QBrush getCheckerboardBrush(int halfWidth = 5, int halfHeight = 5, QColor firstColour = Qt::darkGray, QColor secondColour = Qt::gray); 10 | void fillTransparencyWithChecker(QImage& image, int halfWidth = 5, int halfHeight = 5, QColor firstColour = Qt::darkGray, QColor secondColour = Qt::gray); 11 | bool showInGraphicalShell(const QString& path); 12 | void registerFileAssociation(const QString& extension, const QString& desc = {}, const QString& mimeType = {}, const QString& perceivedType = {}, int iconIndex = -1); 13 | bool isInternetConnected(); 14 | bool unzip(const QString& srcFilePath, const QString& dstFolderPath); //???QIODevice src? 15 | 16 | }; 17 | 18 | #endif // UTILS_H 19 | -------------------------------------------------------------------------------- /ui/layout/CreateWidgetDockWidget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | CreateWidgetDockWidget 4 | 5 | 6 | false 7 | 8 | 9 | 10 | 0 11 | 0 12 | 290 13 | 300 14 | 15 | 16 | 17 | Create new Widget 18 | 19 | 20 | 21 | 22 | 0 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | Name 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | WidgetTypeTreeWidget 42 | QTreeWidget 43 |
src/ui/layout/WidgetTypeTreeWidget.h
44 |
45 |
46 | 47 | 48 |
49 | -------------------------------------------------------------------------------- /ui/widgets/BitmapEditorWidget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | BitmapEditorWidget 4 | 5 | 6 | 7 | 0 8 | 0 9 | 489 10 | 384 11 | 12 | 13 | 14 | Form 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | Launch external editor 31 | 32 | 33 | false 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /ui/widgets/FileLineEdit.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | FileLineEdit 4 | 5 | 6 | 7 | 0 8 | 0 9 | 400 10 | 41 11 | 12 | 13 | 14 | 15 | 0 16 | 0 17 | 18 | 19 | 20 | Form 21 | 22 | 23 | 24 | 0 25 | 26 | 27 | 28 | 29 | Click the button to browse filesystem 30 | 31 | 32 | 33 | 34 | 35 | 36 | Browse file system 37 | 38 | 39 | ... 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | --------------------------------------------------------------------------------