from __future__ import unicode_literals from builtins import range from builtins import object from gi.repository import Gtk, Gdk from gi.repository import GObject toolkit = "gtk" # Code responses for GTK +3 dialogs. # this is when an user presses OK on a dialogue. OK = Gtk.ResponseType.OK # This is when an user presses cancel on a dialogue. CANCEL = Gtk.ResponseType.CANCEL # This is when an user closes the dialogue or an id to create the close button. CLOSE = Gtk.ResponseType.CLOSE # The response for a "yes" Button pressed on a dialogue. YES = Gtk.ResponseType.YES # This is when the user presses No on a default dialogue. NO = Gtk.ResponseType.NO #events # This is raised when the application must be closed. CLOSE_EVENT = "delete-event" # This is activated when a button is pressed. BUTTON_PRESSED = "clicked" # This is activated when an user enter text on an edit box. ENTERED_TEXT = "changed" MENU = "activate" #KEYPRESS = wx.EVT_CHAR_HOOK #NOTEBOOK_PAGE_CHANGED = wx.EVT_NOTEBOOK_PAGE_CHANGED CHECKBOX = "toggled" def exit_application(): """ Closes the current window cleanly. """ Gtk.main_quit() def connect_event(parent, event, func, menuitem=None, *args, **kwargs): """ Connects an event to a function. parent Gtk.widget: The widget that will listen for the event. event widgetUtils.event: The event that will be listened for the parent. The event should be one of the widgetUtils events. function func: The function that will be connected to the event.""" if menuitem == None: return getattr(parent, "connect")(event, func, *args, **kwargs) else: return getattr(menuitem, "connect")(event, func, *args, **kwargs) class list(object): def __init__(self, *columns, **listArguments): self.columns = columns self.list_arguments = listArguments self.create_list() def create_list(self): columns = [] [columns.append(str) for i in self.columns] self.store = Gtk.ListStore(*columns) self.list = Gtk.TreeView(model=self.store) renderer = Gtk.CellRendererText() for i in range(0, len(self.columns)): column = Gtk.TreeViewColumn(self.columns[i], renderer, text=i) # column.set_sort_column_id(i) self.list.append_column(column) def insert_item(self, reversed=False, *item): if reversed == False: self.store.append(row=item) else: self.store.insert(position=0, row=item) def get_selected(self): tree_selection = self.list.get_selection() (model, pathlist) = tree_selection.get_selected_rows() return int(pathlist[0].to_string() ) def select_item(self, item): tree_selection = self.list.get_selection() tree_selection.select_path(item) def remove_item(self, item): self.store.remove(self.store.get_iter(item)) def get_count(self): return len(self.store) class baseDialog(Gtk.Dialog): def __init__(self, *args, **kwargs): super(baseDialog, self).__init__(*args, **kwargs) self.box = self.get_content_area() def get_response(self): answer = self.run() return answer class buffer(GObject.GObject): name = GObject.property(type=str) def __init__(self, obj): super(buffer, self).__init__() self.buffer = obj class notebook(object): def __init__(self): self.store = Gtk.TreeStore(buffer.__gtype__) self.view = Gtk.TreeView() self.view.set_model(self.store) column = Gtk.TreeViewColumn("Buffer") cell = Gtk.CellRendererText() column.pack_start(cell, True) column.set_cell_data_func(cell, self.get_buffer) self.view.append_column(column) def get_current_page(self): tree_selection = self.view.get_selection() (model, pathlist) = tree_selection.get_selected_rows() iter = pathlist[0] return self.store[iter][0].buffer def get_buffer(self, column, cell, model, iter, data): cell.set_property('text', self.store.get_value(iter, 0).name) def match_func(self, row, name_, account): name = name_ account = account iter = self.store.get_iter(row.path) if self.store[iter][0].buffer.name == name and self.store[iter][0].buffer.account == account: return (row.path, iter) else: return (None, None) def search(self, rows, name_, account): if not rows: return None for row in rows: (path, iter) = self.match_func(row, name_, account) if iter != None: return (path, iter) (result_path, result_iter) = self.search(row.iterchildren(), name_, account) if result_path: return (result_path, result_iter) return (None, None) class mainLoopObject(object): def run(self): GObject.type_register(buffer) Gtk.main()