예제 #1
0
    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()
예제 #2
0
    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)