def create_widgets(self): top_box = Gtk.Grid() self.add(top_box) top_box.show() toolbar = Gtk.Toolbar() top_box.attach(toolbar, 0, 0, 2, 1) toolbar.show() play_button = Gtk.ToggleToolButton() play_button.set_action_name("win.play") play_button.set_stock_id("xsheet-play") toolbar.insert(play_button, -1) play_button.show() onionskin_button = Gtk.ToggleToolButton() onionskin_button.set_action_name("win.onionskin") onionskin_button.set_stock_id("xsheet-onionskin") toolbar.insert(onionskin_button, -1) onionskin_button.show() eraser_button = Gtk.ToggleToolButton() eraser_button.set_action_name("win.eraser") eraser_button.set_stock_id("xsheet-eraser") toolbar.insert(eraser_button, -1) eraser_button.show() remove_clear_button = Gtk.ToolButton() remove_clear_button.set_action_name("win.remove_clear") remove_clear_button.set_stock_id("xsheet-clear") toolbar.insert(remove_clear_button, -1) remove_clear_button.show() metronome_button = Gtk.ToggleToolButton() metronome_button.set_action_name("win.metronome") metronome_button.set_stock_id("xsheet-metronome") toolbar.insert(metronome_button, -1) metronome_button.show() settings_button = Gtk.ToolButton() settings_button.set_stock_id("xsheet-settings") settings_button.connect("clicked", self._settings_click_cb) toolbar.insert(settings_button, -1) settings_button.show() separator = Gtk.SeparatorToolItem() separator.props.draw = False separator.set_expand(True) toolbar.insert(separator, -1) separator.show() prev_layer_button = Gtk.ToolButton() prev_layer_button.set_action_name("win.previous_layer") prev_layer_button.set_stock_id("xsheet-prev-layer") toolbar.insert(prev_layer_button, -1) prev_layer_button.show() next_layer_button = Gtk.ToolButton() next_layer_button.set_action_name("win.next_layer") next_layer_button.set_stock_id("xsheet-next-layer") toolbar.insert(next_layer_button, -1) next_layer_button.show() self._canvas_widget = CanvasWidget( self._xsheet, root_node=self._canvas_graph.root_node) top_box.attach(self._canvas_widget, 0, 1, 1, 1) self._canvas_widget.show() self._xsheet_widget = XSheetWidget(self._xsheet) top_box.attach(self._xsheet_widget, 1, 1, 1, 1) self._xsheet_widget.show()
class ApplicationWindow(Gtk.ApplicationWindow): def __init__(self, application, xsheet, canvas_graph): Gtk.ApplicationWindow.__init__(self, application=application, default_width=640, default_height=480, title=_("xsheet")) self._xsheet = xsheet self._canvas_graph = canvas_graph def create_widgets(self): top_box = Gtk.Grid() self.add(top_box) top_box.show() toolbar = Gtk.Toolbar() top_box.attach(toolbar, 0, 0, 2, 1) toolbar.show() play_button = Gtk.ToggleToolButton() play_button.set_action_name("win.play") play_button.set_stock_id("xsheet-play") toolbar.insert(play_button, -1) play_button.show() onionskin_button = Gtk.ToggleToolButton() onionskin_button.set_action_name("win.onionskin") onionskin_button.set_stock_id("xsheet-onionskin") toolbar.insert(onionskin_button, -1) onionskin_button.show() eraser_button = Gtk.ToggleToolButton() eraser_button.set_action_name("win.eraser") eraser_button.set_stock_id("xsheet-eraser") toolbar.insert(eraser_button, -1) eraser_button.show() remove_clear_button = Gtk.ToolButton() remove_clear_button.set_action_name("win.remove_clear") remove_clear_button.set_stock_id("xsheet-clear") toolbar.insert(remove_clear_button, -1) remove_clear_button.show() metronome_button = Gtk.ToggleToolButton() metronome_button.set_action_name("win.metronome") metronome_button.set_stock_id("xsheet-metronome") toolbar.insert(metronome_button, -1) metronome_button.show() settings_button = Gtk.ToolButton() settings_button.set_stock_id("xsheet-settings") settings_button.connect("clicked", self._settings_click_cb) toolbar.insert(settings_button, -1) settings_button.show() separator = Gtk.SeparatorToolItem() separator.props.draw = False separator.set_expand(True) toolbar.insert(separator, -1) separator.show() prev_layer_button = Gtk.ToolButton() prev_layer_button.set_action_name("win.previous_layer") prev_layer_button.set_stock_id("xsheet-prev-layer") toolbar.insert(prev_layer_button, -1) prev_layer_button.show() next_layer_button = Gtk.ToolButton() next_layer_button.set_action_name("win.next_layer") next_layer_button.set_stock_id("xsheet-next-layer") toolbar.insert(next_layer_button, -1) next_layer_button.show() self._canvas_widget = CanvasWidget( self._xsheet, root_node=self._canvas_graph.root_node) top_box.attach(self._canvas_widget, 0, 1, 1, 1) self._canvas_widget.show() self._xsheet_widget = XSheetWidget(self._xsheet) top_box.attach(self._xsheet_widget, 1, 1, 1, 1) self._xsheet_widget.show() def get_canvas_widget(self): return self._canvas_widget def get_xsheet_widget(self): return self._xsheet_widget def _settings_click_cb(self, widget): dialog = SettingsDialog(widget.get_toplevel()) dialog.show()
def init_ui(self): window = Gtk.Window() window.props.title = "XSheet" window.connect("destroy", self.destroy_cb) window.connect("size-allocate", self.size_allocate_cb) window.connect("key-press-event", self.key_press_cb) window.connect("key-release-event", self.key_release_cb) window.show() top_box = Gtk.Grid() window.add(top_box) top_box.show() toolbar = Gtk.Toolbar() top_box.attach(toolbar, 0, 0, 2, 1) toolbar.show() factory = Gtk.IconFactory() icon_names = [ 'xsheet-onionskin', 'xsheet-play', 'xsheet-eraser', 'xsheet-metronome', 'xsheet-settings' ] for name in icon_names: filename = os.path.join('data', 'icons', name + '.svg') pixbuf = GdkPixbuf.Pixbuf.new_from_file(filename) iconset = Gtk.IconSet.new_from_pixbuf(pixbuf) factory.add(name, iconset) factory.add_default() play_button = Gtk.ToggleToolButton() play_button.set_stock_id("xsheet-play") play_button.connect("toggled", self.toggle_play_cb) toolbar.insert(play_button, -1) play_button.show() onionskin_button = Gtk.ToggleToolButton() onionskin_button.set_stock_id("xsheet-onionskin") onionskin_button.set_active(True) onionskin_button.connect("toggled", self.toggle_onionskin_cb) toolbar.insert(onionskin_button, -1) onionskin_button.show() eraser_button = Gtk.ToggleToolButton() eraser_button.set_stock_id("xsheet-eraser") eraser_button.connect("toggled", self.toggle_eraser_cb) toolbar.insert(eraser_button, -1) eraser_button.show() metronome_button = Gtk.ToggleToolButton() metronome_button.set_stock_id("xsheet-metronome") metronome_button.connect("toggled", self.toggle_metronome_cb) toolbar.insert(metronome_button, -1) metronome_button.show() settings_button = Gtk.ToolButton() settings_button.set_stock_id("xsheet-settings") settings_button.connect("clicked", self.settings_click_cb) toolbar.insert(settings_button, -1) settings_button.show() event_box = Gtk.EventBox() event_box.connect("motion-notify-event", self.motion_to_cb) event_box.connect("button-press-event", self.button_press_cb) event_box.connect("button-release-event", self.button_release_cb) top_box.attach(event_box, 0, 1, 1, 1) event_box.props.expand = True event_box.show() view_widget = GeglGtk.View() view_widget.set_node(self.nodes['main_over']) view_widget.set_autoscale_policy(GeglGtk.ViewAutoscale.DISABLED) view_widget.set_size_request(800, 400) event_box.add(view_widget) view_widget.show() xsheet_widget = XSheetWidget(self.xsheet) top_box.attach(xsheet_widget, 1, 1, 1, 1) xsheet_widget.show()