From e7014881d2c994dd0e60427078c0c4bf6f4d1cdf Mon Sep 17 00:00:00 2001 From: mishas Date: Sat, 14 Apr 2007 20:29:22 +0000 Subject: [PATCH] show only 'valid' items in the list to choose from git-svn-id: file:///svnroot/simple-launcher/trunk@186 3ba93dab-e023-0410-b42a-de7732cf370a --- launcher-item.cc | 6 +++++- launcher-item.h | 6 +++++- settings-page-items.cc | 15 +++++++++------ 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/launcher-item.cc b/launcher-item.cc index 6487f28..39fa274 100644 --- a/launcher-item.cc +++ b/launcher-item.cc @@ -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); diff --git a/launcher-item.h b/launcher-item.h index 220c20a..3d399c7 100644 --- a/launcher-item.h +++ b/launcher-item.h @@ -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; diff --git a/settings-page-items.cc b/settings-page-items.cc index b7adca2..9f90cd2 100644 --- a/settings-page-items.cc +++ b/settings-page-items.cc @@ -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)); + } } } } -- 1.7.9.5