Esempio n. 1
0
    def _create_about_dialog(self):
        builder = pygubu.Builder(translator)
        uifile = os.path.join(FILE_PATH,"ui/about_dialog.ui")
        builder.add_from_file(uifile)

        dialog = builder.get_object('aboutdialog', self.master.winfo_toplevel())
        entry = builder.get_object('version')
        txt = entry.cget('text')
        txt = txt.replace('%version%', str(pygubu.__version__))
        entry.configure(text=txt)

        def on_ok_execute():
            dialog.close()

        builder.connect_callbacks({'on_ok_execute':on_ok_execute})

        return dialog
Esempio n. 2
0
    def _create_about_dialog(self):
        builder = pygubu.Builder(translator)
        uifile = os.path.join(FILE_PATH, "ui/about_dialog.ui")
        builder.add_from_file(uifile)

        dialog = builder.get_object('aboutdialog',
                                    self.master.winfo_toplevel())
        entry = builder.get_object('version')
        txt = entry.cget('text')
        txt = txt.replace('%version%', str(pygubu.__version__))
        entry.configure(text=txt)

        def on_ok_execute():
            dialog.close()

        builder.connect_callbacks({'on_ok_execute': on_ok_execute})

        return dialog
Esempio n. 3
0
    def _create_about_dialog(self):
        builder = pygubu.Builder(translator)
        builder.add_from_file(str(DESIGNER_DIR / "ui" / "about_dialog.ui"))
        builder.add_resource_path(str(DESIGNER_DIR / "images"))

        dialog = builder.get_object('aboutdialog', self.mainwindow)
        entry = builder.get_object('version')
        txt = entry.cget('text')
        txt = txt.replace('%version%', str(pygubu.__version__))
        entry.configure(text=txt)
        entry = builder.get_object('designer_version')
        txt = entry.cget('text')
        txt = txt.replace('%version%', str(pygubudesigner.__version__))
        entry.configure(text=txt)

        def on_ok_execute():
            dialog.close()

        def on_gpl3_clicked(e):
            url = 'https://www.gnu.org/licenses/gpl-3.0.html'
            webbrowser.open_new_tab(url)

        def on_mit_clicked(e):
            url = 'https://opensource.org/licenses/MIT'
            webbrowser.open_new_tab(url)

        def on_moreinfo_clicked(e):
            url = 'https://github.com/alejandroautalan/pygubu-designer'
            webbrowser.open_new_tab(url)

        dialog_callbacks = {
            'on_ok_execute': on_ok_execute,
            'on_gpl3_clicked': on_gpl3_clicked,
            'on_mit_clicked': on_mit_clicked,
            'on_moreinfo_clicked': on_moreinfo_clicked,
        }
        builder.connect_callbacks(dialog_callbacks)

        return dialog
Esempio n. 4
0
    def _create_ui(self):
        """Creates all gui widgets"""

        self.preview = None
        self.about_dialog = None
        self.builder = builder = pygubu.Builder(translator)
        self.currentfile = None
        self.is_changed = False

        uifile = os.path.join(FILE_PATH,"ui/pygubu-ui.ui")
        self.builder.add_from_file(uifile)
        self.builder.add_resource_path(os.path.join(FILE_PATH, "images"))

        #build main ui
        self.builder.get_object('mainwindow', self.master)
        toplevel = self.master.winfo_toplevel()
        menu = self.builder.get_object('mainmenu', toplevel)
        toplevel['menu'] = menu

        #project name
        self.project_name = self.builder.get_object('projectname_lbl')

        #Class selector values
        self.widgetlist_sf = self.builder.get_object("widgetlist_sf")
        self.widgetlist = self.builder.get_object("widgetlist")
        self.configure_widget_list()

        #widget tree
        self.treeview = tree = self.builder.get_object('treeview1')
        self.bindings_frame = self.builder.get_object('bindingsframe')
        self.bindings_tree = self.builder.get_object('bindingstree')

        #Preview
        previewc = self.builder.get_object('preview_canvas')
        self.previewer = PreviewHelper(previewc)
        #tree editor
        self.tree_editor = WidgetsTreeEditor(self)
        #properties frame
        self.widget_props_frame = builder.get_object('propertiesframe')
        self.layout_props_frame = builder.get_object('layoutframe')
        self.properties_editor = WidgetPropertiesEditor(self)

        self.builder.connect_callbacks(self)

        #Status bar
        self.statusbar = self.builder.get_object('statusbar')
        handler = StatusBarHandler(self.statusbar)
        handler.setLevel(logging.INFO)
        logger.addHandler(handler)
        pygubu.builder.logger.addHandler(handler)

        #app grid
        self.set_resizable()

        #
        #Application bindings
        #
        master = self.master
        master.bind_all('<Control-KeyPress-n>',
                lambda e: self.on_file_menuitem_clicked('file_new'))
        master.bind_all('<Control-KeyPress-o>',
                lambda e: self.on_file_menuitem_clicked('file_open'))
        master.bind_all('<Control-KeyPress-s>',
                lambda e: self.on_file_menuitem_clicked('file_save'))
        master.bind_all('<Control-KeyPress-q>',
                lambda e: self.on_file_menuitem_clicked('file_quit'))
        master.bind_all('<Control-KeyPress-i>',
                lambda e: self.on_edit_menuitem_clicked('edit_item_up'))
        master.bind_all('<Control-KeyPress-k>',
                lambda e: self.on_edit_menuitem_clicked('edit_item_down'))

        #
        # Widget bindings
        #
        self.tree_editor.treeview.bind('<Control-KeyPress-c>',
                lambda e: self.tree_editor.copy_to_clipboard())
        self.tree_editor.treeview.bind('<Control-KeyPress-v>',
                lambda e: self.tree_editor.paste_from_clipboard())
        self.tree_editor.treeview.bind('<Control-KeyPress-x>',
                lambda e: self.tree_editor.cut_to_clipboard())
        self.tree_editor.treeview.bind('<KeyPress-Delete>',
                lambda e: self.on_edit_menuitem_clicked('edit_item_delete'))
        def clear_key_pressed(event, newevent):
            # when KeyPress, not Ctrl-KeyPress, generate event.
            if event.keysym_num == ord(event.char):
                self.tree_editor.treeview.event_generate(newevent)
        self.tree_editor.treeview.bind('<i>',
                lambda e: clear_key_pressed(e, '<Up>'))
        self.tree_editor.treeview.bind('<k>',
                lambda e: clear_key_pressed(e, '<Down>'))
        #grid move bindings
        self.tree_editor.treeview.bind('<Alt-KeyPress-i>',
                lambda e: self.on_edit_menuitem_clicked('grid_up'))
        self.tree_editor.treeview.bind('<Alt-KeyPress-k>',
                lambda e: self.on_edit_menuitem_clicked('grid_down'))
        self.tree_editor.treeview.bind('<Alt-KeyPress-j>',
                lambda e: self.on_edit_menuitem_clicked('grid_left'))
        self.tree_editor.treeview.bind('<Alt-KeyPress-l>',
                lambda e: self.on_edit_menuitem_clicked('grid_right'))


        #
        # Setup tkk styles
        #
        self._setup_styles()

        #
        # Setup dynamic theme submenu
        #
        self._setup_theme_menu()

        #app config
        top = self.master.winfo_toplevel()
        try:
            top.wm_iconname('pygubu')
            top.tk.call('wm', 'iconphoto', '.', StockImage.get('pygubu'))
        except StockImageException as e:
            pass

        self.set_title( _('Pygubu a GUI builder for tkinter') )
        self.set_size('640x480')