def build_dlg(self): top = self.top list_frame = Frame(top) list_frame.pack(side=TOP, expand=1, fill=BOTH) sb_vert = Scrollbar(list_frame, takefocus=0) sb_vert.pack(side=RIGHT, fill=Y) module_list = UpdatedListbox(list_frame, name='list') module_list.pack(expand=1, fill=BOTH) module_list.Subscribe(COMMAND, self.do_reload) sb_vert['command'] = (module_list, 'yview') module_list['yscrollcommand'] = (sb_vert, 'set') self.module_list = module_list frame = Frame(top) frame.pack(side=BOTTOM, fill=X) for text, cmd in [('Reload Module', self.do_reload), ('Update List', self.update_list), ('Close', self.close_dlg)]: button = UpdatedButton(frame, text=text, command=cmd) button.pack(side=TOP, fill=X, expand=1) self.update_list()
def build_dlg(self): top = self.top buttons = self.create_std_buttons(top) buttons.grid(row=3, column=4, columnspan=2, sticky="news") self.sample = FontPreview(top) self.sample.grid(column=0, row=3, columnspan=4, sticky="news") # XXX: the background color of the sample text should be # configurable label = Label(top, text=_("Font Family:"), anchor=W) label.grid(column=0, row=0, columnspan=2, sticky="ew") sb_vert = Scrollbar(top, takefocus=0) sb_vert.grid(column=1, row=1, rowspan=2, sticky="news") family_list = UpdatedListbox(top, name='families', height=8) family_list.grid(column=0, row=1, rowspan=2, sticky="news") family_list.Subscribe(SELECTION, self.family_selected) sb_vert['command'] = (family_list, 'yview') family_list['yscrollcommand'] = (sb_vert, 'set') self.family_list = family_list label = Label(top, text=_("Font Style:"), anchor=W) label.grid(column=2, row=0, sticky="ew") sb_vert = Scrollbar(top, takefocus=0) sb_vert.grid(column=3, row=1, rowspan=2, sticky="news") self.font_attr_list = UpdatedListbox(top, name='weights', height=4, width=15) self.font_attr_list.grid(column=2, row=1, rowspan=2, sticky="news") self.font_attr_list.Subscribe(SELECTION, self.attr_selected) sb_vert['command'] = (self.font_attr_list, 'yview') self.font_attr_list['yscrollcommand'] = (sb_vert, 'set') label = Label(top, text=_("Size:"), anchor=W) label.grid(column=4, row=0, columnspan=2, sticky="ew") frame = Frame(top) frame.grid(column=4, row=1, columnspan=2, sticky='ew') self.var_size = DoubleVar(top) scroll = MiniScroller(frame, variable=self.var_size, min=0.0, max=None, step=1) scroll.pack(side=RIGHT, fill=Y) self.size_entry = MyEntry(frame, textvariable=self.var_size, width=4, command=self.apply_size, justify=RIGHT) self.size_entry.pack(side=LEFT, expand=1, fill=BOTH) sb_vert = Scrollbar(top, takefocus=0) sb_vert.grid(column=5, row=2, sticky="news") self.size_list = UpdatedListbox(top, name='sizes', width=4, height=5) self.size_list.grid(column=4, row=2, sticky="news") self.size_list.Subscribe(SELECTION, self.size_selected) self.size_list.SetList(std_sizes) sb_vert['command'] = (self.size_list, 'yview') self.size_list['yscrollcommand'] = (sb_vert, 'set') top.columnconfigure(0, weight=1000) top.columnconfigure(4, weight=1) top.rowconfigure(2, weight=1)
class FontPanel(StylePropertyPanel): title = _("Fonts") def __init__(self, master, main_window, doc): self.family_to_fonts = font.make_family_to_fonts() self.families = self.family_to_fonts.keys() self.families.sort() StylePropertyPanel.__init__(self, master, main_window, doc, name='fontdlg') self.family_list.SetList(self.families) index = self.families.index(self.font_family) self.family_list.select_set(index) self.family_list.yview(index) def build_dlg(self): top = self.top buttons = self.create_std_buttons(top) buttons.grid(row=3, column=4, columnspan=2, sticky="news") self.sample = FontPreview(top) self.sample.grid(column=0, row=3, columnspan=4, sticky="news") # XXX: the background color of the sample text should be # configurable label = Label(top, text=_("Font Family:"), anchor=W) label.grid(column=0, row=0, columnspan=2, sticky="ew") sb_vert = Scrollbar(top, takefocus=0) sb_vert.grid(column=1, row=1, rowspan=2, sticky="news") family_list = UpdatedListbox(top, name='families', height=8) family_list.grid(column=0, row=1, rowspan=2, sticky="news") family_list.Subscribe(SELECTION, self.family_selected) sb_vert['command'] = (family_list, 'yview') family_list['yscrollcommand'] = (sb_vert, 'set') self.family_list = family_list label = Label(top, text=_("Font Style:"), anchor=W) label.grid(column=2, row=0, sticky="ew") sb_vert = Scrollbar(top, takefocus=0) sb_vert.grid(column=3, row=1, rowspan=2, sticky="news") self.font_attr_list = UpdatedListbox(top, name='weights', height=4, width=15) self.font_attr_list.grid(column=2, row=1, rowspan=2, sticky="news") self.font_attr_list.Subscribe(SELECTION, self.attr_selected) sb_vert['command'] = (self.font_attr_list, 'yview') self.font_attr_list['yscrollcommand'] = (sb_vert, 'set') label = Label(top, text=_("Size:"), anchor=W) label.grid(column=4, row=0, columnspan=2, sticky="ew") frame = Frame(top) frame.grid(column=4, row=1, columnspan=2, sticky='ew') self.var_size = DoubleVar(top) scroll = MiniScroller(frame, variable=self.var_size, min=0.0, max=None, step=1) scroll.pack(side=RIGHT, fill=Y) self.size_entry = MyEntry(frame, textvariable=self.var_size, width=4, command=self.apply_size, justify=RIGHT) self.size_entry.pack(side=LEFT, expand=1, fill=BOTH) sb_vert = Scrollbar(top, takefocus=0) sb_vert.grid(column=5, row=2, sticky="news") self.size_list = UpdatedListbox(top, name='sizes', width=4, height=5) self.size_list.grid(column=4, row=2, sticky="news") self.size_list.Subscribe(SELECTION, self.size_selected) self.size_list.SetList(std_sizes) sb_vert['command'] = (self.size_list, 'yview') self.size_list['yscrollcommand'] = (sb_vert, 'set') top.columnconfigure(0, weight=1000) top.columnconfigure(4, weight=1) top.rowconfigure(2, weight=1) def init_from_doc(self): object = self.document.CurrentObject() if object is not None and object.is_Text: self.update_from_object_cb(object) else: default = font.GetFont(config.preferences.default_font) self.font_family = default.family self.font_attr = default.font_attrs self.update_from_family() self.update_size(properties.default_text_style.font_size) def Update(self): self.update_from_object_cb(self.document.CurrentObject()) def update_from_object_cb(self, obj): if obj is not None and obj.is_Text: font = obj.Font() self.font_family = font.family self.font_attr = font.font_attrs self.update_size(obj.FontSize()) self.update_from_family() def do_apply(self): name = self.current_font_ps() if not name: if __debug__: pdebug(None, 'FontPanel.do_apply: no ps name!') return kw = { 'font': font.GetFont(name), 'font_size': self.var_size.get(), # set if_type_present to one to make sure that font # properties are only set on objects that can have font # properties. This is not ideal, but it works and needed # only simple changes to base.py 'if_type_present': 1 } self.set_properties(_("Set Font `%s'") % name, 'font', kw) def update_from_family(self, set_view=1): index = self.families.index(self.font_family) self.family_list.Select(index, set_view) fonts = self.family_to_fonts[self.font_family] attrs = [] for name in fonts: attrs.append(font.fontmap[name][1]) attrs.sort() self.set_font_attrs(attrs) self.update_sample() def update_size(self, size): self.var_size.set(size) if size in std_sizes: self.size_list.Select(list(std_sizes).index(size), 1) else: self.size_list.SelectNone() def update_sample(self): self.sample.SetFont(self.current_font_ps()) def set_font_attrs(self, attrs): self.font_attrs = attrs self.font_attr_list.SetList(attrs) self.font_attr = get_from_list(self.font_attr, attrs) self.font_attr_list.Select(attrs.index(self.font_attr), 1) def current_font_xlfd(self): fonts = self.family_to_fonts[self.font_family] for name in fonts: family, attrs, xlfd_start, encoding = font.fontmap[name] if attrs == self.font_attr: return font.xlfd_template % (xlfd_start, 24, encoding) return '' def current_font_ps(self): fonts = self.family_to_fonts[self.font_family] for name in fonts: family, attrs, xlfd_start, encoding = font.fontmap[name] if attrs == self.font_attr: return name return '' def family_selected(self): sel = self.family_list.curselection() if sel: index = sel[0] self.font_family = self.families[index] self.update_from_family(set_view=0) def attr_selected(self): sel = self.font_attr_list.curselection() if sel: index = sel[0] self.font_attr = self.font_attrs[index] self.update_sample() def size_selected(self): sel = self.size_list.curselection() if sel: self.var_size.set(self.size_list.get(sel[0])) def apply_size(self, *args): if self.can_apply(): size = self.var_size.get() self.document.CallObjectMethod(text.CommonText, _("Set Font Size %.1f") % size, 'SetFontSize', size) def save_prefs(self): StylePropertyPanel.save_prefs(self) config.preferences.sample_text = self.sample.Text()
def build_dlg(self): top = self.top var_number = DoubleVar(top) var_unit = StringVar(top) self.var_pos = LengthVar(1.0, config.preferences.default_unit, var_number, var_unit, command=self.set_pos) pos_frame = Frame(top) pos_frame.pack(side=TOP, fill=X, expand=0) self.var_label = StringVar(top) self.var_label.set('X:') label = Label(pos_frame, textvariable=self.var_label) label.pack(side=LEFT, expand=1, anchor=E) entry = MyEntry(pos_frame, textvariable=var_number, justify=RIGHT, width=4, command=self.var_pos.UpdateNumber) entry.pack(side=LEFT, expand=1, fill=X, anchor=E) scroll = MiniScroller(pos_frame, variable=var_number, min=0, max=None, step=1) scroll.pack(side=LEFT, fill=Y) optmenu = create_unit_menu(pos_frame, self.set_unit, variable=var_unit, indicatoron=0, width=3) optmenu.pack(side=LEFT, expand=1, fill=X, anchor=W) list_frame = Frame(top) list_frame.pack(side=TOP, expand=1, fill=BOTH) sb_vert = Scrollbar(list_frame, takefocus=0) sb_vert.pack(side=RIGHT, fill=Y) guides = UpdatedListbox(list_frame, name='list') guides.pack(expand=1, fill=BOTH) guides.Subscribe(SELECTION, self.select_guide) sb_vert['command'] = (guides, 'yview') guides['yscrollcommand'] = (sb_vert, 'set') self.guides = guides self.selected = None frame = Frame(top) frame.pack(side=BOTTOM, fill=X) button = UpdatedButton(frame, text=_("Add H"), command=self.add_guide, args=1) button.pack(side=LEFT) button = UpdatedButton(frame, text=_("Add V"), command=self.add_guide, args=0) button.pack(side=LEFT) button = UpdatedButton(frame, text=_("Delete"), command=self.del_guide) button.pack(side=LEFT) button = UpdatedButton(frame, text=_("Close"), command=self.close_dlg) button.pack(side=RIGHT)