diff --git a/sulfur/src/sulfur/__init__.py b/sulfur/src/sulfur/__init__.py
index 4f6da4e7c..289babc97 100644
--- a/sulfur/src/sulfur/__init__.py
+++ b/sulfur/src/sulfur/__init__.py
@@ -67,11 +67,12 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
self.Cacher = EntropyCacher()
self.do_debug = False
+ self._RESOURCES_LOCKED = False
locked = self.Equo.application_lock_check(silent = True)
if locked:
+ self._RESOURCES_LOCKED = True
okDialog( None,
- _("Entropy resources are locked and not accessible. Another Entropy application is running. Sorry, can't load Sulfur.") )
- raise SystemExit(1)
+ _("Another Entropy instance is running. You won't be able to install/remove/sync applications.") )
self.safe_mode_txt = ''
# check if we'are running in safe mode
if self.Equo.safe_mode:
@@ -332,6 +333,13 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
# can lead to sqlite3 db corruptions?
self.setup_background_cache_generators()
+ def setup_resources_locked(self):
+ self.ui.repoRefreshButton.set_sensitive(not self._RESOURCES_LOCKED)
+ self.ui.queueTabBox.set_sensitive(not self._RESOURCES_LOCKED)
+ self.ui.reposVbox.set_sensitive(not self._RESOURCES_LOCKED)
+ self.ui.installPackageItem.set_sensitive(not self._RESOURCES_LOCKED)
+ self.ui.systemVbox.set_sensitive(not self._RESOURCES_LOCKED)
+
def setup_labels(self):
# make Sulfur label look nicer
@@ -339,6 +347,8 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
_("Applications"),))
self.ui.rbSyncSimpleLabel.set_markup("%s" % (
_("Sync"),))
+ self.ui.rbQueueSimpleLabel.set_markup("%s" % (
+ _("Actions"),))
small_widgets = [self.ui.rbRefreshLabel, self.ui.rbUpdatesLabel,
self.ui.rbAvailableLabel, self.ui.rbInstalledLabel,
@@ -395,6 +405,7 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
self.ui.advancedMode.set_active(1)
SulfurConf.simple_mode = do_simple
SulfurConf.save()
+ self.setup_resources_locked()
def switch_simple_mode(self):
self.ui.servicesMenuItem.hide()
@@ -425,6 +436,7 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
self.ui.rbUpdatesSimpleHbox.reorder_child(adv_content, 0)
self.ui.rbSyncSimpleLabel.show()
+ self.ui.rbQueueSimpleLabel.show()
self.ui.rbUpdatesSimpleLabel.show()
self.ui.rbUpdatesLabel.hide()
self.ui.rbAllSimpleLabel.show()
@@ -467,6 +479,7 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
self.ui.headerHbox.reorder_child(adv_content, 0)
self.ui.rbSyncSimpleLabel.hide()
+ self.ui.rbQueueSimpleLabel.hide()
self.ui.rbUpdatesSimpleLabel.hide()
self.ui.rbUpdatesLabel.show()
self.ui.rbAllSimpleLabel.hide()
@@ -1296,6 +1309,9 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
def update_repositories(self, repos):
+ if self._RESOURCES_LOCKED:
+ return False
+
force = self.ui.forceRepoUpdate.get_active()
try:
@@ -1738,6 +1754,11 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin):
download_sources = False, direct_remove_matches = None,
direct_install_matches = None):
+ if self._RESOURCES_LOCKED:
+ okDialog(self.ui.main,
+ _("Another Entropy instance is running. Cannot process queue."))
+ return False
+
if remove_repos is None:
remove_repos = []
if direct_remove_matches is None:
diff --git a/sulfur/src/sulfur/sulfur.glade b/sulfur/src/sulfur/sulfur.glade
index f2a18b51f..624d3b0df 100644
--- a/sulfur/src/sulfur/sulfur.glade
+++ b/sulfur/src/sulfur/sulfur.glade
@@ -497,10 +497,27 @@
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
vertical
-
+
True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- gtk-apply
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ gtk-apply
+
+
+ 0
+
+
+
+
+ True
+ True
+
+
+ 1
+
+
0
@@ -510,7 +527,7 @@
True
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- Queue
+ Actions
True
@@ -5257,15 +5274,6 @@ Relaxed
tab
-
-
-
-
-
-
- tab
-
-
1