Author: rpmcruz
Date: Sat Jun 12 17:24:51 2010
New Revision: 62108
URL: http://svn.opensuse.org/viewcvs/yast?rev=62108&view=rev
Log:
* src/pkg/ygtkpkgmenubar.cc: memorize menu options.
Modified:
trunk/gtk/ChangeLog
trunk/gtk/src/pkg/YGPackageSelector.cc
trunk/gtk/src/pkg/YGPackageSelector.h
trunk/gtk/src/pkg/ygtkpkgmenubar.cc
trunk/gtk/src/pkg/ygtkpkgmenubar.h
trunk/gtk/src/pkg/ygtkpkgundolist.cc
trunk/gtk/src/pkg/yzyppwrapper.cc
trunk/gtk/src/pkg/yzyppwrapper.h
Modified: trunk/gtk/ChangeLog
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/ChangeLog?rev=62108&r1=62107&r2=62108&view=diff
==============================================================================
--- trunk/gtk/ChangeLog (original)
+++ trunk/gtk/ChangeLog Sat Jun 12 17:24:51 2010
@@ -1,3 +1,7 @@
+2010-06-12 Ricardo Cruz
+
+ * src/pkg/ygtkpkgmenubar.cc: memorize menu options.
+
2010-06-11 Ricardo Cruz
* src/pkg/ygtkpkgmenubar.cc: qt plugin gap: "cleanup
Modified: trunk/gtk/src/pkg/YGPackageSelector.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/YGPackageSelector.cc?rev=62108&r1=62107&r2=62108&view=diff
==============================================================================
--- trunk/gtk/src/pkg/YGPackageSelector.cc (original)
+++ trunk/gtk/src/pkg/YGPackageSelector.cc Sat Jun 12 17:24:51 2010
@@ -207,7 +207,6 @@
for (std::list ::iterator it = m_queryWidgets.begin();
it != m_queryWidgets.end(); it++)
(*it)->setListener (this);
- Ypp::setInterface (this);
}
~Impl()
@@ -470,7 +469,6 @@
(*it)->updateList (list);
}
}
-
}
void refreshToolbox()
@@ -702,7 +700,6 @@
impl = new Impl(); // can take a little
ygtk_wizard_set_child (wizard, impl->getWidget());
-
impl->m_menu = new YGtkPkgMenuBar();
ygtk_wizard_set_custom_menu (wizard, impl->m_menu->getWidget(), FALSE);
@@ -713,6 +710,7 @@
ygtk_wizard_set_help_text (wizard, str.c_str());
dialog->setTitle (title);
+ Ypp::setInterface (impl);
impl->refreshQuery();
if (summaryMode()) popupChanges();
@@ -774,7 +772,8 @@
impl->m_filterSuffices.remove (suffix);
if (enable)
impl->m_filterSuffices.push_back (suffix);
- impl->refreshQuery();
+ if (Ypp::getInterface() == impl) // inited ?
+ impl->refreshQuery();
}
void YGPackageSelector::showRepoManager()
Modified: trunk/gtk/src/pkg/YGPackageSelector.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/YGPackageSelector.h?rev=62108&r1=62107&r2=62108&view=diff
==============================================================================
--- trunk/gtk/src/pkg/YGPackageSelector.h (original)
+++ trunk/gtk/src/pkg/YGPackageSelector.h Sat Jun 12 17:24:51 2010
@@ -31,7 +31,7 @@
void searchFor (Ypp::PoolQuery::StringAttribute attrb, const std::string &text);
void showSelectableDetails (Ypp::Selectable &sel);
void popupChanges();
- void filterPkgSuffix (const std::string &suffix, bool enable);
+ void filterPkgSuffix (const std::string &suffix, bool enable_filter);
void showRepoManager();
YGtkPkgUndoList *undoList();
Modified: trunk/gtk/src/pkg/ygtkpkgmenubar.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkpkgmenubar.cc?rev=62108&r1=62107&r2=62108&view=diff
==============================================================================
--- trunk/gtk/src/pkg/ygtkpkgmenubar.cc (original)
+++ trunk/gtk/src/pkg/ygtkpkgmenubar.cc Sat Jun 12 17:24:51 2010
@@ -15,10 +15,57 @@
#include "ygtkpkgmenubar.h"
#include
#include
+#include
#include
#include "yzyppwrapper.h"
#include "YGPackageSelector.h"
+// flags handling
+
+#define YAST_GTK_SYSCONFIG "/etc/sysconfig/yast2-gtk"
+
+struct Flags {
+ Flags() {
+ keys = g_key_file_new();
+ g_key_file_load_from_file (keys, YAST_GTK_SYSCONFIG, G_KEY_FILE_NONE, NULL);
+ modified = false;
+ }
+
+ ~Flags() {
+ if (modified)
+ writeFile();
+ g_key_file_free (keys);
+ }
+
+ bool hasKey (const char *variable) {
+ return g_key_file_has_key (keys, "zypp", variable, NULL);
+ }
+
+ bool getBool (const char *variable) {
+ return g_key_file_get_boolean (keys, "zypp", variable, NULL);
+ }
+
+ void setBool (const char *variable, bool value) {
+ g_key_file_set_boolean (keys, "zypp", variable, value);
+ modified = true;
+ }
+
+ private:
+ void writeFile() {
+ FILE *out = fopen (YAST_GTK_SYSCONFIG, "w");
+ if (out) {
+ gsize size;
+ gchar *data = g_key_file_to_data (keys, &size, NULL);
+ fwrite (data, sizeof (char), size, out);
+ g_free (data);
+ fclose (out);
+ }
+ }
+
+ GKeyFile *keys;
+ bool modified;
+};
+
// utilities
static GtkWidget *append_menu_item (GtkWidget *menu, const char *text,
@@ -42,17 +89,6 @@
return item;
}
-static GtkWidget *append_check_menu_item (GtkWidget *menu, const char *text,
- bool checked, GCallback callback, gpointer callback_data)
-{
- GtkWidget *item = gtk_check_menu_item_new_with_mnemonic (text);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), checked);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- if (callback)
- g_signal_connect_after (G_OBJECT (item), "toggled", callback, callback_data);
- return item;
-}
-
static void errorMsg (const std::string &message)
{
GtkWidget *dialog = gtk_message_dialog_new (YGDialog::currentWindow(),
@@ -411,43 +447,122 @@
static void manualResolvePackageDependencies()
{ Ypp::runSolver (true); }
-static void auto_check_cb (GtkCheckMenuItem *item)
-{ Ypp::setEnableSolver (gtk_check_menu_item_get_active (item)); }
+// check menu item flags
-static void show_devel_pkgs_cb (GtkCheckMenuItem *item)
-{
- bool exclude = !gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (item));
- YGPackageSelector::get()->filterPkgSuffix ("-devel", exclude);
-}
+struct CheckMenuFlag {
+ CheckMenuFlag (GtkWidget *menu, const char *text) {
+ m_item = gtk_check_menu_item_new_with_mnemonic (text);
+ g_object_set_data_full (G_OBJECT (m_item), "this", this, destructor);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), m_item);
+ }
+
+ void init (Flags *flags) {
+ bool check = getZyppValue();
+
+ const char *var = variable();
+ if (flags->hasKey (var)) {
+ bool c = flags->getBool (var);
+ if (c != check)
+ setZyppValue (c);
+ check = c;
+ }
-static void show_debug_pkgs_cb (GtkCheckMenuItem *item)
-{
- bool exclude = !gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (item));
- YGPackageSelector::get()->filterPkgSuffix ("-debuginfo", exclude);
- YGPackageSelector::get()->filterPkgSuffix ("-debugsource", exclude);
-}
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (m_item), check);
+ g_signal_connect_after (G_OBJECT (m_item), "toggled", G_CALLBACK (toggled_cb), this);
+ }
-static void system_verification_mode_cb (GtkCheckMenuItem *item)
-{
- bool on = gtk_check_menu_item_get_active (item);
- zypp::getZYpp()->resolver()->setSystemVerification (on);
-}
+ virtual const char *variable() = 0;
+ virtual bool getZyppValue() = 0;
+ virtual void setZyppValue (bool on) = 0;
+ virtual void runtimeSync() {}
+
+ void writeFile (bool on) {
+ Flags flags;
+ flags.setBool (variable(), on);
+ }
+
+ static void toggled_cb (GtkCheckMenuItem *item, CheckMenuFlag *pThis) {
+ bool on = gtk_check_menu_item_get_active (item);
+ pThis->setZyppValue (on);
+ pThis->runtimeSync();
+ pThis->writeFile (on);
+ }
+
+ static void destructor (gpointer data) {
+ delete ((CheckMenuFlag *) data);
+ }
+
+ GtkWidget *m_item;
+};
+
+struct AutoCheckItem : public CheckMenuFlag {
+ AutoCheckItem (GtkWidget *menu, const char *text, Flags *flags)
+ : CheckMenuFlag (menu, text) { init (flags); }
+ virtual const char *variable() { return "auto-check"; }
+ virtual bool getZyppValue() { return Ypp::isSolverEnabled(); }
+ virtual void setZyppValue (bool on) { Ypp::setEnableSolver (on); }
+};
+
+struct ShowDevelCheckItem : public CheckMenuFlag {
+ ShowDevelCheckItem (GtkWidget *menu, const char *text, Flags *flags)
+ : CheckMenuFlag (menu, text) { init (flags); }
+ virtual const char *variable() { return "show-devel"; }
+ virtual bool getZyppValue() { return true; }
+ virtual void setZyppValue (bool on)
+ { YGPackageSelector::get()->filterPkgSuffix ("-devel", !on); }
+};
+
+struct ShowDebugCheckItem : public CheckMenuFlag {
+ ShowDebugCheckItem (GtkWidget *menu, const char *text, Flags *flags)
+ : CheckMenuFlag (menu, text) { init (flags); }
+ virtual const char *variable() { return "show-debug"; }
+ virtual bool getZyppValue() { return true; }
+ virtual void setZyppValue (bool on) {
+ YGPackageSelector::get()->filterPkgSuffix ("-debuginfo", !on);
+ YGPackageSelector::get()->filterPkgSuffix ("-debugsource", !on);
+ }
+};
+
+struct SystemVerificationCheckItem : public CheckMenuFlag {
+ SystemVerificationCheckItem (GtkWidget *menu, const char *text, Flags *flags)
+ : CheckMenuFlag (menu, text) { init (flags); }
+ virtual const char *variable() { return "system-verification"; }
+ virtual bool getZyppValue() {
+ return zypp::getZYpp()->resolver()->systemVerification();
+ }
+ virtual void setZyppValue (bool on) {
+ zypp::getZYpp()->resolver()->setSystemVerification (on);
+ }
+ virtual void runtimeSync() {}
+};
#if ZYPP_VERSION > 6031004
-static void cleanup_deps_on_remove_cb (GtkCheckMenuItem *item)
-{
- bool on = gtk_check_menu_item_get_active (item);
- zypp::getZYpp()->resolver()->setCleandepsOnRemove( on );
- Ypp::runSolver();
-}
-
-static void allow_vendor_change_cb (GtkCheckMenuItem *item)
-{
- bool on = gtk_check_menu_item_get_active (item);
- zypp::getZYpp()->resolver()->setAllowVendorChange( on );
- Ypp::runSolver();
-}
+struct CleanupDepsCheckItem : public CheckMenuFlag {
+ CleanupDepsCheckItem (GtkWidget *menu, const char *text, Flags *flags)
+ : CheckMenuFlag (menu, text) { init (flags); }
+ virtual const char *variable() { return "cleanup-deps"; }
+ virtual bool getZyppValue() {
+ return zypp::getZYpp()->resolver()->cleandepsOnRemove();
+ }
+ virtual void setZyppValue (bool on) {
+ zypp::getZYpp()->resolver()->setCleandepsOnRemove( on );
+ }
+ virtual void runtimeSync() { Ypp::runSolver(); }
+};
+
+struct AllowVendorChangeCheckItem : public CheckMenuFlag {
+ AllowVendorChangeCheckItem (GtkWidget *menu, const char *text, Flags *flags)
+ : CheckMenuFlag (menu, text) { init (flags); }
+ virtual const char *variable() { return "allow-vendor-change"; }
+ virtual bool getZyppValue() {
+ return zypp::getZYpp()->resolver()->allowVendorChange();
+ }
+ virtual void setZyppValue (bool on) {
+ zypp::getZYpp()->resolver()->setAllowVendorChange( on );
+ }
+ virtual void runtimeSync() { Ypp::runSolver(); }
+};
#endif
@@ -571,6 +686,7 @@
{
YGPackageSelector *selector = YGPackageSelector::get();
m_menu = gtk_menu_bar_new();
+ Flags flags;
GtkWidget *menu_bar = m_menu, *item, *submenu;
item = append_menu_item (menu_bar, _("File"), NULL, NULL, NULL);
@@ -596,27 +712,18 @@
gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), (submenu = gtk_menu_new()));
append_menu_item (submenu, _("Check Now"), NULL,
G_CALLBACK (manualResolvePackageDependencies), this);
- append_check_menu_item (submenu, _("Autocheck"), Ypp::isSolverEnabled(),
- G_CALLBACK (auto_check_cb), this);
+ new AutoCheckItem (submenu, _("Autocheck"), &flags);
item = append_menu_item (menu_bar, _("Options"), NULL, NULL, NULL);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), (submenu = gtk_menu_new()));
// Translators: don't translate the "-devel"
- append_check_menu_item (submenu, _("Show -devel packages"),
- true, G_CALLBACK (show_devel_pkgs_cb), this);
+ new ShowDevelCheckItem (submenu, _("Show -devel packages"), &flags);
// Translators: don't translate the "-debuginfo/-debugsource" part
- append_check_menu_item (submenu, _("Show -debuginfo/-debugsource Packages"),
- true, G_CALLBACK (show_debug_pkgs_cb), this);
- append_check_menu_item (submenu, _("System Verification Mode"),
- zypp::getZYpp()->resolver()->systemVerification(),
- G_CALLBACK (system_verification_mode_cb), this);
+ new ShowDebugCheckItem (submenu, _("Show -debuginfo/-debugsource Packages"), &flags);
+ new SystemVerificationCheckItem (submenu, _("System Verification Mode"), &flags);
#if ZYPP_VERSION > 6031004
- append_check_menu_item (submenu, _("_Cleanup when deleting packages"),
- zypp::getZYpp()->resolver()->cleandepsOnRemove(),
- G_CALLBACK (cleanup_deps_on_remove_cb), this);
- append_check_menu_item (submenu, _("_Allow vendor change"),
- zypp::getZYpp()->resolver()->allowVendorChange(),
- G_CALLBACK (allow_vendor_change_cb), this);
+ new CleanupDepsCheckItem (submenu, _("_Cleanup when deleting packages"), &flags);
+ new AllowVendorChangeCheckItem (submenu, _("_Allow vendor change"), &flags);
#endif
item = append_menu_item (menu_bar, _("Extras"), NULL, NULL, NULL);
Modified: trunk/gtk/src/pkg/ygtkpkgmenubar.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkpkgmenubar.h?rev=62108&r1=62107&r2=62108&view=diff
==============================================================================
--- trunk/gtk/src/pkg/ygtkpkgmenubar.h (original)
+++ trunk/gtk/src/pkg/ygtkpkgmenubar.h Sat Jun 12 17:24:51 2010
@@ -16,8 +16,8 @@
GtkWidget *getWidget() { return m_menu; }
-private:
- GtkWidget *m_menu;
+ private:
+ GtkWidget *m_menu;
};
#endif
Modified: trunk/gtk/src/pkg/ygtkpkgundolist.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkpkgundolist.cc?rev=62108&r1=62107&r2=62108&view=diff
==============================================================================
--- trunk/gtk/src/pkg/ygtkpkgundolist.cc (original)
+++ trunk/gtk/src/pkg/ygtkpkgundolist.cc Sat Jun 12 17:24:51 2010
@@ -183,7 +183,7 @@
}
};
-#define PATH_TO_YAST_SYSCONFIG "/etc/sysconfig/yast2"
+#define YAST_SYSCONFIG "/etc/sysconfig/yast2"
#include
enum { CLOSE_MODE, RESTART_MODE, SUMMARY_MODE };
@@ -191,7 +191,7 @@
static int read_PKGMGR_ACTION_AT_EXIT()
{ // from yast2-ncurses, NCPackageSelector.cc
std::map sysconfig =
- zypp::base::sysconfig::read( PATH_TO_YAST_SYSCONFIG );
+ zypp::base::sysconfig::read (YAST_SYSCONFIG);
std::map ::const_iterator it =
sysconfig.find("PKGMGR_ACTION_AT_EXIT");
if (it != sysconfig.end()) {
@@ -219,7 +219,7 @@
}
int ret = -1;
string cmd = "sed -i 's/^[ \t]*PKGMGR_ACTION_AT_EXIT.*$/PKGMGR_ACTION_AT_EXIT=\"" +
- _mode + "\"/' " + PATH_TO_YAST_SYSCONFIG;
+ _mode + "\"/' " + YAST_SYSCONFIG;
ret = system(cmd.c_str());
yuiMilestone() << "Executing system cmd " << cmd << " returned " << ret << endl;
}
@@ -237,9 +237,9 @@
int mode = read_PKGMGR_ACTION_AT_EXIT();
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_box), mode == CLOSE_MODE);
gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (check_box), mode == SUMMARY_MODE);
- if (access (PATH_TO_YAST_SYSCONFIG, W_OK) != 0) {
+ if (access (YAST_SYSCONFIG, W_OK) != 0) {
gtk_widget_set_sensitive (check_box, FALSE);
- gtk_widget_set_tooltip_text (check_box, "Cannot write to " PATH_TO_YAST_SYSCONFIG);
+ gtk_widget_set_tooltip_text (check_box, "Cannot write to " YAST_SYSCONFIG);
}
g_signal_connect_after (G_OBJECT (check_box), "toggled",
G_CALLBACK (close_when_done_toggled_cb), NULL);
Modified: trunk/gtk/src/pkg/yzyppwrapper.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/yzyppwrapper.cc?rev=62108&r1=62107&r2=62108&view=diff
==============================================================================
--- trunk/gtk/src/pkg/yzyppwrapper.cc (original)
+++ trunk/gtk/src/pkg/yzyppwrapper.cc Sat Jun 12 17:24:51 2010
@@ -853,6 +853,8 @@
runSolver(); // check problems at start
}
+Ypp::Interface *Ypp::getInterface() { return g_interface; }
+
Ypp::Problem::Solution *Ypp::Problem::getSolution (int nb)
{ return (Solution *) g_slist_nth_data ((GSList *) impl, nb); }
Modified: trunk/gtk/src/pkg/yzyppwrapper.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/yzyppwrapper.h?rev=62108&r1=62107&r2=62108&view=diff
==============================================================================
--- trunk/gtk/src/pkg/yzyppwrapper.h (original)
+++ trunk/gtk/src/pkg/yzyppwrapper.h Sat Jun 12 17:24:51 2010
@@ -280,6 +280,7 @@
};
void setInterface (Interface *interface);
+ Interface *getInterface();
// Pool selectables
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org