[sulfur] several usability improvements and bug fixing

This commit is contained in:
Fabio Erculiani
2010-01-16 17:59:34 +01:00
parent 8469c8305d
commit 7071faa315
3 changed files with 53 additions and 63 deletions

View File

@@ -38,7 +38,7 @@ import entropy.tools
from entropy.const import etpConst, const_get_stringtype, \
initconfig_entropy_constants
from entropy.i18n import _
from entropy.misc import TimeScheduled, ParallelTask
from entropy.misc import ParallelTask
from entropy.cache import EntropyCacher, MtimePingus
from entropy.output import print_generic
@@ -195,7 +195,6 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
self._filterbar_previous_txt = ''
self.firstButton = None # first button
self.activePage = 'repos'
self.pageBootstrap = True
# Progress bars
self.progress = BaseProgress(self.ui, self.switch_notebook_page, self)
# Package Radiobuttons
@@ -338,6 +337,8 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
# make Sulfur label look nicer
self.ui.rbAllSimpleLabel.set_markup("<small>%s</small>" % (
_("Applications"),))
self.ui.rbSyncSimpleLabel.set_markup("<small>%s</small>" % (
_("Sync"),))
small_widgets = [self.ui.rbRefreshLabel, self.ui.rbUpdatesLabel,
self.ui.rbAvailableLabel, self.ui.rbInstalledLabel,
@@ -353,6 +354,7 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
def file_updates_cache_gen():
self.Equo.FileUpdates.scanfs(quiet = True)
self.Cacher.sync()
return False
def file_updates_fill_view():
try:
@@ -360,6 +362,7 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
except AttributeError: # it is really necessary
return
gobject.idle_add(file_updates_cache_gen)
return False
gobject.idle_add(file_updates_fill_view)
@@ -421,10 +424,9 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
fill = False)
self.ui.rbUpdatesSimpleHbox.reorder_child(adv_content, 0)
# updates label
self.ui.rbSyncSimpleLabel.show()
self.ui.rbUpdatesSimpleLabel.show()
self.ui.rbUpdatesLabel.hide()
# all label
self.ui.rbAllSimpleLabel.show()
self.ui.rbRefreshLabel.hide()
@@ -464,10 +466,9 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
fill = False)
self.ui.headerHbox.reorder_child(adv_content, 0)
# updates label
self.ui.rbSyncSimpleLabel.hide()
self.ui.rbUpdatesSimpleLabel.hide()
self.ui.rbUpdatesLabel.show()
# all label
self.ui.rbAllSimpleLabel.hide()
self.ui.rbRefreshLabel.show()
@@ -1295,9 +1296,6 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
def update_repositories(self, repos):
self.disable_ugc = True
self.hide_notebook_tabs_for_install()
self.progress.set_mainLabel(_('Initializing Repository module...'))
force = self.ui.forceRepoUpdate.get_active()
@@ -1317,6 +1315,11 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
self.show_notebook_tabs_after_install()
return 2
self.disable_ugc = True
self.hide_notebook_tabs_for_install()
self.start_working()
self.ui_lock(True)
self.__repo_update_rc = -1000
def run_up():
self.__repo_update_rc = repoConn.sync()
@@ -1355,8 +1358,14 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
self.progress.set_extraLabel(
_('sys-apps/entropy needs to be updated as soon as possible.'))
self.end_working()
self.progress.reset_progress()
self.reset_cache_status()
self.setup_repoView()
self.setup_application()
self.set_package_radio('updates')
initconfig_entropy_constants(etpSys['rootdir'])
self.ui_lock(False)
self.disable_ugc = False
self.show_notebook_tabs_after_install()
@@ -1476,7 +1485,6 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
def show_packages(self, back_to_page = None, on_init = False):
self.ui_lock(True)
action = self.lastPkgPB
if action == 'all':
masks = ['installed', 'available', 'masked', 'updates']
@@ -1484,29 +1492,8 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
masks = [action]
self.disable_ugc = True
self.ui_lock(True)
self.set_busy()
bootstrap = False
if (self.Equo._get_updates_cache(empty_deps = False) == None):
if self.do_debug:
print_generic("show_packages: bootstrap True due to empty world cache")
bootstrap = True
self.switch_notebook_page('output')
elif (self.Equo._get_available_packages_cache() is None) and \
(('available' in masks) or ('updates' in masks)):
if self.do_debug:
print_generic("show_packages: bootstrap True due to empty avail cache")
bootstrap = True
self.switch_notebook_page('output')
if bootstrap:
if self.do_debug:
if on_init:
print_generic("show_packages: bootstrap is enabled, clearing ALL cache")
else:
print_generic("show_packages: bootstrap is enabled, and cache has been removed. I won't touch anything")
if on_init:
self.etpbase.clear_cache()
self.start_working()
allpkgs = []
self.progress.set_mainLabel(_('Generating Metadata, please wait.'))
@@ -1532,12 +1519,10 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
self.etpbase.get_groups("downgrade")
gobject.idle_add(do_more_caching)
if bootstrap:
self.end_working()
# set updates label
if action == 'updates':
self._set_updates_label(len(allpkgs))
raw_updates = len(self.etpbase.get_raw_groups('updates'))
self._set_updates_label(raw_updates)
empty = False
do_switch_to = None
@@ -1587,8 +1572,6 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
self.progress.hide() #Hide Progress
if back_to_page:
self.switch_notebook_page(back_to_page)
elif bootstrap:
self.switch_notebook_page('packages')
self.unset_busy()
self.ui_lock(False)
@@ -1959,11 +1942,6 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
def switch_notebook_page(self, page):
self.on_PageButton_changed(None, page)
def switch_application_tab(self, action, on_init = False):
rb = self.packageRB[action]
rb.set_active(True)
self.on_pkgFilter_toggled(rb, action, on_init = on_init)
####### events
def _get_selected_repo_index( self ):

View File

@@ -480,6 +480,10 @@ class SulfurApplicationEventsMixin:
def on_pkgFilter_toggled(self, rb, action, on_init = False):
do_clear_filter_bar = False
if action != self.lastPkgPB:
do_clear_filter_bar = True
rb.grab_add()
self.lastPkgPB = action
@@ -502,6 +506,10 @@ class SulfurApplicationEventsMixin:
self.show_packages(on_init = on_init)
rb.grab_remove()
if do_clear_filter_bar:
# clear filter bar
self.ui.pkgFilter.set_text("")
def on_repoRefreshButton_clicked(self, widget):
self.on_repoRefresh_clicked(widget)
self.switch_notebook_page('packages')
@@ -515,22 +523,10 @@ class SulfurApplicationEventsMixin:
def do_repo_refresh(self, repos):
self.switch_notebook_page('output')
self.ui.main.queue_draw()
self.ui_lock(True)
try:
self.gtk_loop()
self.start_working()
status = self.update_repositories(repos)
self.end_working()
self.progress.reset_progress()
self.reset_cache_status()
self.setup_repoView()
self.setup_application()
self.switch_notebook_page('repos')
if status:
self.show_notice_board()
finally:
self.ui_lock(False)
status = self.update_repositories(repos)
self.switch_notebook_page('repos')
if status:
self.show_notice_board()
def on_cacheButton_clicked(self, widget):
self.repoView.get_selected()

View File

@@ -139,11 +139,27 @@
<property name="orientation">vertical</property>
<property name="spacing">3</property>
<child>
<widget class="GtkImage" id="image104">
<widget class="GtkHBox" id="hbox5">
<property name="visible">True</property>
<property name="xpad">15</property>
<property name="icon_name">view-refresh</property>
<property name="icon-size">5</property>
<child>
<widget class="GtkImage" id="image104">
<property name="visible">True</property>
<property name="icon_name">view-refresh</property>
<property name="icon-size">5</property>
</widget>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="rbSyncSimpleLabel">
<property name="visible">True</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="position">0</property>