def on_app_options(self): """Display application options""" self.xml = gtk.glade.XML(get_resource("rc", "keepnote.glade"), "app_config_dialog") self.dialog = self.xml.get_widget("app_config_dialog") self.dialog.set_transient_for(self.main_window) self.tabs = self.xml.get_widget("app_config_tabs") self.setup_overview_tree() # populate default notebook self.xml.get_widget("default_notebook_entry").\ set_text(self.app.pref.default_notebook) # populate autosave self.xml.get_widget("autosave_check").set_active( self.app.pref.autosave) self.xml.get_widget("autosave_entry").set_text( str(int(self.app.pref.autosave_time / 1000))) self.xml.get_widget("autosave_entry").set_sensitive( self.app.pref.autosave) self.xml.get_widget("autosave_label").set_sensitive( self.app.pref.autosave) # populate default font #self.xml.get_widget("default_font_button").\ # set_font_name(self.app.pref.default_font) # use systray icon self.xml.get_widget("systray_check").set_active( self.app.pref.use_systray) self.xml.get_widget("skip_taskbar_check").set_active( self.app.pref.skip_taskbar) self.xml.get_widget("skip_taskbar_check").set_sensitive( self.app.pref.use_systray) # look and feel self.treeview_lines_check = self.xml.get_widget("treeview_lines_check") self.treeview_lines_check.set_active(self.app.pref.treeview_lines) self.listview_rules_check = self.xml.get_widget("listview_rules_check") self.listview_rules_check.set_active(self.app.pref.listview_rules) self.use_stock_icons_check = \ self.xml.get_widget("use_stock_icons_check") self.use_stock_icons_check.set_active(self.app.pref.use_stock_icons) # populate dates for name in ["same_day", "same_month", "same_year", "diff_year"]: self.xml.get_widget("date_%s_entry" % name).\ set_text(self.app.pref.timestamp_formats[name]) # populate external apps self.entries = {} apps_widget = self.xml.get_widget("external_apps_frame") table = gtk.Table(len(self.app.pref.external_apps), 3) apps_widget.add_with_viewport(table) apps_widget.get_child().set_property("shadow-type", gtk.SHADOW_NONE) for i, app in enumerate(self.app.pref.external_apps): key = app.key app_title = app.title prog = app.prog # program label label = gtk.Label(app_title + ":") label.set_justify(gtk.JUSTIFY_RIGHT) label.set_alignment(1.0, 0.5) label.show() table.attach(label, 0, 1, i, i + 1, xoptions=gtk.FILL, yoptions=0, xpadding=2, ypadding=2) # program entry entry = gtk.Entry() entry.set_text(prog) entry.show() self.entries[key] = entry table.attach(entry, 1, 2, i, i + 1, xoptions=gtk.FILL | gtk.EXPAND, yoptions=0, xpadding=2, ypadding=2) # browse button def button_clicked(key, title, prog): return lambda w: \ self.on_browse(key, "Choose %s" % title, prog) button = gtk.Button("Browse...") button.set_image( gtk.image_new_from_stock(gtk.STOCK_OPEN, gtk.ICON_SIZE_SMALL_TOOLBAR)) button.show() button.connect("clicked", button_clicked(key, app_title, prog)) table.attach(button, 2, 3, i, i + 1, xoptions=0, yoptions=0, xpadding=2, ypadding=2) table.show() # add notebook font widget notebook_font_spot = self.xml.get_widget("notebook_font_spot") self.notebook_font_family = FontSelector() notebook_font_spot.add(self.notebook_font_family) self.notebook_font_family.show() # populate notebook font self.notebook_font_size = self.xml.get_widget("notebook_font_size") self.notebook_font_size.set_value(10) if self.main_window.notebook is not None: font = self.main_window.notebook.pref.default_font family, mods, size = richtext.parse_font(font) self.notebook_font_family.set_family(family) self.notebook_font_size.set_value(size) self.xml.signal_autoconnect(self) self.xml.signal_autoconnect({ "on_cancel_button_clicked": lambda w: self.dialog.destroy(), "on_default_notebook_button_clicked": lambda w: self. on_browse("default_notebook", "Choose Default Notebook", self.app. pref.default_notebook), }) self.dialog.show()
def make_toolbar(self, toolbar, tips, use_stock_icons): # bold tool self.bold = self._make_toggle_button( toolbar, tips, "Bold", "bold.png", gtk.STOCK_BOLD, lambda: self._editor.get_textview().toggle_font_mod("bold"), use_stock_icons) # italic tool self.italic = self._make_toggle_button( toolbar, tips, "Italic", "italic.png", gtk.STOCK_ITALIC, lambda: self._editor.get_textview().toggle_font_mod("italic"), use_stock_icons) # underline tool self.underline = self._make_toggle_button( toolbar, tips, "Underline", "underline.png", gtk.STOCK_UNDERLINE, lambda: self._editor.get_textview().toggle_font_mod("underline"), use_stock_icons) # strikethrough self.strike = self._make_toggle_button( toolbar, tips, "Strike", "strike.png", gtk.STOCK_STRIKETHROUGH, lambda: self._editor.get_textview().toggle_font_mod("strike"), use_stock_icons) # fixed-width tool self.fixed_width = self._make_toggle_button( toolbar, tips, "Monospace", "fixed-width.png", None, lambda: self._editor.get_textview().toggle_font_mod("tt"), use_stock_icons) # link self.link = self._make_toggle_button(toolbar, tips, "Make Link", "link.png", None, self.on_toggle_link, use_stock_icons) # no wrap tool self.no_wrap = self._make_toggle_button( toolbar, tips, "No Wrapping", "no-wrap.png", None, lambda: self._editor.get_textview().toggle_font_mod("nowrap"), use_stock_icons) # family combo self.font_family_combo = FontSelector() self.font_family_combo.set_size_request(150, 25) item = gtk.ToolItem() item.add(self.font_family_combo) tips.set_tip(item, "Font Family") toolbar.insert(item, -1) self.font_family_id = self.font_family_combo.connect( "changed", lambda w: self.on_family_set()) self._font_ui_signals.append( FontUI(self.font_family_combo, self.font_family_id)) # font size DEFAULT_FONT_SIZE = 10 self.font_size_button = gtk.SpinButton( gtk.Adjustment(value=DEFAULT_FONT_SIZE, lower=2, upper=500, step_incr=1)) self.font_size_button.set_size_request(-1, 25) #self.font_size_button.set_range(2, 100) self.font_size_button.set_value(DEFAULT_FONT_SIZE) self.font_size_button.set_editable(False) item = gtk.ToolItem() item.add(self.font_size_button) tips.set_tip(item, "Font Size") toolbar.insert(item, -1) self.font_size_id = self.font_size_button.connect( "value-changed", lambda w: self.on_font_size_change(self.font_size_button.get_value( ))) self._font_ui_signals.append( FontUI(self.font_size_button, self.font_size_id)) # font fg color # TODO: code in proper default color self.fg_color_button = FgColorTool(14, 15, (0, 0, 0)) self.fg_color_button.connect( "set-color", lambda w, color: self.on_color_set("fg", color)) tips.set_tip(self.fg_color_button, "Set Text Color") toolbar.insert(self.fg_color_button, -1) # font bg color self.bg_color_button = BgColorTool(14, 15, (65535, 65535, 65535)) self.bg_color_button.connect( "set-color", lambda w, color: self.on_color_set("bg", color)) tips.set_tip(self.bg_color_button, "Set Background Color") toolbar.insert(self.bg_color_button, -1) # separator toolbar.insert(gtk.SeparatorToolItem(), -1) # left tool self.left_align = self._make_toggle_button( toolbar, tips, "Left Align", "alignleft.png", gtk.STOCK_JUSTIFY_LEFT, lambda: self.on_justify("left"), use_stock_icons) # center tool self.center_align = self._make_toggle_button( toolbar, tips, "Center Align", "aligncenter.png", gtk.STOCK_JUSTIFY_CENTER, lambda: self.on_justify("center"), use_stock_icons) # right tool self.right_align = self._make_toggle_button( toolbar, tips, "Right Align", "alignright.png", gtk.STOCK_JUSTIFY_RIGHT, lambda: self.on_justify("right"), use_stock_icons) # justify tool self.fill_align = self._make_toggle_button( toolbar, tips, "Justify Align", "alignjustify.png", gtk.STOCK_JUSTIFY_FILL, lambda: self.on_justify("fill"), use_stock_icons) # bullet list tool self.bullet = self._make_toggle_button(toolbar, tips, "Bullet List", "bullet.png", None, lambda: self.on_bullet_list(), use_stock_icons)