Esempio n. 1
0
    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")
Esempio n. 3
0
 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()
Esempio n. 7
0
    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)