OSDN Git Service

toolbar: lay out using a UIManager definition file
authorAndrew Chadwick <andrewc-git@piffle.org>
Sun, 31 Jul 2011 17:14:19 +0000 (18:14 +0100)
committerAndrew Chadwick <andrewc-git@piffle.org>
Sun, 31 Jul 2011 17:14:19 +0000 (18:14 +0100)
Simplifies the code a bit, and makes editing the toolbar layout easier
(since it's by no means in its final form yet).

gui/drawwindow.py
gui/toolbar.xml [new file with mode: 0644]

index b258fc2..ec8d02c 100644 (file)
@@ -244,46 +244,10 @@ class Window (windowing.MainWindow, layout.MainWindow):
         self.menubar = self.app.ui_manager.get_widget('/Menubar')
 
     def init_toolbar(self):
-        action_groups = self.app.ui_manager.get_action_groups()
-        def findaction(name):
-            for group in action_groups:
-                action = group.get_action(name)
-                if action is not None:
-                    return action
-            return None
-        bar = gtk.Toolbar()
-        bar.insert(findaction("New").create_tool_item(), -1)
-        bar.insert(findaction("Open").create_tool_item(), -1)
-        bar.insert(findaction("Save").create_tool_item(), -1)
-        bar.insert(findaction("Undo").create_tool_item(), -1)
-        bar.insert(findaction("Redo").create_tool_item(), -1)
-
-        bar.insert(gtk.SeparatorToolItem(), -1)
-        bar.insert(findaction("ResetView").create_tool_item(), -1)
-        bar.insert(findaction("ZoomIn").create_tool_item(), -1)
-        bar.insert(findaction("ZoomOut").create_tool_item(), -1)
-        bar.insert(findaction("RotateLeft").create_tool_item(), -1)
-        bar.insert(findaction("RotateRight").create_tool_item(), -1)
-        bar.insert(findaction("MirrorVertical").create_tool_item(), -1)
-        bar.insert(findaction("MirrorHorizontal").create_tool_item(), -1)
-
-        bar.insert(gtk.SeparatorToolItem(), -1)
-        bar.insert(findaction("BlendModeNormal").create_tool_item(), -1)
-        bar.insert(findaction("BlendModeEraser").create_tool_item(), -1)
-        bar.insert(findaction("BlendModeLockAlpha").create_tool_item(), -1)
-
-        expander = gtk.SeparatorToolItem()
-        expander.set_expand(True)
-        expander.set_draw(False)
-        bar.insert(expander, -1)
-
-        for name in ["ColorSelectionWindow", "ColorSamplerWindow",
-                     "BrushSelectionWindow", "LayersWindow"]:
-            action = self.action_group.get_action(name)
-            tool_item = action.create_tool_item()
-            bar.insert(tool_item, -1)
-        self.toolbar = bar
-
+        toolbarpath = os.path.join(self.app.datapath, 'gui/toolbar.xml')
+        toolbarbar_xml = open(toolbarpath).read()
+        self.app.ui_manager.add_ui_from_string(toolbarbar_xml)
+        self.toolbar = self.app.ui_manager.get_widget('/toolbar1')
         if not self.get_show_toolbar():
             gobject.idle_add(self.toolbar.hide)
 
diff --git a/gui/toolbar.xml b/gui/toolbar.xml
new file mode 100644 (file)
index 0000000..5405ba7
--- /dev/null
@@ -0,0 +1,38 @@
+<ui>
+  <toolbar name="toolbar1">
+    <placeholder name="file-toolitems">
+      <toolitem action="New"/>
+      <toolitem action="Open"/>
+      <toolitem action="Save"/>
+      <toolitem action="Undo"/>
+      <toolitem action="Redo"/>
+    </placeholder>
+
+    <separator/>
+
+    <placeholder name="view-toolitems">
+      <toolitem action="ResetView"/>
+      <toolitem action="ZoomIn"/>
+      <toolitem action="ZoomOut"/>
+      <toolitem action="RotateLeft"/>
+      <toolitem action="RotateRight"/>
+      <toolitem action="MirrorVertical"/>
+      <toolitem action="MirrorHorizontal"/>
+    </placeholder>
+
+    <separator/>
+
+    <toolitem action="BlendModeNormal"/>
+    <toolitem action="BlendModeEraser"/>
+    <toolitem action="BlendModeLockAlpha"/>
+
+    <separator expand="true" name="expander"/>
+
+    <placeholder action="toolset-toolitems">
+      <toolitem action="ColorSelectionWindow"/>
+      <toolitem action="ColorSamplerWindow"/>
+      <toolitem action="BrushSelectionWindow"/>
+      <toolitem action="LayersWindow"/>
+    </placeholder>
+  </toolbar>
+</ui>