def populate_treeview(self): renderer = ga_Gtk.CellRendererText() column = ga_Gtk.TreeViewColumn(_("Contract"), renderer, text=self.model['contract_number']) column.set_expand(True) column.set_sort_column_id(self.model['contract_number']) self.model.set_sort_func(self.model['contract_number'], self._sort_text, None) self.contract_selection_treeview.append_column(column) column = widgets.MachineTypeColumn(self.model['is_virt_only']) column.set_sort_column_id(self.model['is_virt_only']) self.model.set_sort_func(self.model['is_virt_only'], self._sort_machine_type, column) self.contract_selection_treeview.append_column(column) renderer = ga_Gtk.CellRendererText() renderer.set_property("xalign", 0.5) column = ga_Gtk.TreeViewColumn(_("Used / Total"), renderer, text=self.model['consumed_fraction']) self.contract_selection_treeview.append_column(column) renderer = widgets.CellRendererDate() column = ga_Gtk.TreeViewColumn(_("Start Date"), renderer, date=self.model['start_date']) column.set_sort_column_id(self.model['start_date']) self.model.set_sort_func(self.model['start_date'], self._sort_date, None) self.contract_selection_treeview.append_column(column) renderer = widgets.CellRendererDate() column = ga_Gtk.TreeViewColumn(_("End Date"), renderer, date=self.model['end_date']) column.set_sort_column_id(self.model['end_date']) self.model.set_sort_func(self.model['end_date'], self._sort_date, None) self.contract_selection_treeview.append_column(column) column = widgets.QuantitySelectionColumn(_("Quantity"), self.model, self.model['default_quantity'], self.model['multi_entitlement'], self.model['quantity_available'], self.model['quantity_increment']) self.contract_selection_treeview.append_column(column) self.edit_quantity_label.set_label(column.get_column_legend_text())
def __init__(self, column_title, model_idx): super(ToggleTextColumn, self).__init__(column_title) self.model_idx = model_idx self.renderer = ga_Gtk.CellRendererText() self.renderer.set_property('xalign', 0.5) self.pack_start(self.renderer, False) self.set_cell_data_func(self.renderer, self._render_cell)
def __init__(self, table_widget, product_dir, yes_id=ga_Gtk.STOCK_APPLY, no_id=ga_Gtk.STOCK_REMOVE): """ Create a new products table, populating the Gtk.TreeView. yes_id and no_id are GTK constants that specify the icon to use for representing if a product is installed. """ table_widget.get_selection().set_mode(ga_Gtk.SelectionMode.NONE) self.table_widget = table_widget self.product_store = ga_Gtk.ListStore(str, ga_GdkPixbuf.Pixbuf) table_widget.set_model(self.product_store) self.yes_icon = self._render_icon(yes_id) self.no_icon = self._render_icon(no_id) self.product_dir = product_dir name_column = ga_Gtk.TreeViewColumn(_("Product"), ga_Gtk.CellRendererText(), markup=0) name_column.set_expand(True) installed_column = ga_Gtk.TreeViewColumn(_("Installed"), ga_Gtk.CellRendererPixbuf(), pixbuf=1) table_widget.append_column(name_column) table_widget.append_column(installed_column)
def __init__(self, store, column_title, store_key, expand=False, markup=False): self.column_title = column_title self.text_renderer = ga_Gtk.CellRendererText() self.store_key = store_key # FIXME: this is kind of weird... if markup: super(TextTreeViewColumn, self).__init__(self.column_title, self.text_renderer, markup=store[store_key]) else: super(TextTreeViewColumn, self).__init__(self.column_title, self.text_renderer, text=store[store_key]) if expand: self.set_expand(True) elif 'align' in store: self.add_attribute(self.text_renderer, 'xalign', store['align']) if 'background' in store: self.add_attribute(self.text_renderer, 'cell-background', store['background'])
def __init__(self, table_widget): table_widget.get_selection().set_mode(ga_Gtk.SelectionMode.NONE) self.override_store = ga_Gtk.ListStore(str, str) table_widget.set_model(self.override_store) for idx, colname in enumerate([_("Name"), _("Value")]): column = ga_Gtk.TreeViewColumn(colname, ga_Gtk.CellRendererText(), markup=0, text=idx) column.set_expand(True) table_widget.append_column(column)
def _add_column(self, name, order): """Adds a Gtk.TreeViewColumn suitable for displaying text to the facts Gtk.TreeView. @type name: string @param name: The name of the created column @type order: integer @param order: The 0-based index of the created column (in relation to other columns) """ column = ga_Gtk.TreeViewColumn(name, ga_Gtk.CellRendererText(), text=order) self.facts_view.append_column(column)
def __init__(self, backend, tab_icon, parent, ent_dir, prod_dir): # The row striping in this TreeView is handled automatically # because we have the rules_hint set to True in the Glade file. super(InstalledProductsTab, self).__init__() self.tab_icon = tab_icon self.identity = inj.require(inj.IDENTITY) self.entitlement_dir = ent_dir self.backend = backend # Product column text_renderer = ga_Gtk.CellRendererText() image_renderer = ga_Gtk.CellRendererPixbuf() column = ga_Gtk.TreeViewColumn(_('Product')) column.set_expand(True) column.pack_start(image_renderer, False) column.pack_start(text_renderer, False) column.add_attribute(image_renderer, 'pixbuf', self.store['image']) column.add_attribute(text_renderer, 'text', self.store['product']) self.top_view.append_column(column) cols = [] cols.append((column, 'text', 'product')) column = self.add_text_column(_('Version'), 'version') cols.append((column, 'text', 'version')) column = self.add_text_column(_('Status'), 'status') cols.append((column, 'text', 'status')) column = self.add_date_column(_('Start Date'), 'start_date') cols.append((column, 'date', 'start_date')) column = self.add_date_column(_('End Date'), 'expiration_date') cols.append((column, 'date', 'expiration_date')) self.set_sorts(self.store, cols) if is_owner_using_golden_ticket(): self.update_certificates_button.set_property("visible", False) self.connect_signals({ "on_update_certificates_button_clicked": parent._update_certificates_button_clicked, "on_register_button_clicked": parent._register_item_clicked, }) self._entries = []
def __init__(self, backend, parent): super(PreferencesDialog, self).__init__() self.backend = backend self.allow_callbacks = False self.identity = inj.require(inj.IDENTITY) self.async_updater = utils.AsyncWidgetUpdater(self.dialog) self.release_backend = release.ReleaseBackend() self.inputs = [ self.sla_combobox, self.release_combobox, self.autoheal_checkbox, self.autoheal_event ] self.dialog.set_transient_for(parent) self.dialog.set_modal(True) # The first string is the displayed service level; the second is # the value sent to Candlepin. self.release_model = ga_Gtk.ListStore(str, str) self.sla_model = ga_Gtk.ListStore(str, str) self.release_combobox.set_model(self.release_model) self.sla_combobox.set_model(self.sla_model) cell_renderer = ga_Gtk.CellRendererText() self.release_combobox.pack_start(cell_renderer, True) self.release_combobox.add_attribute(cell_renderer, "text", 0) self.sla_combobox.pack_start(cell_renderer, True) self.sla_combobox.add_attribute(cell_renderer, "text", 0) self.close_button.connect("clicked", self._close_button_clicked) self.sla_combobox.connect("changed", self._sla_changed) self.release_combobox.connect("changed", self._release_changed) self.autoheal_checkbox.connect("toggled", self._on_autoheal_checkbox_toggled) self.autoheal_event.connect("button_press_event", self._on_autoheal_label_press) # Handle the dialog's delete event when ESC key is pressed. self.dialog.connect("delete-event", self._dialog_deleted)
def add_text_column(self, name, store_key, expand=False, markup=False): text_renderer = ga_Gtk.CellRendererText() if markup: column = ga_Gtk.TreeViewColumn(name, text_renderer, markup=self.store[store_key]) else: column = ga_Gtk.TreeViewColumn(name, text_renderer, text=self.store[store_key]) if expand: column.set_expand(True) else: column.add_attribute(text_renderer, 'xalign', self.store['align']) if 'background' in self.store: column.add_attribute(text_renderer, 'cell-background', self.store['background']) self.top_view.append_column(column) return column
def __init__(self, backend, parent_win, ent_dir, prod_dir): """ Create a new 'My Subscriptions' tab. """ super(MySubscriptionsTab, self).__init__() self.backend = backend self.identity = inj.require(inj.IDENTITY) self.parent_win = parent_win self.entitlement_dir = ent_dir self.product_dir = prod_dir self.sub_details = widgets.ContractSubDetailsWidget(prod_dir) self.async_bind = AsyncBind(self.backend.certlib) self.pooltype_cache = inj.require(inj.POOLTYPE_CACHE) # Progress bar self.pb = None self.timer = 0 # Put the details widget in the middle details = self.sub_details.get_widget() self.details_box.pack_start(details, True, True, 0) # Set up columns on the view text_renderer = ga_Gtk.CellRendererText() image_renderer = ga_Gtk.CellRendererPixbuf() column = ga_Gtk.TreeViewColumn(_('Subscription')) column.set_expand(True) column.pack_start(image_renderer, False) column.pack_start(text_renderer, False) column.add_attribute(image_renderer, 'pixbuf', self.store['image']) column.add_attribute(text_renderer, 'text', self.store['subscription']) column.add_attribute(text_renderer, 'cell-background', self.store['background']) column.add_attribute(image_renderer, 'cell-background', self.store['background']) column.set_sizing(ga_Gtk.TreeViewColumnSizing.AUTOSIZE) self.top_view.append_column(column) cols = [] cols.append((column, 'text', 'subscription')) progress_renderer = ga_Gtk.CellRendererProgress() products_column = ga_Gtk.TreeViewColumn( _("Installed Products"), progress_renderer, value=self.store['installed_value'], text=self.store['installed_text']) products_column.add_attribute(progress_renderer, 'cell-background', self.store['background']) self.empty_progress_renderer = ga_Gtk.CellRendererText() products_column.pack_end(self.empty_progress_renderer, True) products_column.set_cell_data_func(progress_renderer, self._update_progress_renderer) self.top_view.append_column(products_column) column = self.add_date_column(_("End Date"), 'expiration_date') cols.append((column, 'date', 'expiration_date')) column = self.add_text_column(_("Quantity"), 'quantity') cols.append((column, 'text', 'quantity')) self.set_sorts(self.store, cols) self.top_view.connect( "row_activated", widgets.expand_collapse_on_row_activated_callback) # Don't update the icon in the first run, we don't have real compliance data yet self.update_subscriptions(update_dbus=False) self.connect_signals( {'on_unsubscribe_button_clicked': self.unsubscribe_button_clicked})
def __init__(self, backend, parent_win): super(AllSubscriptionsTab, self).__init__() # Set up dynamic elements self.no_subs_label, self.no_subs_label_viewport = widgets.get_scrollable_label( ) # Add at-spi because we no longer create this widget from glade self.top_view.get_accessible().set_name(_("All Subscriptions View")) self.widget_switcher = widgets.WidgetSwitcher( self.scrolledwindow, self.no_subs_label_viewport, self.top_view) self.widget_switcher.set_active(0) self.parent_win = parent_win self.backend = backend self.identity = require(IDENTITY) # Progress bar self.pb = None self.timer = 0 self.pool_stash = managerlib.PoolStash() self.async_bind = async .AsyncBind(self.backend.certlib) today = datetime.date.today() self.date_picker = widgets.DatePicker(today) self.date_picker_hbox.add(self.date_picker) # Custom build of the subscription column. title_text_renderer = ga_Gtk.CellRendererText() title_text_renderer.set_property('xalign', 0.0) subscription_column = ga_Gtk.TreeViewColumn( _('Subscription'), title_text_renderer, markup=self.store['product_name_formatted']) subscription_column.set_expand(True) self.top_view.append_column(subscription_column) cols = [] cols.append((subscription_column, 'text', 'product_name_formatted')) machine_type_col = widgets.MachineTypeColumn(self.store['virt_only']) self.top_view.append_column(machine_type_col) cols.append((machine_type_col, 'text', 'virt_only')) column = self.add_text_column(_('Available'), 'available') cols.append((column, 'text', 'available')) # Set up the quantity column. quantity_column = widgets.QuantitySelectionColumn( _("Quantity"), self.store, self.store['quantity_to_consume'], self.store['multi-entitlement'], self.store['quantity_available'], self.store['quantity_increment']) self.top_view.append_column(quantity_column) self.set_sorts(self.store, cols) self.edit_quantity_label.set_label( quantity_column.get_column_legend_text()) # FIXME: Likely a correct way to do this now, so stub this out now # Ensure all cells are colored according the the store. #set_background_model_index(self.top_view, self.store['background']) # FIXME self.top_view.connect( "row_activated", widgets.expand_collapse_on_row_activated_callback) # This option should be selected by default: self.sub_details = widgets.SubDetailsWidget(backend.product_dir) self.details_box.add(self.sub_details.get_widget()) self.contract_selection = None self.filters = Filters(show_compatible=True, show_no_overlapping=True) self.filter_dialog = FilterOptionsWindow(self.filters, self) self.update_applied_filters_label() self.connect_signals({ "on_search_button_clicked": self.search_button_clicked, "on_subscribe_button_clicked": self.subscribe_button_clicked, "on_filter_options_button_clicked": self.filter_options_button_clicked, }) # Nothing displayed initially: self.clear_pools()