def __init__(self, datadir=None, options=None, file=None, parent=None): """ Provide a GTK based graphical user interface to configure the used software repositories, corresponding authentication keys and update automation """ SoftwareProperties.__init__(self, options=options, datadir=datadir) gtk.window_set_default_icon_name("software-properties") SimpleGladeApp.__init__(self, datadir + "glade/main.glade", None, domain="software-properties") if parent: self.window_main.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) self.window_main.show() self.window_main.set_transient_for(parent) # If externally called, reparent to external application. self.options = options if options and options.toplevel != None: self.window_main.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) self.window_main.show() toplevel = gtk.gdk.window_foreign_new(int(options.toplevel)) if (toplevel): self.window_main.window.set_transient_for(toplevel) # Show what we have early self.window_main.show() # used to store the handlers of callbacks self.handlers = [] # Put some life into the user interface: self.init_popcon() self.init_auto_update() self.show_auto_update_level() # Setup the key list self.init_keys() self.show_keys() # Setup the ISV sources list self.init_isv_sources() self.show_isv_sources() self.show_cdrom_sources() # Setup and show the distro elements self.init_distro() self.show_distro() # Show the import/replace sources.list dialog if a file different # to the default sources.list was specified # NOTE: If the file path points to the default sources.list the user # perhaps assumed that s-p would act like a normal editor. # We have got some bug reports from users calling # "sudo software-properties-gtk /etc/apt/sources.list" from the # command line. if file != None and \ os.path.abspath(file) != "%s%s" % (apt_pkg.Config.FindDir("Dir::Etc"), apt_pkg.Config.Find("Dir::Etc::sourcelist")): self.open_file(file)
def __init__(self, bus, options=None, datadir=None, rootdir="/"): # init software properties SoftwareProperties.__init__(self, options=options, datadir=datadir, rootdir=rootdir) # used in _check_policykit_priviledge self.dbus_info = None self.polkit = None # init dbus service bus_name = dbus.service.BusName(DBUS_INTERFACE_NAME, bus=bus) dbus.service.Object.__init__(self, bus_name, DBUS_PATH) # useful for testing self.enforce_polkit = True logging.debug("waiting for connections")
def __init__(self, bus, options=None, datadir=None, rootdir="/"): # init software properties SoftwareProperties.__init__(self, options=options, datadir=datadir, rootdir=rootdir) # used in _check_policykit_priviledge self.dbus_info = None self.polkit = None # init dbus service bus_name = dbus.service.BusName(DBUS_INTERFACE_NAME, bus=bus) dbus.service.Object.__init__(self, bus_name, DBUS_PATH) # useful for testing self.enforce_polkit = True logging.debug("waiting for connections")
def __init__(self, datadir=None, options=None, file=None, parent=None): """ Provide a GTK based graphical user interface to configure the used software repositories, corresponding authentication keys and update automation """ SoftwareProperties.__init__(self, options=options, datadir=datadir) Gtk.Window.set_default_icon_name("software-properties") SimpleGtkbuilderApp.__init__(self, os.path.join(datadir, "gtkbuilder", "main.ui"), domain="software-properties") if parent: self.window_main.set_type_hint(Gdk.WindowTypeHint.DIALOG) self.window_main.show() try: self.window_main.set_transient_for(parent) except: pass # If externally called, reparent to external application. self.options = options if options and options.toplevel != None: self.window_main.set_type_hint(Gdk.WindowTypeHint.DIALOG) self.window_main.show() try: toplevel = Gdk.window_foreign_new(int(options.toplevel)) except AttributeError: toplevel = None if (toplevel): try: self.window_main.set_transient_for(toplevel) except: pass if options and options.open_tab: self.notebook_main.set_current_page(int(options.open_tab)) # gsettings all_schemas = Gio.Settings.list_schemas() if "com.ubuntu.update-notifier" in all_schemas: self.settings = Gio.Settings("com.ubuntu.update-notifier") # we need this for reverting self.initial_auto_launch = self.settings.get_int("regular-auto-launch-interval") else: self.settings = None self.initial_auto_launch = 0 self.combobox_other_updates.set_sensitive(False) # get the dbus backend bus = dbus.SystemBus() proxy = bus.get_object("com.ubuntu.SoftwareProperties", "/") self.backend = dbus.Interface(proxy, "com.ubuntu.SoftwareProperties") self.backend.connect_to_signal( "SourcesListModified", self.on_sources_list_modified) self.backend.connect_to_signal( "ConfigModified", self.on_config_modified) self.backend.connect_to_signal( "KeysModified", self.on_keys_modified) self.backend.connect_to_signal( "AuthFailed", self.on_auth_failed) self.backend.connect_to_signal( "CdromScanFailed", self.on_cdrom_scan_failed) # Show what we have early self.window_main.show() # used to store the handlers of callbacks self.handlers = [] # Put some life into the user interface: self.init_popcon() self.init_auto_update() self.init_release_upgrades() self.show_auto_update_level() # Setup the key list self.init_keys() self.show_keys() # Setup the ISV sources list self.init_isv_sources() self.show_isv_sources() self.show_cdrom_sources() # Setup and show the distro elements self.init_distro() self.show_distro() # Show the import/replace sources.list dialog if a file different # to the default sources.list was specified # NOTE: If the file path points to the default sources.list the user # perhaps assumed that s-p would act like a normal editor. # We have got some bug reports from users calling # "sudo software-properties-gtk /etc/apt/sources.list" from the # command line. if (file != None and os.path.abspath(file) != "%s%s" % (apt_pkg.config.find_dir("Dir::Etc"), apt_pkg.config.find("Dir::Etc::sourcelist"))): self.open_file(file)
def __init__(self, datadir=None, options=None, parent=None, file=None, attachWinID=None): """ Provide a KDE based graphical user interface to configure the used software repositories, corresponding authentication keys and update automation """ SoftwareProperties.__init__(self, options=options, datadir=datadir) self.options = options self.datadir = datadir global kapp kapp = KApplication() self.userinterface = SoftwarePropertiesKDEUI(datadir) self.userinterface.setWindowIcon(KIcon("applications-other")) self.userinterface.button_auth_restore.setIcon(KIcon("edit-undo")) self.userinterface.button_add_auth.setIcon(KIcon("list-add")) self.userinterface.button_auth_remove.setIcon(KIcon("list-remove")) self.userinterface.button_remove.setIcon(KIcon("list-remove")) self.userinterface.button_edit.setIcon(KIcon("document-edit")) self.userinterface.button_add.setIcon(KIcon("list-add")) self.userinterface.button_add_cdrom.setIcon(KIcon("media-optical")) translate_widget(self.userinterface) self.userinterface.show() if attachWinID is not None: KWindowSystem.setMainWindow(self.userinterface, int(attachWinID)) # rejected() signal from Close button kapp.connect(self.userinterface.buttonBox, SIGNAL("rejected()"), self.on_close_button) self.userinterface.buttonBox.button(QDialogButtonBox.Reset).setEnabled(False) # Put some life into the user interface: self.init_server_chooser() self.init_popcon() self.init_auto_update() self.init_release_upgrades() self.show_auto_update_level() # Setup the key list self.init_keys() self.show_keys() # Setup the ISV sources list self.init_isv_sources() self.show_isv_sources() self.show_cdrom_sources() kapp.connect(self.userinterface.checkbutton_source_code, SIGNAL("clicked()"), self.on_checkbutton_source_code_toggled) kapp.connect(self.userinterface.button_auth_restore, SIGNAL("clicked()"), self.on_restore_clicked) kapp.connect(self.userinterface.button_add_auth, SIGNAL("clicked()"), self.add_key_clicked) kapp.connect(self.userinterface.button_auth_remove, SIGNAL("clicked()"), self.remove_key_clicked) kapp.connect(self.userinterface.checkbutton_popcon, SIGNAL("toggled(bool)"), self.on_checkbutton_popcon_toggled) kapp.connect(self.userinterface.checkbutton_auto_update, SIGNAL("toggled(bool)"), self.on_auto_update_toggled) kapp.connect(self.userinterface.combobox_update_interval, SIGNAL("currentIndexChanged(int)"), self.on_combobox_update_interval_changed) kapp.connect(self.userinterface.button_remove, SIGNAL("clicked()"), self.on_remove_clicked) kapp.connect(self.userinterface.button_edit, SIGNAL("clicked()"), self.on_edit_clicked) kapp.connect(self.userinterface.button_add_cdrom, SIGNAL("clicked()"), self.on_button_add_cdrom_clicked) kapp.connect(self.userinterface.button_add, SIGNAL("clicked()"), self.on_add_clicked) kapp.connect(self.userinterface.treeview_sources, SIGNAL("itemChanged(QTreeWidgetItem*, int)"), self.on_isv_source_toggled) kapp.connect(self.userinterface.treeview_sources, SIGNAL("itemClicked(QTreeWidgetItem*, int)"), self.on_treeview_sources_cursor_changed) kapp.connect(self.userinterface.treeview_cdroms, SIGNAL("itemChanged(QTreeWidgetItem*, int)"), self.on_cdrom_source_toggled) kapp.connect(self.userinterface.treeview2, SIGNAL("itemClicked(QTreeWidgetItem*, int)"), self.on_treeview_keys_cursor_changed) button_close = self.userinterface.buttonBox.button(QDialogButtonBox.Close) button_close.setIcon(KIcon("dialog-close")) button_revert = self.userinterface.buttonBox.button(QDialogButtonBox.Reset) button_revert.setIcon(KIcon("edit-undo")) kapp.connect(button_revert, SIGNAL("clicked()"), self.on_button_revert_clicked) self.init_distro() self.show_distro()
def __init__(self, datadir=None, options=None, parent=None, file=None, attachWinID=None): """ Provide a KDE based graphical user interface to configure the used software repositories, corresponding authentication keys and update automation """ SoftwareProperties.__init__(self, options=options, datadir=datadir) self.options = options self.datadir = datadir global kapp kapp = QApplication.instance() kapp.setWindowIcon(QIcon.fromTheme("applications-other")) self.userinterface = SoftwarePropertiesKDEUI(datadir) self.userinterface.setWindowIcon(QIcon.fromTheme("applications-other")) self.userinterface.button_auth_restore.setIcon( QIcon.fromTheme("edit-undo")) self.userinterface.button_add_auth.setIcon(QIcon.fromTheme("list-add")) self.userinterface.button_auth_remove.setIcon( QIcon.fromTheme("list-remove")) self.userinterface.button_remove.setIcon( QIcon.fromTheme("list-remove")) self.userinterface.button_edit.setIcon( QIcon.fromTheme("document-edit")) self.userinterface.button_add.setIcon(QIcon.fromTheme("list-add")) self.userinterface.button_add_cdrom.setIcon( QIcon.fromTheme("media-optical")) translate_widget(self.userinterface) self.userinterface.show() # FIXME: winid not handled #if attachWinID is not None: #KWindowSystem.setMainWindow(self.userinterface, int(attachWinID)) # rejected() signal from Close button self.userinterface.buttonBox.rejected.connect(self.on_close_button) self.userinterface.buttonBox.button( QDialogButtonBox.Reset).setEnabled(False) # Put some life into the user interface: self.init_server_chooser() self.init_popcon() self.init_auto_update() self.init_release_upgrades() self.show_auto_update_level() # Setup the key list self.init_keys() self.show_keys() # Setup the ISV sources list self.init_isv_sources() self.show_isv_sources() self.show_cdrom_sources() self.userinterface.checkbutton_source_code.clicked.connect( self.on_checkbutton_source_code_toggled) self.userinterface.button_auth_restore.clicked.connect( self.on_restore_clicked) self.userinterface.button_add_auth.clicked.connect( self.add_key_clicked) self.userinterface.button_auth_remove.clicked.connect( self.remove_key_clicked) self.userinterface.checkbutton_popcon.toggled.connect( self.on_checkbutton_popcon_toggled) self.userinterface.checkbutton_auto_update.toggled.connect( self.on_auto_update_toggled) self.userinterface.combobox_update_interval.currentIndexChanged.connect( self.on_combobox_update_interval_changed) self.userinterface.button_remove.clicked.connect( self.on_remove_clicked) self.userinterface.button_edit.clicked.connect(self.on_edit_clicked) self.userinterface.button_add_cdrom.clicked.connect( self.on_button_add_cdrom_clicked) self.userinterface.button_add.clicked.connect(self.on_add_clicked) self.userinterface.treeview_sources.itemChanged.connect( self.on_isv_source_toggled) self.userinterface.treeview_sources.itemClicked.connect( self.on_treeview_sources_cursor_changed) self.userinterface.treeview_cdroms.itemChanged.connect( self.on_cdrom_source_toggled) self.userinterface.treeview2.itemClicked.connect( self.on_treeview_keys_cursor_changed) button_close = self.userinterface.buttonBox.button( QDialogButtonBox.Close) button_close.setIcon(QIcon.fromTheme("dialog-close")) button_revert = self.userinterface.buttonBox.button( QDialogButtonBox.Reset) button_revert.setIcon(QIcon.fromTheme("edit-undo")) button_revert.clicked.connect(self.on_button_revert_clicked) self.init_distro() self.show_distro()
def __init__(self, datadir=None, options=None, parent=None, file=None): """ Provide a KDE (actually Qt 4) based graphical user interface to configure the used software repositories, corresponding authentication keys and update automation """ SoftwareProperties.__init__(self, options=options, datadir=datadir) self.options = options self.datadir = datadir self.app = QApplication([]) self.userinterface = SoftwarePropertiesKDEUI(datadir) self.userinterface.setWindowIcon( QIcon("/usr/share/icons/hicolor/128x128/apps/adept_manager.png")) self.translate_widgets() self.userinterface.show() sys.excepthook = self.excepthook # rejected() signal from Close button self.app.connect(self.userinterface.buttonBox, SIGNAL("rejected()"), self.on_close_button) self.userinterface.buttonBox.button( QDialogButtonBox.Reset).setEnabled(False) # Put some life into the user interface: self.init_server_chooser() self.init_popcon() self.init_auto_update() self.show_auto_update_level() # Setup the key list self.init_keys() self.show_keys() # Setup the ISV sources list self.init_isv_sources() self.show_isv_sources() self.show_cdrom_sources() self.app.connect(self.userinterface.checkbutton_source_code, SIGNAL("clicked()"), self.on_checkbutton_source_code_toggled) self.app.connect(self.userinterface.button_auth_restore, SIGNAL("clicked()"), self.on_restore_clicked) self.app.connect(self.userinterface.button_add_auth, SIGNAL("clicked()"), self.add_key_clicked) self.app.connect(self.userinterface.button_auth_remove, SIGNAL("clicked()"), self.remove_key_clicked) self.app.connect(self.userinterface.checkbutton_popcon, SIGNAL("toggled(bool)"), self.on_checkbutton_popcon_toggled) self.app.connect(self.userinterface.checkbutton_auto_update, SIGNAL("toggled(bool)"), self.on_auto_update_toggled) self.app.connect(self.userinterface.combobox_update_interval, SIGNAL("currentIndexChanged(int)"), self.on_combobox_update_interval_changed) self.app.connect(self.userinterface.button_remove, SIGNAL("clicked()"), self.on_remove_clicked) self.app.connect(self.userinterface.button_edit, SIGNAL("clicked()"), self.on_edit_clicked) self.app.connect(self.userinterface.button_add_cdrom, SIGNAL("clicked()"), self.on_button_add_cdrom_clicked) self.app.connect(self.userinterface.button_add, SIGNAL("clicked()"), self.on_add_clicked) self.app.connect(self.userinterface.treeview_sources, SIGNAL("itemChanged(QTreeWidgetItem*, int)"), self.on_isv_source_toggled) self.app.connect(self.userinterface.treeview_cdroms, SIGNAL("itemChanged(QTreeWidgetItem*, int)"), self.on_cdrom_source_toggled) self.app.connect(self.userinterface.treeview_sources, SIGNAL("itemClicked(QTreeWidgetItem*, int)"), self.on_treeview_sources_cursor_changed) button_revert = self.userinterface.buttonBox.button( QDialogButtonBox.Reset) self.app.connect(button_revert, SIGNAL("clicked()"), self.on_button_revert_clicked) self.init_distro() self.show_distro()
def __init__(self, datadir=None, options=None, file=None, parent=None): """ Provide a GTK based graphical user interface to configure the used software repositories, corresponding authentication keys and update automation """ SoftwareProperties.__init__(self, options=options, datadir=datadir) gtk.window_set_default_icon_name("software-properties") SimpleGtkbuilderApp.__init__(self, os.path.join(datadir, "gtkbuilder", "main.ui"), domain="software-properties") if parent: self.window_main.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) self.window_main.show() try: self.window_main.set_transient_for(parent) except: pass # If externally called, reparent to external application. self.options = options if options and options.toplevel != None: self.window_main.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) self.window_main.show() toplevel = gtk.gdk.window_foreign_new(int(options.toplevel)) if (toplevel): try: self.window_main.window.set_transient_for(toplevel) except: pass if options and options.open_tab: self.notebook_main.set_current_page(int(options.open_tab)) # Show what we have early self.window_main.show() # used to store the handlers of callbacks self.handlers = [] # Put some life into the user interface: #self.init_popcon() #self.init_auto_update() #self.init_release_upgrades() #self.show_auto_update_level() self.vbox_popcon.hide() self.vbox8.hide() # Setup the key list self.init_keys() self.show_keys() # Setup the ISV sources list self.init_isv_sources() self.show_isv_sources() self.show_cdrom_sources() # Setup and show the distro elements self.init_distro() self.show_distro() # Show the import/replace sources.list dialog if a file different # to the default sources.list was specified # NOTE: If the file path points to the default sources.list the user # perhaps assumed that s-p would act like a normal editor. # We have got some bug reports from users calling # "sudo software-properties-gtk /etc/apt/sources.list" from the # command line. if file != None and \ os.path.abspath(file) != "%s%s" % (apt_pkg.config.find_dir("Dir::Etc"), apt_pkg.config.find("Dir::Etc::sourcelist")): self.open_file(file)