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
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
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
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')