def __init__(self): Progress.__init__(self) self._lasttopic = None self._lastsubkey = None self._lastsubkeystart = 0 self._fetchermode = False self._seentopics = {} self._addline = False self.setScreenWidth(getScreenWidth())
def __init__(self): Progress.__init__(self) self._lasttopic = None self._lastsubkey = None self._lastsubkeystart = 0 self._fetchermode = False self._seentopics = {} self._addline = False self.setScreenWidth(getScreenWidth()) signal.signal(signal.SIGWINCH, self.handleScreenWidth)
def start(self): Progress.start(self) self.setHasSub(self._hassub) self._ticking = True self._stopticking = False if self._hassub: self._currentcolumn.set_visible(False) self._totalcolumn.set_visible(False) self._speedcolumn.set_visible(False) thread.start_new_thread(self.tick, ())
def start(self): Progress.start(self) self.setHasSub(self._hassub) self._ticking = True self._stopticking = False if self._hassub: self._listview.hideColumn(self._currentcolumn) self._listview.hideColumn(self._totalcolumn) self._listview.hideColumn(self._speedcolumn) self._listview.hideColumn(self._etacolumn) thread.start_new_thread(self.tick, ())
def stop(self): self._stopticking = True while self._ticking: pass Progress.stop(self) if self._hassub: self._listview.clear() self._subiters.clear() self._subindex = 0 self._shorturl.reset() qt.QDialog.hide(self)
def stop(self): self._stopticking = True while self._ticking: pass Progress.stop(self) if self._hassub: self._treemodel.clear() self._subiters.clear() self._subindex = 0 self._lastpath = None self._shorturl.reset() gtk.Window.hide(self)
def test_timeout(self): timeout = 3 sleep_time = 6 def reset_timeout(timeout=fetcher.SOCKETTIMEOUT): fetcher.SOCKETTIMEOUT = timeout reset_timeout(timeout) self.addCleanup(reset_timeout) headers = [] def handler(request): time.sleep(sleep_time) request.send_error(404, "After timeout sleep") request.send_header("Content-Length", "6") request.wfile.write("Hello!") started = time.time() # We hide errors here because we know we'll get a broken pipe on # the server side if the test succeeds. self.start_server(handler, hide_errors=True) self.fetcher.enqueue(URL) self.fetcher.run(progress=Progress()) self.assertTrue(timeout <= (time.time() - started) < sleep_time - 1) item = self.fetcher.getItem(URL)
def __init__(self, fetcher, channels=None, progress=None): self._channels = channels or [] self._fetcher = fetcher self._progress = progress or Progress() self._available = {} self._media = {} if self._channels: self.compute()
def test_user_agent(self): headers = [] def handler(request): headers[:] = request.headers.headers self.start_server(handler) self.fetcher.enqueue(URL) self.fetcher.run(progress=Progress()) self.assertTrue(("User-Agent: smart/%s\r\n" % VERSION) in headers)
def setUp(self): self.progress = Progress() self.fetcher = Fetcher() self.cache = Cache() self.download_dir = self.makeDir() self.fetcher.setLocalPathPrefix(self.download_dir + "/") # Disable caching so that things blow up when not found. self.fetcher.setCaching(NEVER) sysconf.set("deb-arch", "i386")
def test_401_handling(self): headers = [] def handler(request): request.send_error(401, "Authorization Required") request.send_header("Content-Length", "17") request.wfile.write("401 Unauthorized.") self.start_server(handler) self.fetcher.enqueue(URL) self.fetcher.run(progress=Progress()) item = self.fetcher.getItem(URL) self.assertEquals(item.getStatus(), FAILED)
def __init__(self): Progress.__init__(self) QDialog.__init__(self) self.setModal(True) self.setCaption("Operation Progress") self.layout = QVBoxLayout(self, 5, 5) self.topic = QLabel(self) self.layout.addWidget(self.topic) self.progress = QProgressBar(self) self.layout.addWidget(self.progress) self.listview = QListView(self) self.listview.addColumn("Progress") self.listview.addColumn("Description") self.layout.addWidget(self.listview) self.subprogress = {} self.subindex = 0
def test_404_handling(self): headers = [] def handler(request): request.send_error(404, "An expected error") request.send_header("Content-Length", "6") request.wfile.write("Hello!") self.start_server(handler) self.fetcher.enqueue(URL) self.fetcher.run(progress=Progress()) item = self.fetcher.getItem(URL) self.assertEquals(item.getFailedReason(), u"File not found")
def setUp(self): self.progress = Progress() self.fetcher = Fetcher() self.cache = Cache() self.download_dir = self.makeDir() self.fetcher.setLocalPathPrefix(self.download_dir + "/") # Disable caching so that things blow up when not found. self.fetcher.setCaching(NEVER) # Make sure to trigger old bugs in debug error reporting. sysconf.set("log-level", DEBUG)
def setUp(self): self.progress = Progress() self.fetcher = Fetcher() self.cache = Cache() self.download_dir = self.makeDir() self.fetcher.setLocalPathPrefix(self.download_dir + "/") # Disable caching so that things blow up when not found. self.fetcher.setCaching(NEVER) sysconf.set("deb-arch", "i386") self.trustdb = open("%s/aptdeb/trustdb.gpg" % TESTDATADIR).read()
def test_ratelimit(self): bytes = 30 rate_limit = 10 sysconf.set("max-download-rate", rate_limit, soft=True) def handler(request): request.send_header("Content-Length", str(bytes)) request.wfile.write(" " * bytes) self.start_server(handler) self.fetcher.enqueue(URL) start = time.time() self.fetcher.run(progress=Progress()) stop = time.time() elapsed_time = stop - start self.assertTrue(elapsed_time >= bytes / rate_limit)
def setUp(self): self.channel = createChannel( "alias", { "type": "apt-deb", "baseurl": "file://%s/deb" % TESTDATADIR, "distribution": "./" }) class TestInterface(Interface): output = [] def message(self, level, msg): self.output.append((level, msg)) def showOutput(self, data): self.output.append(data) self.iface = TestInterface(ctrl) self.progress = Progress() self.fetcher = Fetcher() self.cache = Cache() self.channel.fetch(self.fetcher, self.progress) self.loader = self.channel.getLoaders()[0] self.cache.addLoader(self.loader) self.old_iface = iface.object self.old_sysconf = pickle.dumps(sysconf.object) iface.object = self.iface self.cache.load() self.pm = DebPackageManager() # skip test if dpkg is unavailable dpkg = sysconf.get("dpkg", "dpkg") output = tempfile.TemporaryFile() status = self.pm.dpkg([dpkg, "--version"], output) if not os.WIFEXITED(status) or os.WEXITSTATUS(status) != 0: if not hasattr(self, 'skipTest'): # Python < 2.7 self.skipTest = self.fail # error self.skipTest("%s not found" % dpkg)
def test_remove_pragma_no_cache_from_curl(self): fetcher.enablePycurl() headers = [] def handler(request): headers[:] = request.headers.headers self.start_server(handler) old_http_proxy = os.environ.get("http_proxy") os.environ["http_proxy"] = URL try: self.fetcher.enqueue(URL) self.fetcher.run(progress=Progress()) finally: if old_http_proxy: os.environ["http_proxy"] = old_http_proxy else: del os.environ["http_proxy"] self.assertTrue("Pragma: no-cache\r\n" not in headers)
def search(self, searcher): offsets = {} for pkg in self._packages: offsets[pkg.loaders[self]] = pkg for section, offset in self.getSections(Progress()): pkg = offsets.get(offset) if not pkg: continue ratio = 0 if searcher.group: group = self._sections[pkg] for pat in searcher.group: if pat.search(group): ratio = 1 break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.summary or searcher.description: toks = section.get("description", "").split("\n", 1) if len(toks) == 2: summary, description = toks else: summary, description = toks[0], "" if searcher.summary: for pat in searcher.summary: if pat.search(summary): ratio = 1 break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.description: for pat in searcher.description: if pat.search(description): ratio = 1 break if ratio: searcher.addResult(pkg, ratio)
def reloadChannels(self, channels=None, caching=ALWAYS): if channels is None: manual = False self.rebuildSysConfChannels() self.rebuildDynamicChannels() channels = self._channels.values() hooks.call("reload-channels", channels) else: manual = True # Get channels directory and check the necessary locks. channelsdir = os.path.join(sysconf.get("data-dir"), "channels/") userchannelsdir = os.path.join(sysconf.get("user-data-dir"), "channels/") if not os.path.isdir(channelsdir): try: os.makedirs(channelsdir) except OSError: raise Error, _("Unable to create channel directory.") if caching is ALWAYS: if sysconf.getReadOnly() and os.access(channelsdir, os.W_OK): iface.warning( _("The Smart library is already in use by " "another process.")) iface.warning(_("Configuration is in readonly mode!")) if not self._pathlocks.lock(channelsdir): raise Error, _("Channel information is locked for writing.") elif sysconf.getReadOnly(): raise Error, _("Can't update channels in readonly mode.") elif not self._pathlocks.lock(channelsdir, exclusive=True): raise Error, _("Can't update channels with active readers.") self._fetcher.setLocalDir(channelsdir, mangle=True) # Prepare progress. If we're reading from the cache, we don't want # too much information being shown. Otherwise, ask for a full-blown # progress for the interface, and build information of currently # available packages to compare later. if caching is ALWAYS: progress = Progress() else: progress = iface.getProgress(self._fetcher, True) oldpkgs = {} for pkg in self._cache.getPackages(): oldpkgs[(pkg.name, pkg.version)] = True progress.start() steps = 0 for channel in channels: steps += channel.getFetchSteps() progress.set(0, steps) # Rebuild mirror information. self.reloadMirrors() self._fetcher.setForceMountedCopy(True) self._cache.reset() # Do the real work. result = True for channel in channels: digest = channel.getDigest() if not manual and channel.hasManualUpdate(): self._fetcher.setCaching(ALWAYS) else: self._fetcher.setCaching(caching) if channel.getFetchSteps() > 0: progress.setTopic( _("Fetching information for '%s'...") % (channel.getName() or channel.getAlias())) progress.show() self._fetcher.setForceCopy(channel.isRemovable()) self._fetcher.setLocalPathPrefix(channel.getAlias() + "%%") try: if not channel.fetch(self._fetcher, progress): iface.debug(_("Failed fetching channel '%s'") % channel) result = False except Error, e: iface.error(unicode(e)) iface.debug(_("Failed fetching channel '%s'") % channel) result = False if (channel.getDigest() != digest and isinstance(channel, PackageChannel)): channel.addLoaders(self._cache) if channel.getAlias() in self._sysconfchannels: self._cachechanged = True
def search(self, searcher): for h, offset in self.getHeaders(Progress()): pkg = self._offsets.get(offset) if not pkg: continue ratio = 0 if searcher.url: refurl = h[rpm.RPMTAG_URL] if refurl: for url, cutoff in searcher.url: _, newratio = globdistance(url, refurl, cutoff) if newratio > ratio: ratio = newratio if ratio == 1: break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.path: paths = h[rpm.RPMTAG_OLDFILENAMES] if paths: for spath, cutoff in searcher.path: for path in paths: _, newratio = globdistance(spath, path, cutoff) if newratio > ratio: ratio = newratio if ratio == 1: break else: continue break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.group: group = self._groups[pkg] for pat in searcher.group: if pat.search(group): ratio = 1 break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.summary: summary = h[rpm.RPMTAG_SUMMARY] for pat in searcher.summary: if pat.search(summary): ratio = 1 break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.description: description = h[rpm.RPMTAG_DESCRIPTION] for pat in searcher.description: if pat.search(description): ratio = 1 break if ratio: searcher.addResult(pkg, ratio)
def setSubDone(self, subkey): #log.debug("called smartinstall.AnacondaProgress.setSubDone") Progress.setSubDone(self, subkey) self.show()
def __init__(self, hassub, parent=None): Progress.__init__(self) qt.QDialog.__init__(self, parent) self._hassub = hassub self._shorturl = ShortURL(50) self._ticking = False self._stopticking = False self._fetcher = None self._beenshown = False self._mainthread = None if hassub: self.setMinimumSize(500, 400) else: self.setMinimumSize(300, 80) self.setIcon(getPixmap("smart")) self.setCaption(_("Operation Progress")) vbox = qt.QVBoxLayout(self, 10, 10) vbox.setResizeMode(qt.QLayout.FreeResize) vbox.setMargin(10) vbox.setSpacing(10) self._topic = qt.QLabel(self) vbox.addWidget(self._topic) self._progressbar = qt.QProgressBar(self) self._progressbar.setPercentageVisible(True) self._progressbar.show() vbox.addWidget(self._progressbar) if hassub: self._listview = qt.QListView(self) self._listview.setSorting(-1, False) self._listview.setSelectionMode(qt.QListView.NoSelection) self._listview.show() vbox.addWidget(self._listview) column = self._listview.addColumn(_("Progress")) self._listview.setColumnWidthMode(column, qt.QListView.Manual) self._listview.setColumnWidth(column, 55) column = self._listview.addColumn(_("Current")) self._currentcolumn = column column = self._listview.addColumn(_("Total")) self._totalcolumn = column column = self._listview.addColumn(_("Speed")) self._speedcolumn = column column = self._listview.addColumn(_("ETA")) self._etacolumn = column column = self._listview.addColumn(_("Description")) self._listview.setColumnWidthMode(column, qt.QListView.Manual) self._listview.setColumnWidth(column, 165) self._desccolumn = column self._subiters = {} self._subindex = 0 self._bbox = qt.QHBox(self) self._bbox.setSpacing(10) self._bbox.layout().addStretch(1) vbox.addWidget(self._bbox) button = qt.QPushButton(_("Cancel"), self._bbox) button.show() qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._cancel)
def __init__(self, hassub): Progress.__init__(self) gtk.Window.__init__(self) self.__gobject_init__() self.connect("delete-event", lambda x, y: True) self._hassub = hassub self._shorturl = ShortURL(50) self._ticking = False self._stopticking = False self._fetcher = None if hassub: self.set_size_request(500, 400) else: self.set_size_request(300, 80) self.set_icon(getPixbuf("smart")) self.set_title(_("Operation Progress")) self.set_modal(True) self.set_position(gtk.WIN_POS_CENTER) vbox = gtk.VBox() vbox.set_border_width(10) vbox.set_spacing(10) vbox.show() gtk.Window.add(self, vbox) self._topic = gtk.Label() self._topic.set_alignment(0, 0.5) self._topic.show() vbox.pack_start(self._topic, expand=False, fill=False) self._progress = gtk.ProgressBar() self._progress.set_size_request(-1, 25) self._progress.show() vbox.pack_start(self._progress, expand=False, fill=False) if hassub: self._scrollwin = gtk.ScrolledWindow() self._scrollwin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self._scrollwin.set_shadow_type(gtk.SHADOW_IN) self._scrollwin.show() vbox.pack_start(self._scrollwin) self._treemodel = gtk.ListStore(gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING) self._treeview = gtk.TreeView(self._treemodel) self._treeview.show() self._scrollwin.add(self._treeview) renderer = ProgressCellRenderer() column = gtk.TreeViewColumn(_("Progress"), renderer, percent=0) column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) column.set_fixed_width(110) self._treeview.append_column(column) renderer = gtk.CellRendererText() renderer.set_fixed_height_from_font(True) column = gtk.TreeViewColumn(_("Current"), renderer, text=2) self._currentcolumn = column self._treeview.append_column(column) renderer = gtk.CellRendererText() renderer.set_fixed_height_from_font(True) column = gtk.TreeViewColumn(_("Total"), renderer, text=3) self._totalcolumn = column self._treeview.append_column(column) renderer = gtk.CellRendererText() renderer.set_fixed_height_from_font(True) column = gtk.TreeViewColumn(_("Speed"), renderer, text=4) self._speedcolumn = column self._treeview.append_column(column) renderer = gtk.CellRendererText() renderer.set_fixed_height_from_font(True) column = gtk.TreeViewColumn(_("Description"), renderer, text=1) column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) self._treeview.append_column(column) self._subiters = {} self._subindex = 0 self._lastpath = None self._bbox = gtk.HButtonBox() self._bbox.set_spacing(10) self._bbox.set_layout(gtk.BUTTONBOX_END) vbox.pack_start(self._bbox, expand=False) button = gtk.Button(stock="gtk-cancel") button.show() button.connect("clicked", self._cancel) self._bbox.pack_start(button)
def reloadChannels(self, channels=None, caching=ALWAYS): if channels is None: manual = False self.rebuildSysConfChannels() self.rebuildDynamicChannels() channels = self._channels.values() hooks.call("reload-channels", channels) else: manual = True # Get channels directory and check the necessary locks. channelsdir = os.path.join(sysconf.get("data-dir"), "channels/") userchannelsdir = os.path.join(sysconf.get("user-data-dir"), "channels/") if not os.path.isdir(channelsdir): try: os.makedirs(channelsdir) except OSError: raise Error, _("Unable to create channel directory.") if caching is ALWAYS: if sysconf.getReadOnly() and os.access(channelsdir, os.W_OK): iface.warning(_("The Smart library is already in use by " "another process.")) iface.warning(_("Configuration is in readonly mode!")) if not self._pathlocks.lock(channelsdir): raise Error, _("Channel information is locked for writing.") elif sysconf.getReadOnly(): raise Error, _("Can't update channels in readonly mode.") elif not self._pathlocks.lock(channelsdir, exclusive=True): raise Error, _("Can't update channels with active readers.") self._fetcher.setLocalDir(channelsdir, mangle=True) # Prepare progress. If we're reading from the cache, we don't want # too much information being shown. Otherwise, ask for a full-blown # progress for the interface, and build information of currently # available packages to compare later. if caching is ALWAYS: progress = Progress() else: progress = iface.getProgress(self._fetcher, True) oldpkgs = {} for pkg in self._cache.getPackages(): oldpkgs[(pkg.name, pkg.version)] = True progress.start() steps = 0 for channel in channels: steps += channel.getFetchSteps() progress.set(0, steps) # Rebuild mirror information. self.reloadMirrors() self._fetcher.setForceMountedCopy(True) self._cache.reset() # Do the real work. result = True for channel in channels: digest = channel.getDigest() if not manual and channel.hasManualUpdate(): self._fetcher.setCaching(ALWAYS) else: self._fetcher.setCaching(caching) if channel.getFetchSteps() > 0: progress.setTopic(_("Fetching information for '%s'...") % (channel.getName() or channel.getAlias())) progress.show() self._fetcher.setForceCopy(channel.isRemovable()) self._fetcher.setLocalPathPrefix(channel.getAlias()+"%%") try: if not channel.fetch(self._fetcher, progress): iface.debug(_("Failed fetching channel '%s'") % channel) result = False except Error, e: iface.error(unicode(e)) iface.debug(_("Failed fetching channel '%s'") % channel) result = False if (channel.getDigest() != digest and isinstance(channel, PackageChannel)): channel.addLoaders(self._cache) if channel.getAlias() in self._sysconfchannels: self._cachechanged = True
def stop(self): #log.debug("called smartinstall.AnacondaProgress.stop") self._closeProgressWindow() Progress.stop(self)
def __init__(self, hassub, parent=None): Progress.__init__(self) qt.QDialog.__init__(self, parent) self._hassub = hassub self._shorturl = ShortURL(50) self._ticking = False self._stopticking = False self._fetcher = None self._beenshown = False self._mainthread = None if hassub: self.setMinimumSize(500, 400) else: self.setMinimumSize(300, 80) self.setIcon(getPixmap("smart")) self.setCaption(_("Operation Progress")) vbox = qt.QVBoxLayout(self, 10, 10) vbox.setResizeMode(qt.QLayout.FreeResize) vbox.setMargin(10) vbox.setSpacing(10) self._topic = qt.QLabel(self) vbox.addWidget(self._topic) self._progressbar = qt.QProgressBar(self) self._progressbar.setPercentageVisible(True) self._progressbar.show() vbox.addWidget(self._progressbar) if hassub: self._listview = qt.QListView(self) self._listview.setSorting(-1, False); self._listview.setSelectionMode(qt.QListView.NoSelection ) self._listview.show() vbox.addWidget(self._listview) column = self._listview.addColumn(_("Progress")) self._listview.setColumnWidthMode(column, qt.QListView.Manual) self._listview.setColumnWidth(column, 55) column = self._listview.addColumn(_("Current")) self._currentcolumn = column column = self._listview.addColumn(_("Total")) self._totalcolumn = column column = self._listview.addColumn(_("Speed")) self._speedcolumn = column column = self._listview.addColumn(_("ETA")) self._etacolumn = column column = self._listview.addColumn(_("Description")) self._listview.setColumnWidthMode(column, qt.QListView.Manual) self._listview.setColumnWidth(column, 165) self._desccolumn = column self._subiters = {} self._subindex = 0 self._bbox = qt.QHBox(self) self._bbox.setSpacing(10) self._bbox.layout().addStretch(1) vbox.addWidget(self._bbox) button = qt.QPushButton(_("Cancel"), self._bbox) button.show() qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._cancel)
def getSubProgress(self, obj): if not hasattr(self, "_progress"): self._progress = Progress() return self._progress
def __init__(self, intf): self.intf = intf self.progressWindow = None self.windowTitle = "smart Package Manager" self.subTopic = None Progress.__init__(self)
def getProgress(self, obj, hassub=False): if not hasattr(self, "_progress"): self._progress = Progress() return self._progress
def stop(self): Progress.stop(self) self._shorturl.reset() print
def __init__(self, hassub): Progress.__init__(self) gtk.Window.__init__(self) self.connect("delete-event", lambda x,y: True) # updates from subthreads not showing up [#592503] self._threadsafe = not glib or glib.glib_version < (2, 24, 0) self._hassub = hassub self._shorturl = ShortURL(50) self._ticking = False self._stopticking = False self._fetcher = None if hassub: self.set_size_request(500, 100) self.set_default_size(500, 400) else: self.set_size_request(300, 80) def configure_event(widget, event): maxlen = widget.allocation.width / 10 self._shorturl = ShortURL(maxlen) return False self.connect("configure-event", configure_event) self.set_icon(getPixbuf("smart")) self.set_title(_("Operation Progress")) self.set_modal(True) self.set_position(gtk.WIN_POS_CENTER) vbox = gtk.VBox() vbox.set_border_width(10) vbox.set_spacing(10) vbox.show() gtk.Window.add(self, vbox) self._topic = gtk.Label() self._topic.set_alignment(0, 0.5) self._topic.show() vbox.pack_start(self._topic, expand=False, fill=False) self._progressbar = gtk.ProgressBar() self._progressbar.set_size_request(-1, 25) self._progressbar.show() vbox.pack_start(self._progressbar, expand=False, fill=False) if hassub: expander = gtk.Expander() expander.set_expanded(True) expander.show() def toggle_window(expander, param_spec): if expander.get_expanded(): self.resize(500, 400) else: self.resize(500, 100) expander.connect("notify::expanded", toggle_window) vbox.pack_start(expander) self._scrollwin = gtk.ScrolledWindow() self._scrollwin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self._scrollwin.set_shadow_type(gtk.SHADOW_IN) self._scrollwin.show() expander.add(self._scrollwin) self._treemodel = gtk.ListStore(gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING) self._treeview = gtk.TreeView(self._treemodel) self._treeview.show() self._scrollwin.add(self._treeview) if gtk.pygtk_version < (2,6,0): renderer = ProgressCellRenderer() column = gtk.TreeViewColumn(_("Progress"), renderer, percent=0) else: renderer = gtk.CellRendererProgress() # don't display the percent label renderer.set_property("text", "") column = gtk.TreeViewColumn(_("Progress"), renderer, value=0) column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) column.set_fixed_width(110) self._treeview.append_column(column) renderer = gtk.CellRendererText() renderer.set_fixed_height_from_font(True) column = gtk.TreeViewColumn(_("Current"), renderer, text=2) self._currentcolumn = column self._treeview.append_column(column) renderer = gtk.CellRendererText() renderer.set_fixed_height_from_font(True) column = gtk.TreeViewColumn(_("Total"), renderer, text=3) self._totalcolumn = column self._treeview.append_column(column) renderer = gtk.CellRendererText() renderer.set_fixed_height_from_font(True) column = gtk.TreeViewColumn(_("Speed"), renderer, text=4) self._speedcolumn = column self._treeview.append_column(column) renderer = gtk.CellRendererText() renderer.set_fixed_height_from_font(True) column = gtk.TreeViewColumn(_("ETA"), renderer, text=5) self._etacolumn = column self._treeview.append_column(column) renderer = gtk.CellRendererText() renderer.set_fixed_height_from_font(True) column = gtk.TreeViewColumn(_("Description"), renderer, text=1) column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) self._treeview.append_column(column) self._subiters = {} self._subindex = 0 self._lastpath = None self._bbox = gtk.HButtonBox() self._bbox.set_spacing(10) self._bbox.set_layout(gtk.BUTTONBOX_END) vbox.pack_start(self._bbox, expand=False) button = gtk.Button(stock="gtk-cancel") button.show() button.connect("clicked", self._cancel) self._bbox.pack_start(button)
def __init__(self, hassub): Progress.__init__(self) gtk.Window.__init__(self) self.__gobject_init__() self.connect("delete-event", lambda x,y: True) self._hassub = hassub self._shorturl = ShortURL(50) self._ticking = False self._stopticking = False self._fetcher = None if hassub: self.set_size_request(500, 400) else: self.set_size_request(300, 80) self.set_icon(getPixbuf("smart")) self.set_title(_("Operation Progress")) self.set_modal(True) self.set_position(gtk.WIN_POS_CENTER) vbox = gtk.VBox() vbox.set_border_width(10) vbox.set_spacing(10) vbox.show() gtk.Window.add(self, vbox) self._topic = gtk.Label() self._topic.set_alignment(0, 0.5) self._topic.show() vbox.pack_start(self._topic, expand=False, fill=False) self._progress = gtk.ProgressBar() self._progress.set_size_request(-1, 25) self._progress.show() vbox.pack_start(self._progress, expand=False, fill=False) if hassub: self._scrollwin = gtk.ScrolledWindow() self._scrollwin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self._scrollwin.set_shadow_type(gtk.SHADOW_IN) self._scrollwin.show() vbox.pack_start(self._scrollwin) self._treemodel = gtk.ListStore(gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING) self._treeview = gtk.TreeView(self._treemodel) self._treeview.show() self._scrollwin.add(self._treeview) renderer = ProgressCellRenderer() column = gtk.TreeViewColumn(_("Progress"), renderer, percent=0) column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) column.set_fixed_width(110) self._treeview.append_column(column) renderer = gtk.CellRendererText() renderer.set_fixed_height_from_font(True) column = gtk.TreeViewColumn(_("Current"), renderer, text=2) self._currentcolumn = column self._treeview.append_column(column) renderer = gtk.CellRendererText() renderer.set_fixed_height_from_font(True) column = gtk.TreeViewColumn(_("Total"), renderer, text=3) self._totalcolumn = column self._treeview.append_column(column) renderer = gtk.CellRendererText() renderer.set_fixed_height_from_font(True) column = gtk.TreeViewColumn(_("Speed"), renderer, text=4) self._speedcolumn = column self._treeview.append_column(column) renderer = gtk.CellRendererText() renderer.set_fixed_height_from_font(True) column = gtk.TreeViewColumn(_("Description"), renderer, text=1) column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) self._treeview.append_column(column) self._subiters = {} self._subindex = 0 self._lastpath = None self._bbox = gtk.HButtonBox() self._bbox.set_spacing(10) self._bbox.set_layout(gtk.BUTTONBOX_END) vbox.pack_start(self._bbox, expand=False) button = gtk.Button(stock="gtk-cancel") button.show() button.connect("clicked", self._cancel) self._bbox.pack_start(button)
def setDone(self): #log.debug("called smartinstall.AnacondaProgress.setDone") Progress.setDone(self) self.show()