Example #1
0
    def __init__(self):
        self.components = get_components()

        self.w = gtk.Window()
        self.w.connect('destroy', self.quit_cb)
        self.w.set_size_request(700, 600)

        vbox = gtk.VBox(False, 0)

        # Create a UIManager instance
        self.uimanager = gtk.UIManager()
        self.merge_id = 0
        # Add the accelerator group to the toplevel window
        accelgroup = self.uimanager.get_accel_group()
        self.w.add_accel_group(accelgroup)

        # Create an ActionGroup
        self.actiongroup = gtk.ActionGroup('MMUIManager')

        # Create actions
        self.actiongroup.add_actions([('Quit', gtk.STOCK_QUIT, '_Quit', None,
                                       'Quit the Program', self.quit_cb),
                                      ('File', None, '_File'),
                                      ('Components', None, '_Components')])
        self.actiongroup.get_action('Quit').set_property(
            'short-label', '_Quit')

        # Add the actiongroup to the uimanager
        self.uimanager.insert_action_group(self.actiongroup, 0)
        # Add a UI description
        self.uimanager.add_ui_from_string(self.ui)
        # Create a MenuBar
        menubar = self.uimanager.get_widget('/MenuBar')
        vbox.pack_start(menubar, False)
        # Create a Toolbar
        toolbar = self.uimanager.get_widget('/Toolbar')
        vbox.pack_start(toolbar, False)

        self.new_component_id = 0
        for component_name, component_class in self.components.items():
            self.actiongroup.add_actions([
                (component_name, gtk.STOCK_NEW, '_' + component_name,
                 '<Control>%s' % component_name[0],
                 component_class.description, self.start_component_cb)
            ])
            self.uimanager.add_ui_from_string(self.component_ui %
                                              (component_name, component_name))

        self.notebook = NotebookWithCloseButtonOnTabs()
        self.notebook.set_scrollable(True)
        self.notebook.set_property('homogeneous', True)
        self.notebook.connect('switch-page', self.switch_page)
        #        self.notebook.connect('page-added', self.on_page_added)
        vbox.pack_start(self.notebook, True, True, 0)

        self.w.add(vbox)
        self.w.show_all()
        gtk.main()