Ejemplo n.º 1
0
        return fonts


state = dict(
    gnome_fonts=get_gnome_fonts(),
    absolute_path=os.path.dirname(os.path.abspath(__file__)),
    conf_dir=os.path.join(config_home, 'cdraft'),
    data_dir=os.path.join(data_home, 'cdraft'),
    themes_dir=os.path.join(data_home, 'cdraft', 'themes'),
    # XXX: works only in linux
    global_themes_dir='/usr/share/cdraft/themes',
)

if not os.path.isdir(state['global_themes_dir']):
    if platform == 'win32':
        state['global_themes_dir'] = ''
    else:  # run without installation
        state['global_themes_dir'] = os.path.join(state['absolute_path'], '..',
                                                  'themes')

# yes imports that are not quite obvious suck but we need to avoid
# circular imports here
from utils import FailsafeConfigParser
config = FailsafeConfigParser()
config_file = os.path.join(state['conf_dir'], 'cdraft.conf')
if os.path.isfile(config_file):
    config.readfp(open(config_file, 'r'))
for d in [state['conf_dir'], state['themes_dir']]:
    if not os.path.isdir(d):
        os.makedirs(d)
Ejemplo n.º 2
0
    def __init__(self):
        gladefile = os.path.join(state['absolute_path'], "preferences.glade")
        builder = gtk.Builder()
        builder.add_from_file(gladefile)

        # Defining widgets needed
        self.window = builder.get_object("dialog-preferences")
        self.colorpreference = builder.get_object("colorbutton")
        self.textboxbgpreference = builder.get_object("textboxbgbutton")
        self.bgpreference = builder.get_object("bgbutton")
        self.borderpreference = builder.get_object("borderbutton")
        self.paddingpreference = builder.get_object("paddingtext")
        self.heightpreference = builder.get_object("heighttext")
        self.heightpreference.set_range(5, 95)
        self.widthpreference = builder.get_object("widthtext")
        self.widthpreference.set_range(5, 95)
        self.presetscombobox = builder.get_object("presetscombobox")
        self.showborderbutton = builder.get_object("showborder")
        self.showpathbutton = builder.get_object("showpath")
        self.autosave = builder.get_object("autosavetext")
        self.autosave_spinbutton = builder.get_object("autosavetime")
        self.linespacing_spinbutton = builder.get_object("linespacing")
        self.indent_check = builder.get_object("indent_check")
        if config.get('visual', 'indent') == '1':
            self.indent_check.set_active(True)
        self.save_custom_button = builder.get_object("save_custom_theme")
        self.custom_font_preference = builder.get_object("fontbutton1")
        if not config.get('visual', 'use_font_type') == 'custom':
            self.custom_font_preference.set_sensitive(False)
        self.font_radios = {
            'document':builder.get_object("radio_document_font"),
            'monospace':builder.get_object("radio_monospace_font"),
            'custom':builder.get_object("radio_custom_font")
        }
        self.orientation_radios = {
                'top':builder.get_object('orientation_top'),
                'center':builder.get_object('orientation_center'),
                }
        for widget in self.font_radios.values():
            if not widget.get_name() == 'radio_custom_font':
                widget.set_sensitive(bool(state['gnome_fonts']))

        # Setting up config parser
        self.customfile = FailsafeConfigParser()
        self.customfile.read(os.path.join(
            state['themes_dir'], 'custom.theme')
        )
        if not self.customfile.has_section('theme'):
            self.customfile.add_section('theme')

        # Getting preferences from conf file
        active_style = config.get("visual", "theme")
        self.autosave.set_active(config.getint('editor', 'autosave'))

        # Set up pyroom from conf file
        self.linespacing_spinbutton.set_value(int(
            config.get('visual', 'linespacing')
        ))
        self.autosave_spinbutton.set_value(float(
            config.get('editor', 'autosavetime')))
        self.showborderbutton.set_active(
                config.getint('visual', 'showborder')
        )
        self.showpathbutton.set_active(
                config.getint('visual', 'showpath')
        )
        font_type = config.get('visual', 'use_font_type')
        self.font_radios[font_type].set_active(True)
        self.orientation_radios[
                config.get('visual', 'alignment')
                ].set_active(True)
        self.toggleautosave(self.autosave)

        self.window.set_transient_for(state['gui'].window)

        self.stylesvalues = {'custom': 0}
        startingvalue = 1

        state['gui'].theme = Theme(config.get('visual', 'theme'))
        # Add themes to combobox
        for i in get_themes_list():
            self.stylesvalues['%s' % (i)] = startingvalue
            startingvalue += 1
            current_loading_theme = Theme(i)
            theme_name = current_loading_theme['name']
            self.presetscombobox.append_text(theme_name)
        if active_style == 'custom':
            self.save_custom_button.set_sensitive(True)
        self.presetscombobox.set_active(self.stylesvalues[active_style])
        self.fill_pref_dialog()

        # Connecting interface's signals
        dic = {
                "on_MainWindow_destroy": self.QuitEvent,
                "on_button-ok_clicked": self.set_preferences,
                "on_close": self.kill_preferences
                }
        builder.connect_signals(dic)

        self.showborderbutton.connect('toggled', self.toggleborder)
        self.showpathbutton.connect('toggled', self.togglepath)
        self.autosave.connect('toggled', self.toggleautosave)
        self.autosave_spinbutton.connect('value-changed', self.toggleautosave)
        self.linespacing_spinbutton.connect(
            'value-changed', self.changelinespacing
        )
        self.indent_check.connect(
            'toggled', self.toggle_indent
        )
        self.presetscombobox.connect('changed', self.presetchanged)
        self.colorpreference.connect('color-set', self.customchanged)
        self.textboxbgpreference.connect('color-set', self.customchanged)
        self.bgpreference.connect('color-set', self.customchanged)
        self.borderpreference.connect('color-set', self.customchanged)
        self.paddingpreference.connect('value-changed', self.customchanged)
        self.heightpreference.connect('value-changed', self.customchanged)
        self.widthpreference.connect('value-changed', self.customchanged)
        self.save_custom_button.connect('clicked', self.save_custom_theme)
        for widget in self.font_radios.values():
            widget.connect('toggled', self.change_font)
        for widget in self.orientation_radios.values():
            widget.connect('toggled', self.change_orientation)
        self.custom_font_preference.connect('font-set', self.change_font)