summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Owens <doctormo@gmail.com>2017-06-23 15:42:10 +0000
committerMartin Owens <doctormo@gmail.com>2017-06-23 15:42:10 +0000
commitd010732ae4710cd01b7fbe335663a0920055adbd (patch)
tree6162effd15c84b781346d1fe9f7e20bf1c7c7957
parentOpps! I had forgotten to increment the loop counter :-P (diff)
parentAdd menus xml in preparation to cleanup (diff)
downloadinkscape-d010732ae4710cd01b7fbe335663a0920055adbd.tar.gz
inkscape-d010732ae4710cd01b7fbe335663a0920055adbd.zip
Merge branch 'ui-files-for-ui-xml'
-rw-r--r--share/ui/CMakeLists.txt2
-rw-r--r--share/ui/commands-toolbar.ui38
-rw-r--r--share/ui/menus.xml304
-rw-r--r--share/ui/select-toolbar.ui383
-rw-r--r--share/ui/snap-toolbar.ui28
-rw-r--r--share/ui/tool-toolbar.ui39
-rw-r--r--src/io/resource.cpp36
-rw-r--r--src/io/resource.h2
-rw-r--r--src/widgets/toolbox.cpp563
9 files changed, 875 insertions, 520 deletions
diff --git a/share/ui/CMakeLists.txt b/share/ui/CMakeLists.txt
index 8cd974ad3..80bcd1b5d 100644
--- a/share/ui/CMakeLists.txt
+++ b/share/ui/CMakeLists.txt
@@ -1,3 +1,3 @@
-file(GLOB _FILES "*.xml" "*.rc" "*.css")
+file(GLOB _FILES "*.xml" "*.rc" "*.css" "*.ui")
install(FILES ${_FILES} DESTINATION ${INKSCAPE_SHARE_INSTALL}/ui)
diff --git a/share/ui/commands-toolbar.ui b/share/ui/commands-toolbar.ui
new file mode 100644
index 000000000..c2b1ed965
--- /dev/null
+++ b/share/ui/commands-toolbar.ui
@@ -0,0 +1,38 @@
+<ui>
+ <toolbar name='CommandsToolbar'>
+ <toolitem action='FileNew' />
+ <toolitem action='FileOpen' />
+ <toolitem action='FileSave' />
+ <toolitem action='FilePrint' />
+ <separator />
+ <toolitem action='FileImport' />
+ <toolitem action='DialogExport' />
+ <separator />
+ <toolitem action='EditUndo' />
+ <toolitem action='EditRedo' />
+ <separator />
+ <toolitem action='EditCopy' />
+ <toolitem action='EditCut' />
+ <toolitem action='EditPaste' />
+ <separator />
+ <toolitem action='ZoomSelection' />
+ <toolitem action='ZoomDrawing' />
+ <toolitem action='ZoomPage' />
+ <separator />
+ <toolitem action='EditDuplicate' />
+ <toolitem action='EditClone' />
+ <toolitem action='EditUnlinkClone' />
+ <separator />
+ <toolitem action='SelectionGroup' />
+ <toolitem action='SelectionUnGroup' />
+ <separator />
+ <toolitem action='DialogFillStroke' />
+ <toolitem action='DialogText' />
+ <toolitem action='DialogLayers' />
+ <toolitem action='DialogXMLEditor' />
+ <toolitem action='DialogAlignDistribute' />
+ <separator />
+ <toolitem action='DialogDocumentProperties' />
+ <toolitem action='DialogPreferences' />
+ </toolbar>
+</ui>
diff --git a/share/ui/menus.xml b/share/ui/menus.xml
new file mode 100644
index 000000000..2880a7c67
--- /dev/null
+++ b/share/ui/menus.xml
@@ -0,0 +1,304 @@
+<inkscape version="1.0"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
+
+ <submenu name="_File">
+ <verb verb-id="FileNew" />
+ <verb verb-id="FileTemplates" />
+ <verb verb-id="FileOpen" />
+ <recent-file-list/>
+ <verb verb-id="FileRevert" />
+ <verb verb-id="FileSave" />
+ <verb verb-id="FileSaveAs" />
+ <verb verb-id="FileSaveACopy" />
+ <separator/>
+ <verb verb-id="FileImport" />
+ <verb verb-id="DialogExport" />
+ <verb verb-id="FileImportFromOCAL" />
+ <!--verb verb-id="FileExportToOCAL" /-->
+ <separator/>
+ <verb verb-id="FilePrint" />
+ <separator/>
+ <verb verb-id="FileVacuum" />
+ <separator/>
+ <verb verb-id="DialogDocumentProperties" />
+ <!--verb verb-id="DialogMetadata" /-->
+ <separator/>
+ <verb verb-id="FileClose" />
+ <verb verb-id="FileQuit" />
+ </submenu>
+ <submenu name="_Edit">
+ <verb verb-id="EditUndo" />
+ <verb verb-id="EditRedo" />
+ <verb verb-id="DialogUndoHistory" />
+ <separator/>
+ <verb verb-id="EditCut" />
+ <verb verb-id="EditCopy" />
+ <verb verb-id="EditPaste" />
+ <verb verb-id="EditPasteInPlace" />
+ <verb verb-id="EditPasteStyle" />
+ <submenu name="Paste Si_ze">
+ <verb verb-id="EditPasteSize" />
+ <verb verb-id="EditPasteWidth" />
+ <verb verb-id="EditPasteHeight" />
+ <verb verb-id="EditPasteSizeSeparately" />
+ <verb verb-id="EditPasteWidthSeparately" />
+ <verb verb-id="EditPasteHeightSeparately" />
+ </submenu>
+ <separator/>
+ <verb verb-id="DialogFind" />
+ <separator/>
+ <verb verb-id="EditDuplicate" />
+ <submenu name="Clo_ne">
+ <verb verb-id="EditClone" />
+ <verb verb-id="DialogClonetiler" />
+ <verb verb-id="EditUnlinkClone" />
+ <verb verb-id="EditUnlinkCloneRecursive" />
+ <verb verb-id="EditRelinkClone" />
+ <verb verb-id="EditCloneSelectOriginal" />
+ <verb verb-id="EditCloneOriginalPathLPE" />
+ </submenu>
+ <verb verb-id="SelectionCreateBitmap" />
+ <separator/>
+ <verb verb-id="EditDelete" />
+ <separator/>
+ <verb verb-id="EditSelectAll" />
+ <verb verb-id="EditSelectAllInAllLayers" />
+ <submenu name="Select Sa_me">
+ <verb verb-id="EditSelectSameFillStroke" />
+ <verb verb-id="EditSelectSameFillColor" />
+ <verb verb-id="EditSelectSameStrokeColor" />
+ <verb verb-id="EditSelectSameStrokeStyle" />
+ <verb verb-id="EditSelectSameObjectType" />
+ </submenu>
+ <verb verb-id="EditInvert" />
+ <verb verb-id="EditDeselect" />
+ <separator/>
+ <verb verb-id="FitCanvasToSelectionOrDrawing" />
+ <separator/>
+ <verb verb-id="EditGuidesAroundPage" />
+ <verb verb-id="EditGuidesToggleLock" check="yes" />
+ <verb verb-id="EditRemoveAllGuides" />
+ <separator/>
+ <verb verb-id="DialogXMLEditor" />
+ <separator/>
+ <verb verb-id="DialogInput" />
+ <verb verb-id="DialogPreferences" />
+ </submenu>
+ <submenu name="_View">
+ <submenu name="_Zoom">
+ <verb verb-id="ZoomIn" />
+ <verb verb-id="ZoomOut" />
+ <separator/>
+ <verb verb-id="Zoom1:0" />
+ <verb verb-id="Zoom1:2" />
+ <verb verb-id="Zoom2:1" />
+ <separator/>
+ <verb verb-id="ZoomSelection" />
+ <verb verb-id="ZoomDrawing" />
+ <verb verb-id="ZoomPage" />
+ <verb verb-id="ZoomPageWidth" />
+ <separator/>
+ <verb verb-id="ZoomPrev" />
+ <verb verb-id="ZoomNext" />
+ </submenu>
+ <submenu name="_Display mode">
+ <verb verb-id="ViewModeToggle"/>
+ <verb verb-id="ViewModeNormal" radio="yes" default="yes"/>
+ <verb verb-id="ViewModeNoFilters" radio="yes"/>
+ <verb verb-id="ViewModeOutline" radio="yes"/>
+ <!--Better location in menu needs to be found-->
+ <!--verb verb-id="ViewModePrintColorsPreview" radio="yes"/-->
+ <!--verb verb-id="DialogPrintColorsPreview" /-->
+ </submenu>
+ <submenu name="_Color display mode">
+ <verb verb-id="ViewColorModeToggle"/>
+ <verb verb-id="ViewColorModeNormal" radio="yes" default="yes"/>
+ <verb verb-id="ViewColorModeGrayscale" radio="yes"/>
+ <!--Better location in menu needs to be found-->
+ <!--verb verb-id="ViewColorModePrintColorsPreview" radio="yes"/-->
+ <!--verb verb-id="DialogPrintColorsPreview" /-->
+ </submenu>
+ <separator/>
+ <verb verb-id="ToggleGrid" check="yes" />
+ <verb verb-id="ToggleGuides" check="yes" />
+ <verb verb-id="ViewCmsToggle" check="yes" />
+ <separator/>
+ <submenu name="Sh_ow/Hide">
+ <objects-checkboxes/>
+ </submenu>
+ <verb verb-id="DialogsToggle" />
+ <separator/>
+ <verb verb-id="DialogSwatches" />
+ <verb verb-id="DialogDebug" />
+ <separator/>
+ <verb verb-id="PrevWindow" />
+ <verb verb-id="NextWindow" />
+ <separator/>
+ <verb verb-id="ViewIconPreview" />
+ <verb verb-id="ViewNew" />
+ <separator/>
+ <verb verb-id="FullScreen" />
+ <separator/>
+ <task-checkboxes/>
+ <!-- Not quite ready to be in the menus.
+ <verb verb-id="FocusToggle" /-->
+ </submenu>
+ <submenu name="_Layer">
+ <verb verb-id="LayerNew" />
+ <verb verb-id="LayerRename" />
+ <separator/>
+ <verb verb-id="LayerToggleHide" />
+ <verb verb-id="LayerToggleLock" />
+ <separator/>
+ <verb verb-id="LayerNext" />
+ <verb verb-id="LayerPrev" />
+ <separator/>
+ <verb verb-id="LayerMoveToNext" />
+ <verb verb-id="LayerMoveToPrev" />
+ <verb verb-id="LayerMoveTo" />
+ <separator/>
+ <verb verb-id="LayerRaise" />
+ <verb verb-id="LayerLower" />
+ <verb verb-id="LayerToTop" />
+ <verb verb-id="LayerToBottom" />
+ <separator/>
+ <verb verb-id="LayerDuplicate" />
+ <verb verb-id="LayerDelete" />
+ <separator/>
+ <verb verb-id="DialogLayers" />
+ </submenu>
+ <submenu name="_Object">
+ <verb verb-id="DialogObjects" />
+ <verb verb-id="DialogTags" />
+ <verb verb-id="DialogStyle" />
+ <separator/>
+ <verb verb-id="DialogFillStroke" />
+ <verb verb-id="DialogObjectProperties" />
+ <verb verb-id="DialogSymbols" />
+ <separator/>
+ <verb verb-id="SelectionGroup" />
+ <verb verb-id="SelectionUnGroup" />
+ <verb verb-id="SelectionUnGroupPopSelection" />
+ <separator/>
+ <submenu name="Cli_p">
+ <verb verb-id="ObjectSetClipPath" />
+ <verb verb-id="ObjectUnSetClipPath" />
+ </submenu>
+ <submenu name="Mas_k">
+ <verb verb-id="ObjectSetMask" />
+ <verb verb-id="ObjectUnSetMask" />
+ </submenu>
+ <submenu name="Patter_n">
+ <verb verb-id="ObjectsToPattern" />
+ <verb verb-id="ObjectsFromPattern" />
+ </submenu>
+ <verb verb-id="ObjectsToMarker" />
+ <verb verb-id="ObjectsToGuides" />
+ <separator/>
+ <verb verb-id="SelectionRaise" />
+ <verb verb-id="SelectionLower" />
+ <verb verb-id="SelectionToFront" />
+ <verb verb-id="SelectionToBack" />
+ <separator/>
+ <verb verb-id="ObjectRotate90" />
+ <verb verb-id="ObjectRotate90CCW" />
+ <verb verb-id="ObjectFlipHorizontally" />
+ <verb verb-id="ObjectFlipVertically" />
+ <separator/>
+ <verb verb-id="UnhideAll" />
+ <verb verb-id="UnlockAll" />
+ <separator/>
+ <verb verb-id="DialogTransform" />
+ <verb verb-id="DialogAlignDistribute" />
+ <verb verb-id="DialogArrange" />
+ <verb verb-id="DialogPrototype" />
+ </submenu>
+ <submenu name="_Path">
+ <verb verb-id="ObjectToPath" />
+ <verb verb-id="StrokeToPath" />
+
+#if HAVE_POTRACE
+ <verb verb-id="SelectionTrace" />
+#endif
+
+ <verb verb-id="SelectionPixelArt" />
+ <separator/>
+ <verb verb-id="SelectionUnion" />
+ <verb verb-id="SelectionDiff" />
+ <verb verb-id="SelectionIntersect" />
+ <verb verb-id="SelectionSymDiff" />
+ <verb verb-id="SelectionDivide" />
+ <verb verb-id="SelectionCutPath" />
+ <separator/>
+ <verb verb-id="SelectionCombine" />
+ <verb verb-id="SelectionBreakApart" />
+ <separator/>
+ <verb verb-id="SelectionInset" />
+ <verb verb-id="SelectionOffset" />
+ <verb verb-id="SelectionDynOffset" />
+ <verb verb-id="SelectionLinkedOffset" />
+ <separator/>
+ <verb verb-id="SelectionSimplify" />
+ <verb verb-id="SelectionReverse" />
+ <separator/>
+ <verb verb-id="DialogLivePathEffect" />
+ <verb verb-id="PasteLivePathEffect" />
+ <verb verb-id="RemoveLivePathEffect" />
+ </submenu>
+ <submenu name="_Text">
+ <verb verb-id="DialogText" />
+ <verb verb-id="DialogSVGFonts" />
+ <verb verb-id="DialogGlyphs" />
+ <separator/>
+ <verb verb-id="SelectionTextToPath" />
+ <verb verb-id="SelectionTextFromPath" />
+ <separator/>
+ <verb verb-id="ObjectFlowText" />
+ <verb verb-id="ObjectUnFlowText" />
+ <verb verb-id="ObjectFlowtextToText" />
+ <separator/>
+ <verb verb-id="SelectionTextRemoveKerns" />
+ <!--ifdef HAVE_ASPELL-->
+ <separator/>
+ <verb verb-id="DialogSpellcheck" />
+ </submenu>
+ <submenu name="Filter_s">
+ <filters-list/>
+ <separator/>
+ <verb verb-id="DialogFilterEffects" />
+ <verb verb-id="RemoveFilter" />
+ </submenu>
+ <submenu name="Exte_nsions">
+ <verb verb-id="EffectLast" />
+ <verb verb-id="EffectLastPref" />
+ <separator/>
+ <effects-list/>
+ </submenu>
+ <submenu name="_Help">
+ <verb verb-id="org.inkscape.help.manual" />
+ <verb verb-id="org.inkscape.help.keys" />
+ <verb verb-id="org.inkscape.help.askaquestion" />
+ <submenu name="Tutorials">
+ <verb verb-id="TutorialsBasic" />
+ <verb verb-id="TutorialsShapes" />
+ <verb verb-id="TutorialsAdvanced" />
+ <verb verb-id="TutorialsTracing" />
+ <verb verb-id="TutorialsTracingPixelArt" />
+ <verb verb-id="TutorialsCalligraphy" />
+ <verb verb-id="TutorialsInterpolate" />
+ <verb verb-id="TutorialsDesign" />
+ <verb verb-id="TutorialsTips" />
+ </submenu>
+ <!--verb verb-id="org.inkscape.dialogs.extensioneditor" /-->
+ <verb verb-id="org.inkscape.help.commandline" />
+ <verb verb-id="org.inkscape.help.faq" />
+ <verb verb-id="org.inkscape.help.relnotes" />
+ <verb verb-id="org.inkscape.help.reportabug" />
+ <verb verb-id="org.inkscape.help.svgspec" />
+ <separator/>
+ <verb verb-id="HelpAboutMemory" />
+ <verb verb-id="HelpAbout" />
+ <!--verb verb-id="ShowLicense" /-->
+ </submenu>
+</inkscape>
diff --git a/share/ui/select-toolbar.ui b/share/ui/select-toolbar.ui
new file mode 100644
index 000000000..c9f488b87
--- /dev/null
+++ b/share/ui/select-toolbar.ui
@@ -0,0 +1,383 @@
+<ui>
+ <toolbar name='SelectToolbar'>
+ <toolitem action='EditSelectAll' />
+ <toolitem action='EditSelectAllInAllLayers' />
+ <toolitem action='EditDeselect' />
+ <separator />
+ <toolitem action='ObjectRotate90CCW' />
+ <toolitem action='ObjectRotate90' />
+ <toolitem action='ObjectFlipHorizontally' />
+ <toolitem action='ObjectFlipVertically' />
+ <separator />
+ <toolitem action='SelectionToBack' />
+ <toolitem action='SelectionLower' />
+ <toolitem action='SelectionRaise' />
+ <toolitem action='SelectionToFront' />
+ <separator />
+ <toolitem action='XAction' />
+ <toolitem action='YAction' />
+ <toolitem action='WidthAction' />
+ <toolitem action='LockAction' />
+ <toolitem action='HeightAction' />
+ <toolitem action='UnitsAction' />
+ <separator />
+ <toolitem action='transform_stroke' />
+ <toolitem action='transform_corners' />
+ <toolitem action='transform_gradient' />
+ <toolitem action='transform_pattern' />
+ </toolbar>
+
+ <toolbar name='NodeToolbar'>
+ <separator />
+ <toolitem action='NodeInsertAction'>
+ <menu action='NodeInsertActionMenu'>
+ <menuitem action='NodeInsertActionMinX' />
+ <menuitem action='NodeInsertActionMaxX' />
+ <menuitem action='NodeInsertActionMinY' />
+ <menuitem action='NodeInsertActionMaxY' />
+ </menu>
+ </toolitem>
+ <toolitem action='NodeDeleteAction' />
+ <separator />
+ <toolitem action='NodeJoinAction' />
+ <toolitem action='NodeBreakAction' />
+ <separator />
+ <toolitem action='NodeJoinSegmentAction' />
+ <toolitem action='NodeDeleteSegmentAction' />
+ <separator />
+ <toolitem action='NodeCuspAction' />
+ <toolitem action='NodeSmoothAction' />
+ <toolitem action='NodeSymmetricAction' />
+ <toolitem action='NodeAutoAction' />
+ <separator />
+ <toolitem action='NodeLineAction' />
+ <toolitem action='NodeCurveAction' />
+ <separator />
+ <toolitem action='ObjectToPath' />
+ <toolitem action='StrokeToPath' />
+ <separator />
+ <toolitem action='NodeXAction' />
+ <toolitem action='NodeYAction' />
+ <toolitem action='NodeUnitsAction' />
+ <separator />
+ <toolitem action='ObjectEditClipPathAction' />
+ <toolitem action='ObjectEditMaskPathAction' />
+ <toolitem action='EditNextPathEffectParameter' />
+ <separator />
+ <toolitem action='NodesShowTransformHandlesAction' />
+ <toolitem action='NodesShowHandlesAction' />
+ <toolitem action='NodesShowHelperpath' />
+ </toolbar>
+
+ <toolbar name='TweakToolbar'>
+ <toolitem action='TweakWidthAction' />
+ <separator />
+ <toolitem action='TweakForceAction' />
+ <toolitem action='TweakPressureAction' />
+ <separator />
+ <toolitem action='TweakModeAction' />
+ <separator />
+ <toolitem action='TweakFidelityAction' />
+ <separator />
+ <toolitem action='TweakChannelsLabel' />
+ <toolitem action='TweakDoH' />
+ <toolitem action='TweakDoS' />
+ <toolitem action='TweakDoL' />
+ <toolitem action='TweakDoO' />
+ </toolbar>
+
+ <toolbar name='SprayToolbar'>
+ <toolitem action='SprayModeAction' />
+ <separator />
+ <toolitem action='SprayWidthAction' />
+ <toolitem action='SprayPressureWidthAction' />
+ <toolitem action='SprayPopulationAction' />
+ <toolitem action='SprayPressurePopulationAction' />
+ <separator />
+ <toolitem action='SprayRotationAction' />
+ <toolitem action='SprayScaleAction' />
+ <toolitem action='SprayPressureScaleAction' />
+ <separator />
+ <toolitem action='SprayStandard_deviationAction' />
+ <toolitem action='SprayMeanAction' />
+ <separator />
+ <toolitem action='SprayOverNoTransparentAction' />
+ <toolitem action='SprayOverTransparentAction' />
+ <toolitem action='SprayPickNoOverlapAction' />
+ <toolitem action='SprayNoOverlapAction' />
+ <toolitem action='SprayToolOffsetAction' />
+ <separator />
+ <toolitem action='SprayPickColorAction' />
+ <toolitem action='SprayPickFillAction' />
+ <toolitem action='SprayPickStrokeAction' />
+ <toolitem action='SprayPickInverseValueAction' />
+ <toolitem action='SprayPickCenterAction' />
+ </toolbar>
+
+ <toolbar name='ZoomToolbar'>
+ <toolitem action='ZoomIn' />
+ <toolitem action='ZoomOut' />
+ <separator />
+ <toolitem action='Zoom1:0' />
+ <toolitem action='Zoom1:2' />
+ <toolitem action='Zoom2:1' />
+ <separator />
+ <toolitem action='ZoomSelection' />
+ <toolitem action='ZoomDrawing' />
+ <toolitem action='ZoomPage' />
+ <toolitem action='ZoomPageWidth' />
+ <separator />
+ <toolitem action='ZoomPrev' />
+ <toolitem action='ZoomNext' />
+ </toolbar>
+
+ <toolbar name='MeasureToolbar'>
+ <toolitem action='MeasureFontSizeAction' />
+ <separator />
+ <toolitem action='MeasurePrecisionAction' />
+ <separator />
+ <toolitem action='MeasureScaleAction' />
+ <separator />
+ <toolitem action='measure_units_label' />
+ <toolitem action='MeasureUnitsAction' />
+ <toolitem action='MeasureIgnore1stAndLast' />
+ <toolitem action='MeasureInBettween' />
+ <toolitem action='MeasureShowHidden' />
+ <toolitem action='MeasureAllLayers' />
+ <toolitem action='MeasureReverse' />
+ <toolitem action='MeasureToPhantom' />
+ <toolitem action='MeasureToGuides' />
+ <toolitem action='MeasureToItem' />
+ <toolitem action='MeasureMarkDimension' />
+ <toolitem action='MeasureOffsetAction' />
+ </toolbar>
+
+ <toolbar name='StarToolbar'>
+ <separator />
+ <toolitem action='StarStateAction' />
+ <separator />
+ <toolitem action='FlatAction' />
+ <separator />
+ <toolitem action='MagnitudeAction' />
+ <toolitem action='SpokeAction' />
+ <toolitem action='RoundednessAction' />
+ <toolitem action='RandomizationAction' />
+ <separator />
+ <toolitem action='StarResetAction' />
+ </toolbar>
+
+ <toolbar name='RectToolbar'>
+ <toolitem action='RectStateAction' />
+ <toolitem action='RectWidthAction' />
+ <toolitem action='RectHeightAction' />
+ <toolitem action='RadiusXAction' />
+ <toolitem action='RadiusYAction' />
+ <toolitem action='RectUnitsAction' />
+ <separator />
+ <toolitem action='RectResetAction' />
+ </toolbar>
+
+ <toolbar name='3DBoxToolbar'>
+ <toolitem action='3DBoxAngleXAction' />
+ <toolitem action='3DBoxVPXStateAction' />
+ <separator />
+ <toolitem action='3DBoxAngleYAction' />
+ <toolitem action='3DBoxVPYStateAction' />
+ <separator />
+ <toolitem action='3DBoxAngleZAction' />
+ <toolitem action='3DBoxVPZStateAction' />
+ </toolbar>
+
+ <toolbar name='SpiralToolbar'>
+ <toolitem action='SpiralStateAction' />
+ <toolitem action='SpiralRevolutionAction' />
+ <toolitem action='SpiralExpansionAction' />
+ <toolitem action='SpiralT0Action' />
+ <separator />
+ <toolitem action='SpiralResetAction' />
+ </toolbar>
+
+ <toolbar name='PenToolbar'>
+ <toolitem action='FreehandModeActionPen' />
+ <separator />
+ <toolitem action='SetPenShapeAction'/>
+ </toolbar>
+
+ <toolbar name='PencilToolbar'>
+ <toolitem action='FreehandModeActionPencil' />
+ <separator />
+ <toolitem action='PencilToleranceAction' />
+ <toolitem action='PencilLpeSimplify' />
+ <toolitem action='PencilLpeSimplifyFlatten' />
+ <separator />
+ <toolitem action='PencilResetAction' />
+ <separator />
+ <toolitem action='SetPencilShapeAction'/>
+ </toolbar>
+
+ <toolbar name='CalligraphyToolbar'>
+ <separator />
+ <toolitem action='SetProfileAction'/>
+ <toolitem action='ProfileEditAction'/>
+ <separator />
+ <toolitem action='CalligraphyWidthAction' />
+ <toolitem action='PressureAction' />
+ <toolitem action='TraceAction' />
+ <toolitem action='ThinningAction' />
+ <separator />
+ <toolitem action='AngleAction' />
+ <toolitem action='TiltAction' />
+ <toolitem action='FixationAction' />
+ <separator />
+ <toolitem action='CapRoundingAction' />
+ <separator />
+ <toolitem action='TremorAction' />
+ <toolitem action='WiggleAction' />
+ <toolitem action='MassAction' />
+ <separator />
+ </toolbar>
+
+ <toolbar name='ArcToolbar'>
+ <toolitem action='ArcStateAction' />
+ <separator />
+ <toolitem action='ArcStartAction' />
+ <toolitem action='ArcEndAction' />
+ <separator />
+ <toolitem action='ArcOpenAction' />
+ <separator />
+ <toolitem action='ArcResetAction' />
+ <separator />
+ </toolbar>
+
+ <toolbar name='PaintbucketToolbar'>
+ <toolitem action='ChannelsAction' />
+ <separator />
+ <toolitem action='ThresholdAction' />
+ <separator />
+ <toolitem action='OffsetAction' />
+ <toolitem action='PaintbucketUnitsAction' />
+ <separator />
+ <toolitem action='AutoGapAction' />
+ <separator />
+ <toolitem action='PaintbucketResetAction' />
+ </toolbar>
+
+ <toolbar name='EraserToolbar'>
+ <toolitem action='EraserModeAction' />
+ <separator />
+ <toolitem action='EraserWidthAction' />
+ <toolitem action='EraserPressureAction' />
+ <separator />
+ <toolitem action='EraserThinningAction' />
+ <separator />
+ <toolitem action='EraserCapRoundingAction' />
+ <separator />
+ <toolitem action='EraserTremorAction' />
+ <separator />
+ <toolitem action='EraserMassAction' />
+ <separator />
+ <toolitem action='EraserBreakAppart' />
+ </toolbar>
+
+ <toolbar name='TextToolbar'>
+ <toolitem action='TextFontFamilyAction' />
+ <toolitem action='TextFontStyleAction' />
+ <separator />
+ <toolitem action='TextOuterStyleAction' />
+ <toolitem action='TextFontSizeAction' />
+ <toolitem action='TextLineHeightAction' />
+ <toolitem action='TextLineHeightUnitsAction' />
+ <toolitem action='TextLineHeightUnsetAction' />
+ <separator />
+ <toolitem action='TextAlignAction' />
+ <separator />
+ <toolitem action='TextSuperscriptAction' />
+ <toolitem action='TextSubscriptAction' />
+ <separator />
+ <toolitem action='TextLetterSpacingAction' />
+ <toolitem action='TextWordSpacingAction' />
+ <toolitem action='TextDxAction' />
+ <toolitem action='TextDyAction' />
+ <toolitem action='TextRotationAction' />
+ <separator />
+ <toolitem action='TextWritingModeAction' />
+ <separator />
+ <toolitem action='TextOrientationAction' />
+ <separator />
+ <toolitem action='TextDirectionAction' />
+ </toolbar>
+
+ <toolbar name='LPEToolToolbar'>
+ <toolitem action='LPEToolModeAction' />
+ <separator />
+ <toolitem action='LPEShowBBoxAction' />
+ <toolitem action='LPEBBoxFromSelectionAction' />
+ <separator />
+ <toolitem action='LPELineSegmentAction' />
+ <separator />
+ <toolitem action='LPEMeasuringAction' />
+ <toolitem action='LPEToolUnitsAction' />
+ <separator />
+ <toolitem action='LPEOpenLPEDialogAction' />
+ </toolbar>
+
+ <toolbar name='GradientToolbar'>
+ <toolitem action='GradientNewTypeAction' />
+ <toolitem action='GradientNewFillStrokeAction' />
+ <separator />
+ <toolitem action='GradientSelectGradientAction' />
+ <toolitem action='GradientEditLinkAction' />
+ <toolitem action='GradientEditReverseAction' />
+ <toolitem action='GradientSelectRepeatAction' />
+ <separator />
+ <toolitem action='GradientEditStopsAction' />
+ <toolitem action='GradientEditOffsetAction' />
+ <toolitem action='GradientEditAddAction' />
+ <toolitem action='GradientEditDeleteAction' />
+ </toolbar>
+
+ <toolbar name='MeshToolbar'>
+ <toolitem action='MeshNewTypeAction' />
+ <toolitem action='MeshNewFillStrokeAction' />
+ <toolitem action='MeshRowAction' />
+ <toolitem action='MeshColumnAction' />
+ <separator />
+<!--
+ <toolitem action='MeshEditFillAction' />
+ <toolitem action='MeshEditStrokeAction' />
+ <toolitem action='MeshShowHandlesAction' />
+-->
+ <toolitem action='MeshToggleSidesAction' />
+ <toolitem action='MeshMakeEllipticalAction' />
+ <toolitem action='MeshPickColorsAction' />
+ <toolitem action='MeshFitInBoundingBoxAction' />
+ <separator />
+ <toolitem action='MeshShowHandlesAction' />
+ <toolitem action='MeshEditFillAction' />
+ <toolitem action='MeshEditStrokeAction' />
+ <separator />
+ <toolitem action='MeshWarningAction' />
+ <separator />
+ <toolitem action='MeshSmoothAction' />
+ </toolbar>
+
+ <toolbar name='DropperToolbar'>
+ <toolitem action='DropperOpacityAction' />
+ <toolitem action='DropperPickAlphaAction' />
+ <toolitem action='DropperSetAlphaAction' />
+ </toolbar>
+
+ <toolbar name='ConnectorToolbar'>
+ <toolitem action='ConnectorAvoidAction' />
+ <toolitem action='ConnectorIgnoreAction' />
+ <toolitem action='ConnectorOrthogonalAction' />
+ <toolitem action='ConnectorCurvatureAction' />
+ <toolitem action='ConnectorSpacingAction' />
+ <toolitem action='ConnectorGraphAction' />
+ <toolitem action='ConnectorLengthAction' />
+ <toolitem action='ConnectorDirectedAction' />
+ <toolitem action='ConnectorOverlapAction' />
+ </toolbar>
+
+</ui>
+
diff --git a/share/ui/snap-toolbar.ui b/share/ui/snap-toolbar.ui
new file mode 100644
index 000000000..90fa6bd61
--- /dev/null
+++ b/share/ui/snap-toolbar.ui
@@ -0,0 +1,28 @@
+<ui>
+ <toolbar name='SnapToolbar'>
+ <toolitem action='ToggleSnapGlobal' />
+ <separator />
+ <toolitem action='ToggleSnapFromBBoxCorner' />
+ <toolitem action='ToggleSnapToBBoxPath' />
+ <toolitem action='ToggleSnapToBBoxNode' />
+ <toolitem action='ToggleSnapToFromBBoxEdgeMidpoints' />
+ <toolitem action='ToggleSnapToFromBBoxCenters' />
+ <separator />
+ <toolitem action='ToggleSnapFromNode' />
+ <toolitem action='ToggleSnapToItemPath' />
+ <toolitem action='ToggleSnapToPathIntersections' />
+ <toolitem action='ToggleSnapToItemNode' />
+ <toolitem action='ToggleSnapToSmoothNodes' />
+ <toolitem action='ToggleSnapToFromLineMidpoints' />
+ <separator />
+ <toolitem action='ToggleSnapFromOthers' />
+ <toolitem action='ToggleSnapToFromObjectCenters' />
+ <toolitem action='ToggleSnapToFromRotationCenter' />
+ <toolitem action='ToggleSnapToFromTextBaseline' />
+ <separator />
+ <toolitem action='ToggleSnapToPageBorder' />
+ <toolitem action='ToggleSnapToGrids' />
+ <toolitem action='ToggleSnapToGuides' />
+ <!--toolitem action='ToggleSnapToGridGuideIntersections' /-->
+ </toolbar>
+</ui>
diff --git a/share/ui/tool-toolbar.ui b/share/ui/tool-toolbar.ui
new file mode 100644
index 000000000..a5dedad56
--- /dev/null
+++ b/share/ui/tool-toolbar.ui
@@ -0,0 +1,39 @@
+<ui>
+ <toolbar name='ToolToolbar'>
+ <!-- Basics -->
+ <toolitem action='ToolSelector' />
+ <toolitem action='ToolNode' />
+ <toolitem action='ToolTweak' />
+ <toolitem action='ToolZoom' />
+ <toolitem action='ToolMeasure' />
+
+ <!-- Shapes -->
+ <toolitem action='ToolRect' />
+ <toolitem action='Tool3DBox' />
+ <toolitem action='ToolArc' />
+ <toolitem action='ToolStar' />
+ <toolitem action='ToolSpiral' />
+
+ <!-- Paths -->
+ <toolitem action='ToolPencil' />
+ <toolitem action='ToolPen' />
+ <toolitem action='ToolCalligraphic' />
+
+ <!-- Text -->
+ <toolitem action='ToolText' />
+
+ <!-- Paint large areas -->
+ <toolitem action='ToolSpray' />
+ <toolitem action='ToolEraser' />
+
+ <!-- Fill -->
+ <toolitem action='ToolPaintBucket' />
+
+ <toolitem action='ToolGradient' />
+ <toolitem action='ToolMesh' />
+ <toolitem action='ToolDropper' />
+
+ <toolitem action='ToolConnector' />
+ <toolitem action='ToolLPETool' />
+ </toolbar>
+</ui>
diff --git a/src/io/resource.cpp b/src/io/resource.cpp
index 501eab03b..52ac884b1 100644
--- a/src/io/resource.cpp
+++ b/src/io/resource.cpp
@@ -19,15 +19,18 @@
#include <glib.h> // g_assert()
#include "path-prefix.h"
#include "inkscape.h"
+#include "io/sys.h"
#include "io/resource.h"
+using Inkscape::IO::file_test;
+
namespace Inkscape {
namespace IO {
namespace Resource {
-Util::ptr_shared<char> get_path(Domain domain, Type type, char const *filename)
+gchar *_get_path(Domain domain, Type type, char const *filename)
{
gchar *path=NULL;
switch (domain) {
@@ -71,7 +74,8 @@ Util::ptr_shared<char> get_path(Domain domain, Type type, char const *filename)
case PALETTES: name = "palettes"; break;
case PATTERNS: name = "patterns"; break;
case TEMPLATES: name = "templates"; break;
- default: return get_path(SYSTEM, type, filename);
+ case UI: name = "ui"; break;
+ default: return _get_path(SYSTEM, type, filename);
}
path = Inkscape::Application::profile_path(name);
} break;
@@ -83,11 +87,39 @@ Util::ptr_shared<char> get_path(Domain domain, Type type, char const *filename)
path = temp;
}
+ return path;
+}
+
+Util::ptr_shared<char> get_path(Domain domain, Type type, char const *filename)
+{
+ char *path = _get_path(domain, type, filename);
Util::ptr_shared<char> result=Util::share_string(path);
g_free(path);
return result;
}
+/*
+ * Same as get_path, but checks for file's existance and falls back
+ * from USER to SYSTEM modes.
+ */
+Util::ptr_shared<char> get_filename(Type type, char const *filename)
+{
+ Util::ptr_shared<char> result;
+ char *user_filename = _get_path(USER, type, filename);
+ char *sys_filename = _get_path(SYSTEM, type, filename);
+
+ if (file_test(user_filename, G_FILE_TEST_EXISTS)) {
+ result = Util::share_string(user_filename);
+ } else if(file_test(sys_filename, G_FILE_TEST_EXISTS)) {
+ result = Util::share_string(sys_filename);
+ } else {
+ g_warning("Failed to load resource: %s", filename);
+ }
+ g_free(user_filename);
+ g_free(sys_filename);
+ return result;
+}
+
}
}
diff --git a/src/io/resource.h b/src/io/resource.h
index 36fe5f81e..fbf2111f4 100644
--- a/src/io/resource.h
+++ b/src/io/resource.h
@@ -48,6 +48,8 @@ enum Domain {
Util::ptr_shared<char> get_path(Domain domain, Type type,
char const *filename=NULL);
+Util::ptr_shared<char> get_filename(Type type, char const *filename=NULL);
+
}
}
diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp
index 016eafdaa..65c54f0ce 100644
--- a/src/widgets/toolbox.cpp
+++ b/src/widgets/toolbox.cpp
@@ -61,7 +61,7 @@
#include "../xml/attribute-record.h"
#include "../xml/node-event-vector.h"
#include "ui/uxmanager.h"
-
+#include "io/resource.h"
#include "arc-toolbar.h"
#include "box3d-toolbar.h"
@@ -101,6 +101,9 @@ using Inkscape::UI::PrefPusher;
using Inkscape::UI::ToolboxFactory;
using Inkscape::UI::Tools::ToolBase;
+using Inkscape::IO::Resource::get_filename;
+using Inkscape::IO::Resource::UI;
+
typedef void (*SetupFunction)(GtkWidget *toolbox, SPDesktop *desktop);
typedef void (*UpdateFunction)(SPDesktop *desktop, ToolBase *eventcontext, GtkWidget *toolbox);
@@ -153,6 +156,9 @@ static struct {
{ "/tools/eraser", "eraser_tool", SP_VERB_CONTEXT_ERASER, SP_VERB_CONTEXT_ERASER_PREFS },
#if HAVE_POTRACE
{ "/tools/paintbucket", "paintbucket_tool", SP_VERB_CONTEXT_PAINTBUCKET, SP_VERB_CONTEXT_PAINTBUCKET_PREFS },
+#else
+ // Replacement blank action for ToolPaintBucket to prevent loading errors in ui file
+ { "/tools/paintbucket", "ToolPaintBucket", SP_VERB_NONE, SP_VERB_NONE },
#endif
{ "/tools/text", "text_tool", SP_VERB_CONTEXT_TEXT, SP_VERB_CONTEXT_TEXT_PREFS },
{ "/tools/connector","connector_tool", SP_VERB_CONTEXT_CONNECTOR, SP_VERB_CONTEXT_CONNECTOR_PREFS },
@@ -218,394 +224,12 @@ static struct {
#if HAVE_POTRACE
{ "/tools/paintbucket", "paintbucket_toolbox", 0, sp_paintbucket_toolbox_prep, "PaintbucketToolbar",
SP_VERB_CONTEXT_PAINTBUCKET_PREFS, "/tools/paintbucket", N_("Style of Paint Bucket fill objects")},
+#else
+ { "/tools/paintbucket", "paintbucket_toolbox", 0, NULL, "PaintbucketToolbar", SP_VERB_NONE, "/tools/paintbucket", N_("Disabled")},
#endif
{ NULL, NULL, NULL, NULL, NULL, SP_VERB_INVALID, NULL, NULL }
};
-static gchar const * ui_descr =
- "<ui>"
- " <toolbar name='SelectToolbar'>"
- " <toolitem action='EditSelectAll' />"
- " <toolitem action='EditSelectAllInAllLayers' />"
- " <toolitem action='EditDeselect' />"
- " <separator />"
- " <toolitem action='ObjectRotate90CCW' />"
- " <toolitem action='ObjectRotate90' />"
- " <toolitem action='ObjectFlipHorizontally' />"
- " <toolitem action='ObjectFlipVertically' />"
- " <separator />"
- " <toolitem action='SelectionToBack' />"
- " <toolitem action='SelectionLower' />"
- " <toolitem action='SelectionRaise' />"
- " <toolitem action='SelectionToFront' />"
- " <separator />"
- " <toolitem action='XAction' />"
- " <toolitem action='YAction' />"
- " <toolitem action='WidthAction' />"
- " <toolitem action='LockAction' />"
- " <toolitem action='HeightAction' />"
- " <toolitem action='UnitsAction' />"
- " <separator />"
- " <toolitem action='transform_stroke' />"
- " <toolitem action='transform_corners' />"
- " <toolitem action='transform_gradient' />"
- " <toolitem action='transform_pattern' />"
- " </toolbar>"
-
- " <toolbar name='NodeToolbar'>"
- " <separator />"
- " <toolitem action='NodeInsertAction'>"
- " <menu action='NodeInsertActionMenu'>"
- " <menuitem action='NodeInsertActionMinX' />"
- " <menuitem action='NodeInsertActionMaxX' />"
- " <menuitem action='NodeInsertActionMinY' />"
- " <menuitem action='NodeInsertActionMaxY' />"
- " </menu>"
- " </toolitem>"
- " <toolitem action='NodeDeleteAction' />"
- " <separator />"
- " <toolitem action='NodeJoinAction' />"
- " <toolitem action='NodeBreakAction' />"
- " <separator />"
- " <toolitem action='NodeJoinSegmentAction' />"
- " <toolitem action='NodeDeleteSegmentAction' />"
- " <separator />"
- " <toolitem action='NodeCuspAction' />"
- " <toolitem action='NodeSmoothAction' />"
- " <toolitem action='NodeSymmetricAction' />"
- " <toolitem action='NodeAutoAction' />"
- " <separator />"
- " <toolitem action='NodeLineAction' />"
- " <toolitem action='NodeCurveAction' />"
- " <separator />"
- " <toolitem action='ObjectToPath' />"
- " <toolitem action='StrokeToPath' />"
- " <separator />"
- " <toolitem action='NodeXAction' />"
- " <toolitem action='NodeYAction' />"
- " <toolitem action='NodeUnitsAction' />"
- " <separator />"
- " <toolitem action='ObjectEditClipPathAction' />"
- " <toolitem action='ObjectEditMaskPathAction' />"
- " <toolitem action='EditNextPathEffectParameter' />"
- " <separator />"
- " <toolitem action='NodesShowTransformHandlesAction' />"
- " <toolitem action='NodesShowHandlesAction' />"
- " <toolitem action='NodesShowHelperpath' />"
- " </toolbar>"
-
- " <toolbar name='TweakToolbar'>"
- " <toolitem action='TweakWidthAction' />"
- " <separator />"
- " <toolitem action='TweakForceAction' />"
- " <toolitem action='TweakPressureAction' />"
- " <separator />"
- " <toolitem action='TweakModeAction' />"
- " <separator />"
- " <toolitem action='TweakFidelityAction' />"
- " <separator />"
- " <toolitem action='TweakChannelsLabel' />"
- " <toolitem action='TweakDoH' />"
- " <toolitem action='TweakDoS' />"
- " <toolitem action='TweakDoL' />"
- " <toolitem action='TweakDoO' />"
- " </toolbar>"
-
- " <toolbar name='SprayToolbar'>"
- " <toolitem action='SprayModeAction' />"
- " <separator />"
- " <toolitem action='SprayWidthAction' />"
- " <toolitem action='SprayPressureWidthAction' />"
- " <toolitem action='SprayPopulationAction' />"
- " <toolitem action='SprayPressurePopulationAction' />"
- " <separator />"
- " <toolitem action='SprayRotationAction' />"
- " <toolitem action='SprayScaleAction' />"
- " <toolitem action='SprayPressureScaleAction' />"
- " <separator />"
- " <toolitem action='SprayStandard_deviationAction' />"
- " <toolitem action='SprayMeanAction' />"
- " <separator />"
- " <toolitem action='SprayOverNoTransparentAction' />"
- " <toolitem action='SprayOverTransparentAction' />"
- " <toolitem action='SprayPickNoOverlapAction' />"
- " <toolitem action='SprayNoOverlapAction' />"
- " <toolitem action='SprayToolOffsetAction' />"
- " <separator />"
- " <toolitem action='SprayPickColorAction' />"
- " <toolitem action='SprayPickFillAction' />"
- " <toolitem action='SprayPickStrokeAction' />"
- " <toolitem action='SprayPickInverseValueAction' />"
- " <toolitem action='SprayPickCenterAction' />"
- " </toolbar>"
-
- " <toolbar name='ZoomToolbar'>"
- " <toolitem action='ZoomIn' />"
- " <toolitem action='ZoomOut' />"
- " <separator />"
- " <toolitem action='Zoom1:0' />"
- " <toolitem action='Zoom1:2' />"
- " <toolitem action='Zoom2:1' />"
- " <separator />"
- " <toolitem action='ZoomSelection' />"
- " <toolitem action='ZoomDrawing' />"
- " <toolitem action='ZoomPage' />"
- " <toolitem action='ZoomPageWidth' />"
- " <separator />"
- " <toolitem action='ZoomPrev' />"
- " <toolitem action='ZoomNext' />"
- " </toolbar>"
-
- " <toolbar name='MeasureToolbar'>"
- " <toolitem action='MeasureFontSizeAction' />"
- " <separator />"
- " <toolitem action='MeasurePrecisionAction' />"
- " <separator />"
- " <toolitem action='MeasureScaleAction' />"
- " <separator />"
- " <toolitem action='measure_units_label' />"
- " <toolitem action='MeasureUnitsAction' />"
- " <toolitem action='MeasureIgnore1stAndLast' />"
- " <toolitem action='MeasureInBettween' />"
- " <toolitem action='MeasureShowHidden' />"
- " <toolitem action='MeasureAllLayers' />"
- " <toolitem action='MeasureReverse' />"
- " <toolitem action='MeasureToPhantom' />"
- " <toolitem action='MeasureToGuides' />"
- " <toolitem action='MeasureToItem' />"
- " <toolitem action='MeasureMarkDimension' />"
- " <toolitem action='MeasureOffsetAction' />"
- " </toolbar>"
-
- " <toolbar name='StarToolbar'>"
- " <separator />"
- " <toolitem action='StarStateAction' />"
- " <separator />"
- " <toolitem action='FlatAction' />"
- " <separator />"
- " <toolitem action='MagnitudeAction' />"
- " <toolitem action='SpokeAction' />"
- " <toolitem action='RoundednessAction' />"
- " <toolitem action='RandomizationAction' />"
- " <separator />"
- " <toolitem action='StarResetAction' />"
- " </toolbar>"
-
- " <toolbar name='RectToolbar'>"
- " <toolitem action='RectStateAction' />"
- " <toolitem action='RectWidthAction' />"
- " <toolitem action='RectHeightAction' />"
- " <toolitem action='RadiusXAction' />"
- " <toolitem action='RadiusYAction' />"
- " <toolitem action='RectUnitsAction' />"
- " <separator />"
- " <toolitem action='RectResetAction' />"
- " </toolbar>"
-
- " <toolbar name='3DBoxToolbar'>"
- " <toolitem action='3DBoxAngleXAction' />"
- " <toolitem action='3DBoxVPXStateAction' />"
- " <separator />"
- " <toolitem action='3DBoxAngleYAction' />"
- " <toolitem action='3DBoxVPYStateAction' />"
- " <separator />"
- " <toolitem action='3DBoxAngleZAction' />"
- " <toolitem action='3DBoxVPZStateAction' />"
- " </toolbar>"
-
- " <toolbar name='SpiralToolbar'>"
- " <toolitem action='SpiralStateAction' />"
- " <toolitem action='SpiralRevolutionAction' />"
- " <toolitem action='SpiralExpansionAction' />"
- " <toolitem action='SpiralT0Action' />"
- " <separator />"
- " <toolitem action='SpiralResetAction' />"
- " </toolbar>"
-
- " <toolbar name='PenToolbar'>"
- " <toolitem action='FreehandModeActionPen' />"
- " <separator />"
- " <toolitem action='SetPenShapeAction'/>"
- " </toolbar>"
-
- " <toolbar name='PencilToolbar'>"
- " <toolitem action='FreehandModeActionPencil' />"
- " <separator />"
- " <toolitem action='PencilToleranceAction' />"
- " <toolitem action='PencilLpeSimplify' />"
- " <toolitem action='PencilLpeSimplifyFlatten' />"
- " <separator />"
- " <toolitem action='PencilResetAction' />"
- " <separator />"
- " <toolitem action='SetPencilShapeAction'/>"
- " </toolbar>"
-
- " <toolbar name='CalligraphyToolbar'>"
- " <separator />"
- " <toolitem action='SetProfileAction'/>"
- " <toolitem action='ProfileEditAction'/>"
- " <separator />"
- " <toolitem action='CalligraphyWidthAction' />"
- " <toolitem action='PressureAction' />"
- " <toolitem action='TraceAction' />"
- " <toolitem action='ThinningAction' />"
- " <separator />"
- " <toolitem action='AngleAction' />"
- " <toolitem action='TiltAction' />"
- " <toolitem action='FixationAction' />"
- " <separator />"
- " <toolitem action='CapRoundingAction' />"
- " <separator />"
- " <toolitem action='TremorAction' />"
- " <toolitem action='WiggleAction' />"
- " <toolitem action='MassAction' />"
- " <separator />"
- " </toolbar>"
-
- " <toolbar name='ArcToolbar'>"
- " <toolitem action='ArcStateAction' />"
- " <separator />"
- " <toolitem action='ArcStartAction' />"
- " <toolitem action='ArcEndAction' />"
- " <separator />"
- " <toolitem action='ArcOpenAction' />"
- " <separator />"
- " <toolitem action='ArcResetAction' />"
- " <separator />"
- " </toolbar>"
-
-#if HAVE_POTRACE
- " <toolbar name='PaintbucketToolbar'>"
- " <toolitem action='ChannelsAction' />"
- " <separator />"
- " <toolitem action='ThresholdAction' />"
- " <separator />"
- " <toolitem action='OffsetAction' />"
- " <toolitem action='PaintbucketUnitsAction' />"
- " <separator />"
- " <toolitem action='AutoGapAction' />"
- " <separator />"
- " <toolitem action='PaintbucketResetAction' />"
- " </toolbar>"
-#endif
-
- " <toolbar name='EraserToolbar'>"
- " <toolitem action='EraserModeAction' />"
- " <separator />"
- " <toolitem action='EraserWidthAction' />"
- " <toolitem action='EraserPressureAction' />"
- " <separator />"
- " <toolitem action='EraserThinningAction' />"
- " <separator />"
- " <toolitem action='EraserCapRoundingAction' />"
- " <separator />"
- " <toolitem action='EraserTremorAction' />"
- " <separator />"
- " <toolitem action='EraserMassAction' />"
- " <separator />"
- " <toolitem action='EraserBreakAppart' />"
- " </toolbar>"
-
- " <toolbar name='TextToolbar'>"
- " <toolitem action='TextFontFamilyAction' />"
- " <toolitem action='TextFontStyleAction' />"
- " <separator />"
- " <toolitem action='TextOuterStyleAction' />"
- " <toolitem action='TextFontSizeAction' />"
- " <toolitem action='TextLineHeightAction' />"
- " <toolitem action='TextLineHeightUnitsAction' />"
- " <toolitem action='TextLineHeightUnsetAction' />"
- " <separator />"
- " <toolitem action='TextAlignAction' />"
- " <separator />"
- " <toolitem action='TextSuperscriptAction' />"
- " <toolitem action='TextSubscriptAction' />"
- " <separator />"
- " <toolitem action='TextLetterSpacingAction' />"
- " <toolitem action='TextWordSpacingAction' />"
- " <toolitem action='TextDxAction' />"
- " <toolitem action='TextDyAction' />"
- " <toolitem action='TextRotationAction' />"
- " <separator />"
- " <toolitem action='TextWritingModeAction' />"
- " <separator />"
- " <toolitem action='TextOrientationAction' />"
- " <separator />"
- " <toolitem action='TextDirectionAction' />"
- " </toolbar>"
-
- " <toolbar name='LPEToolToolbar'>"
- " <toolitem action='LPEToolModeAction' />"
- " <separator />"
- " <toolitem action='LPEShowBBoxAction' />"
- " <toolitem action='LPEBBoxFromSelectionAction' />"
- " <separator />"
- " <toolitem action='LPELineSegmentAction' />"
- " <separator />"
- " <toolitem action='LPEMeasuringAction' />"
- " <toolitem action='LPEToolUnitsAction' />"
- " <separator />"
- " <toolitem action='LPEOpenLPEDialogAction' />"
- " </toolbar>"
-
- " <toolbar name='GradientToolbar'>"
- " <toolitem action='GradientNewTypeAction' />"
- " <toolitem action='GradientNewFillStrokeAction' />"
- " <separator />"
- " <toolitem action='GradientSelectGradientAction' />"
- " <toolitem action='GradientEditLinkAction' />"
- " <toolitem action='GradientEditReverseAction' />"
- " <toolitem action='GradientSelectRepeatAction' />"
- " <separator />"
- " <toolitem action='GradientEditStopsAction' />"
- " <toolitem action='GradientEditOffsetAction' />"
- " <toolitem action='GradientEditAddAction' />"
- " <toolitem action='GradientEditDeleteAction' />"
- " </toolbar>"
-
- " <toolbar name='MeshToolbar'>"
- " <toolitem action='MeshNewTypeAction' />"
- " <toolitem action='MeshNewFillStrokeAction' />"
- " <toolitem action='MeshRowAction' />"
- " <toolitem action='MeshColumnAction' />"
- " <separator />"
-// " <toolitem action='MeshEditFillAction' />"
-// " <toolitem action='MeshEditStrokeAction' />"
-// " <toolitem action='MeshShowHandlesAction' />"
- " <toolitem action='MeshToggleSidesAction' />"
- " <toolitem action='MeshMakeEllipticalAction' />"
- " <toolitem action='MeshPickColorsAction' />"
- " <toolitem action='MeshFitInBoundingBoxAction' />"
- " <separator />"
- " <toolitem action='MeshShowHandlesAction' />"
- " <toolitem action='MeshEditFillAction' />"
- " <toolitem action='MeshEditStrokeAction' />"
- " <separator />"
- " <toolitem action='MeshWarningAction' />"
- " <separator />"
- " <toolitem action='MeshSmoothAction' />"
- " </toolbar>"
-
- " <toolbar name='DropperToolbar'>"
- " <toolitem action='DropperOpacityAction' />"
- " <toolitem action='DropperPickAlphaAction' />"
- " <toolitem action='DropperSetAlphaAction' />"
- " </toolbar>"
-
- " <toolbar name='ConnectorToolbar'>"
- " <toolitem action='ConnectorAvoidAction' />"
- " <toolitem action='ConnectorIgnoreAction' />"
- " <toolitem action='ConnectorOrthogonalAction' />"
- " <toolitem action='ConnectorCurvatureAction' />"
- " <toolitem action='ConnectorSpacingAction' />"
- " <toolitem action='ConnectorGraphAction' />"
- " <toolitem action='ConnectorLengthAction' />"
- " <toolitem action='ConnectorDirectedAction' />"
- " <toolitem action='ConnectorOverlapAction' />"
- " </toolbar>"
-
- "</ui>"
-;
static Glib::RefPtr<Gtk::ActionGroup> create_or_fetch_actions( SPDesktop* desktop );
@@ -995,6 +619,12 @@ static Glib::RefPtr<Gtk::ActionGroup> create_or_fetch_actions( SPDesktop* deskto
if ( i == 0 ) {
va->set_active(true);
}
+ } else {
+ // This creates a blank action using the data_name, this can replace
+ // tools that have been disabled by compile time options.
+ Glib::RefPtr<Gtk::Action> act = Gtk::Action::create(Glib::ustring(tools[i].data_name));
+ act->set_sensitive(false);
+ mainActions->add(act);
}
}
}
@@ -1196,7 +826,7 @@ void ToolboxFactory::setToolboxDesktop(GtkWidget *toolbox, SPDesktop *desktop)
static void setupToolboxCommon( GtkWidget *toolbox,
SPDesktop *desktop,
- gchar const *descr,
+ gchar const *ui_file,
gchar const* toolbarName,
gchar const* sizePref )
{
@@ -1204,12 +834,19 @@ static void setupToolboxCommon( GtkWidget *toolbox,
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
GtkUIManager* mgr = gtk_ui_manager_new();
- GError* errVal = 0;
+ GError* err = 0;
GtkOrientation orientation = GTK_ORIENTATION_HORIZONTAL;
gtk_ui_manager_insert_action_group( mgr, mainActions->gobj(), 0 );
- gtk_ui_manager_add_ui_from_string( mgr, descr, -1, &errVal );
+
+ char const *filename = get_filename(UI, ui_file);
+ gtk_ui_manager_add_ui_from_file( mgr, filename, &err );
+ if(err) {
+ g_warning("Failed to load %s: %s", filename, err->message);
+ g_error_free(err);
+ return;
+ }
GtkWidget* toolBar = gtk_ui_manager_get_widget( mgr, toolbarName );
if ( prefs->getBool("/toolbox/icononly", true) ) {
@@ -1313,57 +950,10 @@ void ToolboxFactory::setOrientation(GtkWidget* toolbox, GtkOrientation orientati
void setup_tool_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
- gchar const * descr =
- "<ui>"
- " <toolbar name='ToolToolbar'>"
-
- " <!-- Basics -->"
- " <toolitem action='ToolSelector' />"
- " <toolitem action='ToolNode' />"
- " <toolitem action='ToolTweak' />"
- " <toolitem action='ToolZoom' />"
- " <toolitem action='ToolMeasure' />"
-
- " <!-- Shapes -->"
- " <toolitem action='ToolRect' />"
- " <toolitem action='Tool3DBox' />"
- " <toolitem action='ToolArc' />"
- " <toolitem action='ToolStar' />"
- " <toolitem action='ToolSpiral' />"
-
- " <!-- Paths -->"
- " <toolitem action='ToolPencil' />"
- " <toolitem action='ToolPen' />"
- " <toolitem action='ToolCalligraphic' />"
-
- " <!-- Text -->"
- " <toolitem action='ToolText' />"
-
- " <!-- Paint large areas -->"
- " <toolitem action='ToolSpray' />"
- " <toolitem action='ToolEraser' />"
-
-#if HAVE_POTRACE
- " <!-- Fill -->"
- " <toolitem action='ToolPaintBucket' />"
-#endif
-
- " <toolitem action='ToolGradient' />"
-#ifdef WITH_MESH
- " <toolitem action='ToolMesh' />"
-#endif
- " <toolitem action='ToolDropper' />"
-
- " <toolitem action='ToolConnector' />"
-#ifdef WITH_LPETOOL
- " <toolitem action='ToolLPETool' />"
-#endif
- " </toolbar>"
- "</ui>";
-
- setupToolboxCommon( toolbox, desktop, descr,
- "/ui/ToolToolbar",
- "/toolbox/tools/small");
+ setupToolboxCommon( toolbox, desktop,
+ "tool-toolbar.ui",
+ "/ui/ToolToolbar",
+ "/toolbox/tools/small");
}
void update_tool_toolbox( SPDesktop *desktop, ToolBase *eventcontext, GtkWidget * /*toolbox*/ )
@@ -1391,9 +981,16 @@ void setup_aux_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
GtkSizeGroup* grouper = gtk_size_group_new( GTK_SIZE_GROUP_BOTH );
Glib::RefPtr<Gtk::ActionGroup> mainActions = create_or_fetch_actions( desktop );
GtkUIManager* mgr = gtk_ui_manager_new();
- GError* errVal = 0;
+ GError *err = 0;
gtk_ui_manager_insert_action_group( mgr, mainActions->gobj(), 0 );
- gtk_ui_manager_add_ui_from_string( mgr, ui_descr, -1, &errVal );
+
+ char const *filename = get_filename(UI, "select-toolbar.ui");
+ guint ret = gtk_ui_manager_add_ui_from_file(mgr, filename, &err);
+ if(err) {
+ g_warning("Failed to load aux toolbar %s: %s", filename, err->message);
+ g_error_free(err);
+ return;
+ }
std::map<std::string, GtkWidget*> dataHolders;
@@ -1494,49 +1091,10 @@ void update_aux_toolbox(SPDesktop * /*desktop*/, ToolBase *eventcontext, GtkWidg
void setup_commands_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
- gchar const * descr =
- "<ui>"
- " <toolbar name='CommandsToolbar'>"
- " <toolitem action='FileNew' />"
- " <toolitem action='FileOpen' />"
- " <toolitem action='FileSave' />"
- " <toolitem action='FilePrint' />"
- " <separator />"
- " <toolitem action='FileImport' />"
- " <toolitem action='DialogExport' />"
- " <separator />"
- " <toolitem action='EditUndo' />"
- " <toolitem action='EditRedo' />"
- " <separator />"
- " <toolitem action='EditCopy' />"
- " <toolitem action='EditCut' />"
- " <toolitem action='EditPaste' />"
- " <separator />"
- " <toolitem action='ZoomSelection' />"
- " <toolitem action='ZoomDrawing' />"
- " <toolitem action='ZoomPage' />"
- " <separator />"
- " <toolitem action='EditDuplicate' />"
- " <toolitem action='EditClone' />"
- " <toolitem action='EditUnlinkClone' />"
- " <separator />"
- " <toolitem action='SelectionGroup' />"
- " <toolitem action='SelectionUnGroup' />"
- " <separator />"
- " <toolitem action='DialogFillStroke' />"
- " <toolitem action='DialogText' />"
- " <toolitem action='DialogLayers' />"
- " <toolitem action='DialogXMLEditor' />"
- " <toolitem action='DialogAlignDistribute' />"
- " <separator />"
- " <toolitem action='DialogDocumentProperties' />"
- " <toolitem action='DialogPreferences' />"
- " </toolbar>"
- "</ui>";
-
- setupToolboxCommon( toolbox, desktop, descr,
- "/ui/CommandsToolbar",
- "/toolbox/small" );
+ setupToolboxCommon( toolbox, desktop,
+ "commands-toolbar.ui",
+ "/ui/CommandsToolbar",
+ "/toolbox/small" );
}
void update_commands_toolbox(SPDesktop * /*desktop*/, ToolBase * /*eventcontext*/, GtkWidget * /*toolbox*/)
@@ -1672,36 +1230,6 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
Glib::RefPtr<Gtk::ActionGroup> mainActions = create_or_fetch_actions(desktop);
- gchar const * descr =
- "<ui>"
- " <toolbar name='SnapToolbar'>"
- " <toolitem action='ToggleSnapGlobal' />"
- " <separator />"
- " <toolitem action='ToggleSnapFromBBoxCorner' />"
- " <toolitem action='ToggleSnapToBBoxPath' />"
- " <toolitem action='ToggleSnapToBBoxNode' />"
- " <toolitem action='ToggleSnapToFromBBoxEdgeMidpoints' />"
- " <toolitem action='ToggleSnapToFromBBoxCenters' />"
- " <separator />"
- " <toolitem action='ToggleSnapFromNode' />"
- " <toolitem action='ToggleSnapToItemPath' />"
- " <toolitem action='ToggleSnapToPathIntersections' />"
- " <toolitem action='ToggleSnapToItemNode' />"
- " <toolitem action='ToggleSnapToSmoothNodes' />"
- " <toolitem action='ToggleSnapToFromLineMidpoints' />"
- " <separator />"
- " <toolitem action='ToggleSnapFromOthers' />"
- " <toolitem action='ToggleSnapToFromObjectCenters' />"
- " <toolitem action='ToggleSnapToFromRotationCenter' />"
- " <toolitem action='ToggleSnapToFromTextBaseline' />"
- " <separator />"
- " <toolitem action='ToggleSnapToPageBorder' />"
- " <toolitem action='ToggleSnapToGrids' />"
- " <toolitem action='ToggleSnapToGuides' />"
- //" <toolitem action='ToggleSnapToGridGuideIntersections' />"
- " </toolbar>"
- "</ui>";
-
Inkscape::IconSize secondarySize = ToolboxFactory::prefToSize("/toolbox/secondary", 1);
{
@@ -1880,9 +1408,10 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
}
- setupToolboxCommon( toolbox, desktop, descr,
- "/ui/SnapToolbar",
- "/toolbox/secondary" );
+ setupToolboxCommon( toolbox, desktop,
+ "snap-toolbar.ui",
+ "/ui/SnapToolbar",
+ "/toolbox/secondary" );
}
Glib::ustring ToolboxFactory::getToolboxName(GtkWidget* toolbox)