Exemplo n.º 1
0
    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())
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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'])
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
    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 = []
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
    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
Exemplo n.º 10
0
    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})
Exemplo n.º 11
0
    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()