def __init__(self, queue): self.queue = queue self.scroll = sftp_utilities.get_object( 'SFTPClient.notebook.page_stfp.scrolledwindow_transfer_statuses') self.treeview_transfer = sftp_utilities.get_object( 'SFTPClient.notebook.page_stfp.treeview_transfer_statuses') self._tv_lock = threading.RLock() col_img = Gtk.CellRendererPixbuf() col = Gtk.TreeViewColumn('') col.pack_start(col_img, False) col.add_attribute(col_img, 'pixbuf', 0) self.treeview_transfer.append_column(col) gui_utilities.gtk_treeview_set_column_titles( self.treeview_transfer, ('Local File', 'Remote File', 'Status'), column_offset=1) col_bar = Gtk.TreeViewColumn('Progress') progress = Gtk.CellRendererProgress() col_bar.pack_start(progress, True) col_bar.add_attribute(progress, 'value', 4) col_bar.set_property('resizable', True) col_bar.set_min_width(125) self.treeview_transfer.append_column(col_bar) # todo: make this a CellRendererBytes gui_utilities.gtk_treeview_set_column_titles( self.treeview_transfer, ('Size', ), column_offset=5, renderers=(extras.CellRendererBytes(), )) self._tv_model = Gtk.TreeStore(GdkPixbuf.Pixbuf, str, str, str, int, int, object) self.treeview_transfer.connect('size-allocate', self.signal_tv_size_allocate) self.treeview_transfer.connect('button_press_event', self.signal_tv_button_pressed) self.treeview_transfer.set_model(self._tv_model) self.treeview_transfer.show_all() self.popup_menu = Gtk.Menu.new() self.menu_item_paused = Gtk.CheckMenuItem.new_with_label('Paused') menu_item = self.menu_item_paused menu_item.connect('toggled', self.signal_menu_toggled_paused) self.popup_menu.append(menu_item) self.menu_item_cancel = Gtk.MenuItem.new_with_label('Cancel') menu_item = self.menu_item_cancel menu_item.connect('activate', self.signal_menu_activate_cancel) self.popup_menu.append(menu_item) menu_item = Gtk.SeparatorMenuItem() self.popup_menu.append(menu_item) menu_item = Gtk.MenuItem.new_with_label('Clear') menu_item.connect('activate', self.signal_menu_activate_clear) self.popup_menu.append(menu_item) self.popup_menu.show_all()
def __init__(self, application, config, wd_history): self.application = application self.config = config self.treeview = sftp_utilities.get_object('SFTPClient.notebook.page_stfp.' + self.treeview_name) self.notebook = sftp_utilities.get_object('SFTPClient.notebook') self.wd_history = collections.deque(wd_history, maxlen=3) self.cwd = None self.col_name = Gtk.CellRendererText() self.col_name.connect('edited', self.signal_text_edited) col_bytes = extras.CellRendererBytes() col_datetime = extras.CellRendererDatetime() col_img = Gtk.CellRendererPixbuf() col = Gtk.TreeViewColumn('Files') col.pack_start(col_img, False) col.pack_start(self.col_name, True) col.add_attribute(self.col_name, 'text', 0) col.add_attribute(col_img, 'pixbuf', 1) col.set_property('resizable', True) col.set_sort_column_id(0) self.treeview.append_column(col) gui_utilities.gtk_treeview_set_column_titles( self.treeview, ('Permissions', 'Size', 'Date Modified'), column_offset=3, renderers=(_CellRendererPermissions(), col_bytes, col_datetime) ) self.treeview.connect('button_press_event', self.signal_tv_button_press) self.treeview.connect('key-press-event', self.signal_tv_key_press) self.treeview.connect('row-expanded', self.signal_tv_expand_row) self.treeview.connect('row-collapsed', self.signal_tv_collapse_row) self._tv_model = Gtk.TreeStore( str, # 0 base name GdkPixbuf.Pixbuf, # 1 icon str, # 2 full path int, # 3 st_mode GTYPE_ULONG, # 4 size in bytes object # 5 modified timestamp ) self._tv_model.set_sort_column_id(0, Gtk.SortType.ASCENDING) self._tv_model_filter = self._tv_model.filter_new() self._tv_model_filter.set_visible_func(self._filter_entries) self.refilter = self._tv_model_filter.refilter self._tv_model_sort = Gtk.TreeModelSort(model=self._tv_model_filter) self.treeview.set_model(self._tv_model_sort) self._wdcb_model = Gtk.ListStore(str) # working directory combobox self.wdcb_dropdown = sftp_utilities.get_object(self.working_directory_combobox_name) self.wdcb_dropdown.set_model(self._wdcb_model) self.wdcb_dropdown.set_entry_text_column(0) self.wdcb_dropdown.connect('changed', sftp_utilities.DelayedChangedSignal(self.signal_combo_changed)) self.show_hidden = False self._get_popup_menu()
def __init__(self, queue): self.queue = queue self.scroll = sftp_utilities.get_object('SFTPClient.notebook.page_stfp.scrolledwindow_transfer_statuses') self.treeview_transfer = sftp_utilities.get_object('SFTPClient.notebook.page_stfp.treeview_transfer_statuses') self._tv_lock = threading.RLock() col_img = Gtk.CellRendererPixbuf() col = Gtk.TreeViewColumn('') col.pack_start(col_img, False) col.add_attribute(col_img, 'pixbuf', 0) self.treeview_transfer.append_column(col) gui_utilities.gtk_treeview_set_column_titles(self.treeview_transfer, ('Local File', 'Remote File', 'Status'), column_offset=1) col_bar = Gtk.TreeViewColumn('Progress') progress = Gtk.CellRendererProgress() col_bar.pack_start(progress, True) col_bar.add_attribute(progress, 'value', 4) col_bar.set_property('resizable', True) col_bar.set_min_width(125) self.treeview_transfer.append_column(col_bar) # todo: make this a CellRendererBytes gui_utilities.gtk_treeview_set_column_titles(self.treeview_transfer, ('Size',), column_offset=5, renderers=(extras.CellRendererBytes(),)) self._tv_model = Gtk.TreeStore(GdkPixbuf.Pixbuf, str, str, str, int, int, object) self.treeview_transfer.connect('size-allocate', self.signal_tv_size_allocate) self.treeview_transfer.connect('button_press_event', self.signal_tv_button_pressed) self.treeview_transfer.set_model(self._tv_model) self.treeview_transfer.show_all() self.popup_menu = Gtk.Menu.new() self.menu_item_paused = Gtk.CheckMenuItem.new_with_label('Paused') menu_item = self.menu_item_paused menu_item.connect('toggled', self.signal_menu_toggled_paused) self.popup_menu.append(menu_item) self.menu_item_cancel = Gtk.MenuItem.new_with_label('Cancel') menu_item = self.menu_item_cancel menu_item.connect('activate', self.signal_menu_activate_cancel) self.popup_menu.append(menu_item) menu_item = Gtk.SeparatorMenuItem() self.popup_menu.append(menu_item) menu_item = Gtk.MenuItem.new_with_label('Clear') menu_item.connect('activate', self.signal_menu_activate_clear) self.popup_menu.append(menu_item) self.popup_menu.show_all()
def set_column_titles(self, column_titles, column_offset=0, renderers=None): """ Populate the column names of a GTK TreeView and set their sort IDs. This also populates the :py:attr:`.column_titles` attribute. :param list column_titles: The titles of the columns. :param int column_offset: The offset to start setting column names at. :param list renderers: A list containing custom renderers to use for each column. :return: A dict of all the :py:class:`Gtk.TreeViewColumn` objects keyed by their column id. :rtype: dict """ self.column_titles.update((v, k) for (k, v) in enumerate(column_titles, column_offset)) columns = gui_utilities.gtk_treeview_set_column_titles(self.treeview, column_titles, column_offset=column_offset, renderers=renderers) for store_id, column_title in enumerate(column_titles, column_offset): self.column_views[column_title] = columns[store_id] return columns
def set_column_titles(self, column_titles, column_offset=0, renderers=None): """ Populate the column names of a GTK TreeView and set their sort IDs. This also populates the :py:attr:`.column_titles` attribute. :param list column_titles: The titles of the columns. :param int column_offset: The offset to start setting column names at. :param list renderers: A list containing custom renderers to use for each column. :return: A dict of all the :py:class:`Gtk.TreeViewColumn` objects keyed by their column id. :rtype: dict """ self.column_titles.update((v, k) for (k, v) in enumerate(column_titles, column_offset)) columns = gui_utilities.gtk_treeview_set_column_titles(self.treeview, column_titles, column_offset=column_offset, renderers=renderers) for store_id, column_title in enumerate(column_titles, column_offset): self.column_views[column_title] = columns[store_id] return columns
def __init__(self, application, config, wd_history): self.application = application self.config = config self.treeview = sftp_utilities.get_object( 'SFTPClient.notebook.page_stfp.' + self.treeview_name) self.notebook = sftp_utilities.get_object('SFTPClient.notebook') self.wd_history = collections.deque(wd_history, maxlen=3) self.cwd = None self.col_name = Gtk.CellRendererText() self.col_name.connect('edited', self.signal_text_edited) col_bytes = extras.CellRendererBytes() col_datetime = extras.CellRendererDatetime() col_img = Gtk.CellRendererPixbuf() col = Gtk.TreeViewColumn('Files') col.pack_start(col_img, False) col.pack_start(self.col_name, True) col.add_attribute(self.col_name, 'text', 0) col.add_attribute(col_img, 'pixbuf', 1) col.set_property('resizable', True) col.set_sort_column_id(0) self.treeview.append_column(col) gui_utilities.gtk_treeview_set_column_titles( self.treeview, ('Permissions', 'Size', 'Date Modified'), column_offset=3, renderers=(_CellRendererPermissions(), col_bytes, col_datetime)) self.treeview.connect('button_press_event', self.signal_tv_button_press) self.treeview.connect('key-press-event', self.signal_tv_key_press) self.treeview.connect('row-expanded', self.signal_tv_expand_row) self.treeview.connect('row-collapsed', self.signal_tv_collapse_row) self._tv_model = Gtk.TreeStore( str, # 0 base name GdkPixbuf.Pixbuf, # 1 icon str, # 2 full path int, # 3 st_mode GTYPE_ULONG, # 4 size in bytes object # 5 modified timestamp ) self._tv_model.set_sort_column_id(0, Gtk.SortType.ASCENDING) self._tv_model_filter = self._tv_model.filter_new() self._tv_model_filter.set_visible_func(self._filter_entries) self.refilter = self._tv_model_filter.refilter self._tv_model_sort = Gtk.TreeModelSort(model=self._tv_model_filter) self._tv_model_sort.set_sort_func( _ModelNamedRow._fields.index('ts_modified'), gui_utilities.gtk_treesortable_sort_func, _ModelNamedRow._fields.index('ts_modified')) self.treeview.set_model(self._tv_model_sort) self._wdcb_model = Gtk.ListStore(str) # working directory combobox self.wdcb_dropdown = sftp_utilities.get_object( self.working_directory_combobox_name) self.wdcb_dropdown.set_model(self._wdcb_model) self.wdcb_dropdown.set_entry_text_column(0) self.wdcb_dropdown.connect( 'changed', sftp_utilities.DelayedChangedSignal(self.signal_combo_changed)) self.show_hidden = False self._get_popup_menu()