import gtk import gtksourceview import pango def Window(title=""): window = gtk.Window() window.set_title(title) return window def Entry(): return gtk.Entry() def Notebook(): return gtk.Notebook() def Textbuffer(): return gtk.TextBuffer() def Textview(textbuffer=None, scroll_window=False, scroll_policy=(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC), editable=True, textview=gtk.TextView): if textbuffer != None: textview = textview(textbuffer) else: textview = textview() textview.set_editable(editable) if scroll_window: scroll_window = gtk.ScrolledWindow() scroll_window.add(textview) scroll_window.set_policy(*scroll_policy) return textview, scroll_window return textview def GtkSourceTextBuffer(highlight=True): textbuffer = gtksourceview.SourceBuffer() textbuffer.set_highlight(highlight) return textbuffer def GtkSourceTextView(textbuffer, scrolled_window=True, scrolled_policy=(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC), scrolled_placement=gtk.CORNER_TOP_LEFT, font=pango.FontDescription('monospace 9'), autoident=True, spaces_instead_of_tabs=True, tabs_width=4, show_line_numbers=True, grab_focus=True): textview = gtksourceview.SourceView(textbuffer) textview.set_auto_indent(autoident) textview.set_insert_spaces_instead_of_tabs(spaces_instead_of_tabs) textview.set_tabs_width(tabs_width) textview.modify_font(font) textview.set_show_line_numbers(show_line_numbers) if grab_focus: textview.grab_focus() if scrolled_window: scrolled_window = gtk.ScrolledWindow() scrolled_window.set_policy(scrolled_policy) scrolled_window.set_placement(scrolled_placement) scrolled_window.add(textview) scrolled_window.show_all() return textview, scrolled_window return textview def Table(rows=1, columns=1, homogeneous=False, tables=None): """ tables : tuple with books e.g. Table(tables=((self.toolbar, 0, 10, 0, 1), (self.tabs, 0, 10, 1, 201))) """ table = gtk.Table(rows, columns, homogeneous) if tables != None: #if len(tables) > 1: for tab in tables: table.attach(*tab) #else: # print tables # table.attach(*tables) return table def Label(label="", markup=False): label = gtk.Label(label) label.set_use_markup(markup) return label def Button(label=None, stock=None, use_underline=False, on_clicked=None, on_clicked_action=None, stock_image=None): button = gtk.Button(label, stock, use_underline) if on_clicked != None: button.connect('clicked', on_clicked, on_clicked_action) if stock_image != None: image = gtk.Image() image.set_from_stock(stock_image, gtk.ICON_SIZE_MENU) gtk.Button.set_relief(button, gtk.RELIEF_NONE) settings = gtk.Widget.get_settings(button) w, h = gtk.icon_size_lookup_for_settings(settings, gtk.ICON_SIZE_MENU) gtk.Widget.set_size_request(button, w + 4, h + 4) image_box = HBox(( (image, True, False, 0),)) button.add(image_box) image_box.show() return button def VBox(pack_start=None, pack_end=None): return HBox(pack_start, pack_end, True) def HBox(pack_start=None, pack_end=None, vbox_def=False): def pack_it(pack_data, _pack): if pack_data != None: if len(pack_data) > 1: for pack in pack_data: _pack(*pack) else: _pack(*pack_data[0]) if vbox_def: hbox = gtk.VBox() else: hbox = gtk.HBox() if pack_start != None: pack_it(pack_start, hbox.pack_start) if pack_end != None: pack_it(pack_end, hbox.pack_end) return hbox def TabLabel(label, closetab, main_win): label = Label(label) close_button = Button(stock_image=gtk.STOCK_CLOSE, on_clicked=closetab, on_clicked_action=main_win) label_box = HBox(( (label,), (close_button,) )) label_box.show_all() return label_box