show only 'valid' items in the list to choose from
authormishas <mikhail.sobolev@gmail.com>
Sat, 14 Apr 2007 20:29:22 +0000 (20:29 +0000)
committermishas <mikhail.sobolev@gmail.com>
Sat, 14 Apr 2007 20:29:22 +0000 (20:29 +0000)
git-svn-id: file:///svnroot/simple-launcher/trunk@186 3ba93dab-e023-0410-b42a-de7732cf370a

launcher-item.cc
launcher-item.h
settings-page-items.cc

index 6487f28..39fa274 100644 (file)
@@ -91,7 +91,7 @@ private:
   GKeyFile *myKeyFile;
 };
 
-LauncherItem::LauncherItem(): myEnabled(false) {
+LauncherItem::LauncherItem(): myIsGood(false), myEnabled(false) {
 }
 
 LauncherItem::~LauncherItem() {
@@ -108,6 +108,8 @@ std::string LauncherItem::translateString(const std::string& what) const {
 bool LauncherItem::load(const std::string& filename) {
   GKeyFileWrapper key_file;
 
+  myIsGood = false;
+
   for (;;) {
     myFileName = filename;
 
@@ -119,6 +121,8 @@ bool LauncherItem::load(const std::string& filename) {
       break;
     }
 
+    myIsGood = true;
+
     myName = key_file.getLocaleString(DESKTOP_ENTRY_GROUP, DESKTOP_ENTRY_NAME_FIELD);
     myComment = key_file.getLocaleString(DESKTOP_ENTRY_GROUP, DESKTOP_ENTRY_COMMENT_FIELD);
     myIcon = key_file.getString(DESKTOP_ENTRY_GROUP, DESKTOP_ENTRY_ICON_FIELD);
index 220c20a..3d399c7 100644 (file)
@@ -33,6 +33,8 @@ public:
 
   bool load(const std::string&);
 
+  bool valid() const { return myIsGood; }
+
   GdkPixbuf *getIcon(int icon_size) const;
 
   const std::string& getFileName() const { return myFileName; }
@@ -43,7 +45,7 @@ public:
 
   bool isEnabled(void) const { return myEnabled; }
 
-  void enable() { myEnabled = checkSanity(); }
+  void enable() { myEnabled = valid() && checkSanity(); }
   void disable() { myEnabled = false; }
   void toggle() {
     if (myEnabled) {
@@ -59,6 +61,8 @@ private:
   bool checkSanity(void) { return !myName.empty() && (!myService.empty() || !myExec.empty()); }
 
 private:
+  bool myIsGood;
+
   std::string myFileName, myName, myComment, myIcon, myService, myExec, myTextDomain;
   bool myEnabled;
 
index b7adca2..9f90cd2 100644 (file)
@@ -105,13 +105,16 @@ SettingsPageWithItems::SettingsPageWithItems(int icon_size, LauncherItems& items
 
   for (LauncherItems::Names::const_iterator it = myItems.myNames.begin(); it != myItems.myNames.end(); ++it) {
     LauncherItem *item = myItems.myItems[*it];
-    GtkTreeIter iter;
 
-    gtk_list_store_append(myStore, &iter);
-    {
-      GdkPixbuf *icon = item->getIcon(icon_size);
-      gtk_list_store_set(myStore, &iter, SLA_STORE_COLUMN_ICON, icon, SLA_STORE_COLUMN_INDEX, it-myItems.myNames.begin(), -1);
-      g_object_unref(G_OBJECT(icon));
+    if (item->valid()) {
+      GtkTreeIter iter;
+
+      gtk_list_store_append(myStore, &iter);
+      {
+        GdkPixbuf *icon = item->getIcon(icon_size);
+        gtk_list_store_set(myStore, &iter, SLA_STORE_COLUMN_ICON, icon, SLA_STORE_COLUMN_INDEX, it-myItems.myNames.begin(), -1);
+        g_object_unref(G_OBJECT(icon));
+      }
     }
   }
 }