Author: rpmcruz
Date: Sat Jan 16 17:17:07 2010
New Revision: 60408
URL: http://svn.opensuse.org/viewcvs/yast?rev=60408&view=rev
Log:
* src/pkg/YGPackageSelector.cc: added --undo-box flag.
* src/pkg/YGPackageSelector.cc: added menu-bar (not
enabled by default yet).
* src/ygtkwizard.h/c: added method for custom menu-bar.
Modified:
trunk/gtk/ChangeLog
trunk/gtk/src/YGPackageSelectorPluginStub.cc
trunk/gtk/src/pkg/YGPackageSelector.cc
trunk/gtk/src/pkg/ygtkpackageview.cc
trunk/gtk/src/ygtkwizard.c
trunk/gtk/src/ygtkwizard.h
Modified: trunk/gtk/ChangeLog
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/ChangeLog?rev=60408&r1=60407&r2=60408&view=diff
==============================================================================
--- trunk/gtk/ChangeLog (original)
+++ trunk/gtk/ChangeLog Sat Jan 16 17:17:07 2010
@@ -1,3 +1,12 @@
+2010-01-16 Ricardo Cruz
+
+ * src/pkg/YGPackageSelector.cc: added --undo-box flag.
+
+ * src/pkg/YGPackageSelector.cc: added menu-bar (not
+ enabled by default yet).
+
+ * src/ygtkwizard.h/c: added method for custom menu-bar.
+
2010-01-15 Ricardo Cruz
* src/pkg/YGPackageSelector.cc: added repositories combo and
Modified: trunk/gtk/src/YGPackageSelectorPluginStub.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGPackageSelectorPluginStub.cc?rev=60408&r1=60407&r2=60408&view=diff
==============================================================================
--- trunk/gtk/src/YGPackageSelectorPluginStub.cc (original)
+++ trunk/gtk/src/YGPackageSelectorPluginStub.cc Sat Jan 16 17:17:07 2010
@@ -20,6 +20,7 @@
status_side = true, status_top = false, status_tabs = false,
status_tabs_as_actions = false, undo_side = false, undo_tab = true,
undo_old_style = false, undo_log_all = false, undo_log_changed = false,
+ undo_box = false,
status_col = false, action_col = true,
action_col_as_button = false, action_col_as_check = false, action_col_label = true,
version_col = true, single_line_rows = false, colorful_rows = false,
@@ -56,6 +57,7 @@
{ "undo-old-style", &undo_old_style },
{ "undo-log-all", &undo_log_all },
{ "undo-log-changed", &undo_log_changed },
+ { "undo-box", &undo_box },
{ "status-col", &status_col },
{ "action-col", &action_col },
{ "action-col-as-button", &action_col_as_button },
Modified: trunk/gtk/src/pkg/YGPackageSelector.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/YGPackageSelector.cc?rev=60408&r1=60407&r2=60408&view=diff
==============================================================================
--- trunk/gtk/src/pkg/YGPackageSelector.cc (original)
+++ trunk/gtk/src/pkg/YGPackageSelector.cc Sat Jan 16 17:17:07 2010
@@ -33,7 +33,8 @@
categories_side,
repositories_side, categories_top, repositories_top, status_side, status_top,
status_tabs, status_tabs_as_actions,
- undo_side, undo_tab, undo_old_style, undo_log_all, undo_log_changed, status_col,
+ undo_side, undo_tab, undo_old_style, undo_log_all, undo_log_changed, undo_box,
+ status_col,
action_col, action_col_as_button, action_col_as_check, version_col,
single_line_rows, details_start_hide, toolbar_top, toolbar_yast, arrange_by;
@@ -42,8 +43,8 @@
static gboolean paint_white_expose_cb (GtkWidget *widget, GdkEventExpose *event)
{
cairo_t *cr = gdk_cairo_create (widget->window);
- GdkColor color = { 0, 255 << 8, 255 << 8, 255 << 8 };
- gdk_cairo_set_source_color (cr, &color);
+ GdkColor white = { 0, 255 << 8, 255 << 8, 255 << 8 };
+ gdk_cairo_set_source_color (cr, &white);
cairo_rectangle (cr, event->area.x, event->area.y,
event->area.width, event->area.height);
cairo_fill (cr);
@@ -353,7 +354,7 @@
gtk_misc_set_alignment (GTK_MISC (m_empty_label), 0.5, 0.5);
GtkWidget *vbox = gtk_vbox_new (FALSE, 6);
- gtk_container_set_border_width (GTK_CONTAINER (vbox), 4);
+ gtk_container_set_border_width (GTK_CONTAINER (vbox), 4); // FIXME: are these inner borders?
gtk_box_pack_start (GTK_BOX (vbox), heading, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (vbox), m_empty_label, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (vbox), m_entries_box, TRUE, TRUE, 0);
@@ -1676,6 +1677,104 @@
};
#endif
+static void errorMsg (const std::string &header, const std::string &message)
+{
+ GtkWidget *dialog = gtk_message_dialog_new (YGDialog::currentWindow(),
+ GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
+ "%s", header.c_str());
+ gtk_message_dialog_format_secondary_markup (GTK_MESSAGE_DIALOG (dialog),
+ "%s", message.c_str());
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+}
+
+static void import_file_cb (GtkMenuItem *item)
+{
+ GtkWidget *dialog;
+ dialog = gtk_file_chooser_dialog_new (_("Import Package List"),
+ YGDialog::currentWindow(), GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
+ GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL);
+
+ int ret = gtk_dialog_run (GTK_DIALOG (dialog));
+ if (ret == GTK_RESPONSE_ACCEPT) {
+ char *filename;
+ filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+ if (!Ypp::get()->importList (filename)) {
+ std::string error = _("Couldn't load package list from: ");
+ error += filename;
+ errorMsg (_("Import Failed"), error);
+ }
+ g_free (filename);
+ }
+ gtk_widget_destroy (dialog);
+}
+
+static void export_file_cb (GtkMenuItem *item)
+{
+ GtkWidget *dialog;
+ dialog = gtk_file_chooser_dialog_new (_("Export Package List"),
+ YGDialog::currentWindow(), GTK_FILE_CHOOSER_ACTION_SAVE,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
+ GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
+
+ int ret = gtk_dialog_run (GTK_DIALOG (dialog));
+ if (ret == GTK_RESPONSE_ACCEPT) {
+ char *filename;
+ filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+ if (!Ypp::get()->exportList (filename)) {
+ std::string error = _("Couldn't save package list to: ");
+ error += filename;
+ errorMsg (_("Export Failed"), error);
+ }
+ g_free (filename);
+ }
+ gtk_widget_destroy (dialog);
+}
+
+static void create_solver_testcase_cb (GtkMenuItem *item)
+{
+ const char *dirname = "/var/log/YaST2/solverTestcase";
+ std::string msg = _("Use this to generate extensive logs to help tracking down "
+ "bugs in the dependency resolver.\nThe logs will be stored in "
+ "directory: ");
+ msg += dirname;
+
+ GtkWidget *dialog = gtk_message_dialog_new (YGDialog::currentWindow(),
+ GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK_CANCEL,
+ "%s", _("Create Dependency Resolver Test Case"));
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "%s", msg.c_str());
+ int ret = gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+
+ if (ret == GTK_RESPONSE_OK) {
+ if (Ypp::get()->createSolverTestcase (dirname)) {
+ GtkWidget *dialog = gtk_message_dialog_new (YGDialog::currentWindow(),
+ GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION,
+ GTK_BUTTONS_YES_NO, "%s", _("Success"));
+ msg = _("Dependency resolver test case written to");
+ msg += " <tt>";
+ msg += dirname;
+ msg += "</tt>\n";
+ msg += _("Prepare <tt>y2logs.tgz tar</tt> archive to attach to Bugzilla?");
+ gtk_message_dialog_format_secondary_markup (GTK_MESSAGE_DIALOG (dialog),
+ "%s", msg.c_str());
+ ret = gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+ if (ret == GTK_RESPONSE_YES)
+ YGUI::ui()->askSaveLogs();
+ }
+ else {
+ msg = _("Failed to create dependency resolver test case.\n"
+ "Please check disk space and permissions for");
+ msg += " <tt>";
+ msg += dirname;
+ msg += "</tt>";
+ errorMsg ("Error", msg.c_str());
+ }
+ }
+}
+
class ToolsBox
{
GtkWidget *m_box;
@@ -1710,105 +1809,6 @@
gtk_box_pack_start (GTK_BOX (m_box), button, FALSE, TRUE, 0);
gtk_widget_show_all (m_box);
}
-
-private:
- static void errorMsg (const std::string &header, const std::string &message)
- {
- GtkWidget *dialog = gtk_message_dialog_new (YGDialog::currentWindow(),
- GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
- "%s", header.c_str());
- gtk_message_dialog_format_secondary_markup (GTK_MESSAGE_DIALOG (dialog),
- "%s", message.c_str());
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
- }
-
- static void import_file_cb (GtkMenuItem *item, ToolsBox *pThis)
- {
- GtkWidget *dialog;
- dialog = gtk_file_chooser_dialog_new (_("Import Package List"),
- YGDialog::currentWindow(), GTK_FILE_CHOOSER_ACTION_OPEN,
- GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
- GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL);
-
- int ret = gtk_dialog_run (GTK_DIALOG (dialog));
- if (ret == GTK_RESPONSE_ACCEPT) {
- char *filename;
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
- if (!Ypp::get()->importList (filename)) {
- std::string error = _("Couldn't load package list from: ");
- error += filename;
- errorMsg (_("Import Failed"), error);
- }
- g_free (filename);
- }
- gtk_widget_destroy (dialog);
- }
-
- static void export_file_cb (GtkMenuItem *item, ToolsBox *pThis)
- {
- GtkWidget *dialog;
- dialog = gtk_file_chooser_dialog_new (_("Export Package List"),
- YGDialog::currentWindow(), GTK_FILE_CHOOSER_ACTION_SAVE,
- GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
- GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
-
- int ret = gtk_dialog_run (GTK_DIALOG (dialog));
- if (ret == GTK_RESPONSE_ACCEPT) {
- char *filename;
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
- if (!Ypp::get()->exportList (filename)) {
- std::string error = _("Couldn't save package list to: ");
- error += filename;
- errorMsg (_("Export Failed"), error);
- }
- g_free (filename);
- }
- gtk_widget_destroy (dialog);
- }
-
- static void create_solver_testcase_cb (GtkMenuItem *item)
- {
- const char *dirname = "/var/log/YaST2/solverTestcase";
- std::string msg = _("Use this to generate extensive logs to help tracking down "
- "bugs in the dependency resolver.\nThe logs will be stored in "
- "directory: ");
- msg += dirname;
-
- GtkWidget *dialog = gtk_message_dialog_new (YGDialog::currentWindow(),
- GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK_CANCEL,
- "%s", _("Create Dependency Resolver Test Case"));
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "%s", msg.c_str());
- int ret = gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
-
- if (ret == GTK_RESPONSE_OK) {
- if (Ypp::get()->createSolverTestcase (dirname)) {
- GtkWidget *dialog = gtk_message_dialog_new (YGDialog::currentWindow(),
- GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION,
- GTK_BUTTONS_YES_NO, "%s", _("Success"));
- msg = _("Dependency resolver test case written to");
- msg += " <tt>";
- msg += dirname;
- msg += "</tt>\n";
- msg += _("Prepare <tt>y2logs.tgz tar</tt> archive to attach to Bugzilla?");
- gtk_message_dialog_format_secondary_markup (GTK_MESSAGE_DIALOG (dialog),
- "%s", msg.c_str());
- ret = gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
- if (ret == GTK_RESPONSE_YES)
- YGUI::ui()->askSaveLogs();
- }
- else {
- msg = _("Failed to create dependency resolver test case.\n"
- "Please check disk space and permissions for");
- msg += " <tt>";
- msg += dirname;
- msg += "</tt>";
- errorMsg ("Error", msg.c_str());
- }
- }
- }
};
//** Dialogs
@@ -2931,6 +2931,8 @@
return vpaned;
}
+// expander box
+
static void ygtk_expander_box_size_allocate (GtkWidget *vbox, GtkAllocation *alloc)
{
GtkContainer *container = GTK_CONTAINER (vbox);
@@ -2996,6 +2998,47 @@
return widget;
}
+// tooltip box
+
+typedef struct YGtkTooltipBox
+{ GtkEventBox parent; } YGtkTooltipBox;
+
+typedef struct YGtkTooltipBoxClass
+{ GtkEventBoxClass parent_class; } YGtkTooltipBoxClass;
+
+G_DEFINE_TYPE (YGtkTooltipBox, ygtk_tooltip_box, GTK_TYPE_EVENT_BOX)
+
+static void ygtk_tooltip_box_init (YGtkTooltipBox *tooltip)
+{
+ GdkColor yellow = { 0, 246 << 8, 246 << 8, 187 << 8 };
+ gtk_widget_modify_bg (GTK_WIDGET (tooltip), GTK_STATE_NORMAL, &yellow);
+}
+
+static gboolean ygtk_tooltip_box_expose_event (GtkWidget *tooltip, GdkEventExpose *event)
+{
+ gtk_paint_flat_box (tooltip->style, tooltip->window,
+ GTK_STATE_NORMAL, GTK_SHADOW_OUT, NULL, tooltip,
+ "tooltip", 0, 0, tooltip->allocation.width,
+ tooltip->allocation.height);
+ GtkWidget *child = GTK_BIN (tooltip)->child;
+ if (child)
+ gtk_container_propagate_expose (GTK_CONTAINER (tooltip), child, event);
+ return TRUE;
+}
+
+static void ygtk_tooltip_box_class_init (YGtkTooltipBoxClass *klass)
+{
+ ygtk_tooltip_box_parent_class = g_type_class_peek_parent (klass);
+
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+ widget_class->expose_event = ygtk_tooltip_box_expose_event;
+}
+
+static GtkWidget *ygtk_tooltip_box_new (void)
+{ return (GtkWidget *) g_object_new (ygtk_tooltip_box_get_type(), NULL); }
+
+// stack (or deck) widget
+
class StackWidget
{
GtkWidget *m_combo, *m_placeholder, *m_widget;
@@ -3014,7 +3057,7 @@
else {
m_combo = gtk_combo_box_new_text();
m_placeholder = gtk_event_box_new();
- m_widget = gtk_vbox_new (FALSE, 2);
+ m_widget = gtk_vbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX (m_widget), m_combo, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (m_widget), m_placeholder, TRUE, TRUE, 0);
g_signal_connect (G_OBJECT (m_combo), "changed",
@@ -3071,7 +3114,7 @@
m_list_widget = list_widget;
m_widget = gtk_vbox_new (FALSE, 12);
- gtk_container_set_border_width (GTK_CONTAINER (m_widget), 12);
+ gtk_container_set_border_width (GTK_CONTAINER (m_widget), 12); // FIXME: are these the inner borders?
g_signal_connect (G_OBJECT (m_widget), "expose-event",
G_CALLBACK (paint_white_expose_cb), NULL);
@@ -3238,6 +3281,122 @@
}
};
+class UndoBox : public Ypp::PkgList::Listener
+{
+GtkWidget *m_undo_box, *m_undo_package, *m_undo_details;
+Ypp::PkgList m_pool;
+Ypp::Package *m_package;
+
+public:
+ GtkWidget *getWidget()
+ { return m_undo_box; }
+
+ UndoBox()
+ {
+ Ypp::QueryBase *query = new Ypp::QueryProperty ("to-modify", true);
+// if (pkg_selector->onlineUpdateMode())
+ m_pool = Ypp::PkgQuery (Ypp::Package::PACKAGE_TYPE, query);
+ // TODO: there could already be packages modified
+ m_pool.addListener (this);
+
+ m_undo_box = ygtk_tooltip_box_new();
+ GtkWidget *vbox = gtk_vbox_new (FALSE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (vbox), 6);
+ gtk_container_add (GTK_CONTAINER (m_undo_box), vbox);
+ GtkWidget *title = gtk_label_new (_("Software changes"));
+ gtk_misc_set_alignment (GTK_MISC (title), 0, .5);
+ YGUtils::setWidgetFont (title, PANGO_STYLE_NORMAL, PANGO_WEIGHT_BOLD, PANGO_SCALE_MEDIUM);
+ gtk_box_pack_start (GTK_BOX (vbox), title, FALSE, TRUE, 0);
+ GtkWidget *package_box = gtk_hbox_new (FALSE, 4);
+ m_undo_package = gtk_label_new ("");
+ gtk_misc_set_alignment (GTK_MISC (m_undo_package), 0, .5);
+ GtkWidget *undo_button = gtk_button_new_from_stock (GTK_STOCK_UNDO);
+ g_signal_connect (G_OBJECT (undo_button), "clicked",
+ G_CALLBACK (undo_clicked_cb), this);
+ gtk_box_pack_start (GTK_BOX (package_box), m_undo_package, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (package_box), undo_button, FALSE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), package_box, FALSE, TRUE, 6);
+ m_undo_details = gtk_label_new ("");
+ gtk_misc_set_alignment (GTK_MISC (m_undo_details), 0, .5);
+ gtk_box_pack_start (GTK_BOX (vbox), m_undo_details, FALSE, TRUE, 0);
+ GtkWidget *details_button = gtk_link_button_new (_("View details..."));
+ GtkWidget *details_align = gtk_alignment_new (1, .5, 0, 0);
+ gtk_container_add (GTK_CONTAINER (details_align), details_button);
+ gtk_box_pack_start (GTK_BOX (vbox), details_align, FALSE, TRUE, 0);
+ }
+
+ ~UndoBox()
+ {
+ m_pool.removeListener (this);
+ }
+
+ void startHack() // call after init, after you did a show_all in the dialog
+ { gtk_widget_hide (m_undo_box); }
+
+ void setPackage (Ypp::Package *package)
+ {
+ m_package = package;
+
+ std::string action;
+ if (package->toInstall()) {
+ if (package->isInstalled())
+ action = _("upgrade");
+ else
+ action = _("add");
+ }
+ else //if (package->toRemove())
+ action = _("remove");
+
+ gchar *package_str = g_strdup_printf ("%s %s", action.c_str(), package->name().c_str());
+ gtk_label_set_text (GTK_LABEL (m_undo_package), package_str);
+ g_free (package_str);
+
+ const Ypp::PkgList packages (Ypp::get()->getPackages (Ypp::Package::PACKAGE_TYPE));
+ int added = 0, removed = 0;
+ for (int i = 0; i < packages.size(); i++) {
+ if (packages.get (i)->toInstall())
+ added++;
+ if (packages.get (i)->toRemove())
+ removed++;
+ }
+
+ std::string delta_str;
+ Ypp::Disk *disk = Ypp::get()->getDisk();
+ for (int i = 0; disk->getPartition (i); i++) {
+ const Ypp::Disk::Partition *part = disk->getPartition (i);
+ if (part->path == "/usr" || part->path == "/usr/" || part->path == "/")
+ delta_str = part->delta_str;
+ }
+
+ gchar *added_str = 0, *removed_str = 0;
+ if (added)
+ added_str = g_strdup_printf (_("Added %d packages\n"), added);
+ if (removed)
+ removed_str = g_strdup_printf (_("Removed %d packages\n"), removed);
+
+ gchar *details = g_strdup_printf (_("%s%sTotalling: %s"), added_str ? added_str : "", removed_str ? removed_str : "", delta_str.c_str());
+ gtk_label_set_text (GTK_LABEL (m_undo_details), details);
+ g_free (details);
+ if (added_str)
+ g_free (added_str);
+ if (removed_str)
+ g_free (removed_str);
+
+ gtk_widget_show (m_undo_box);
+ }
+
+ virtual void entryInserted (const Ypp::PkgList list, int index, Ypp::Package *package)
+ { setPackage (package); }
+
+ virtual void entryDeleted (const Ypp::PkgList list, int index, Ypp::Package *package)
+ { gtk_widget_hide (m_undo_box); }
+
+ virtual void entryChanged (const Ypp::PkgList list, int index, Ypp::Package *package) {}
+
+ static void undo_clicked_cb (GtkButton *button, UndoBox *pThis)
+ { pThis->m_package->undo(); }
+};
+
class UI : public YGtkPackageView::Listener, _QueryListener, Ypp::Disk::Listener
{
GtkWidget *m_widget, *m_disk_label, *m_arrange_combo;
@@ -3248,6 +3407,7 @@
StartupMenu *m_startup_menu;
Ypp::Package::Type m_type;
Toolbar *m_toolbar;
+UndoBox *m_undo_box;
public:
GtkWidget *getWidget() { return m_widget; }
@@ -3503,6 +3663,12 @@
gtk_box_pack_start (GTK_BOX (side_vbox), vpaned, TRUE, TRUE, 0);
}
+ m_undo_box = 0;
+ if (undo_box) {
+ m_undo_box = new UndoBox();
+ gtk_box_pack_start (GTK_BOX (side_vbox), m_undo_box->getWidget(), FALSE, TRUE, 0);
+ }
+
GtkWidget *side_pane = gtk_hpaned_new();
gtk_paned_pack1 (GTK_PANED (side_pane), side_vbox, FALSE, TRUE);
gtk_paned_pack2 (GTK_PANED (side_pane), view_pane, TRUE, FALSE);
@@ -3525,6 +3691,8 @@
gtk_widget_hide (side_vbox);
if (changes_pane)
changes_pane->startHack();
+ if (m_undo_box)
+ m_undo_box->startHack();
if (startup_menu) {
m_startup_menu = new StartupMenu (m_widget);
@@ -3549,6 +3717,7 @@
delete *it;
delete m_disk;
delete m_startup_menu;
+ delete m_undo_box;
}
private:
@@ -3765,7 +3934,41 @@
#if 0
m_tools = new ToolsBox();
- ygtk_wizard_set_extra_button (YGTK_WIZARD (getWidget()), m_tools->getWidget());
+ ygtk_wizard_set_extra_button (wizard, m_tools->getWidget());
+#endif
+
+#if 0
+ GtkWidget *menu_bar = gtk_menu_bar_new(), *item, *submenu, *subitem;
+ item = gtk_menu_item_new_with_label (_("File"));
+ submenu = gtk_menu_new();
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu);
+ subitem = gtk_menu_item_new_with_label (_("Import..."));
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), subitem);
+ g_signal_connect (G_OBJECT (subitem), "activate",
+ G_CALLBACK (import_file_cb), this);
+ subitem = gtk_menu_item_new_with_label (_("Export..."));
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), subitem);
+ g_signal_connect (G_OBJECT (subitem), "activate",
+ G_CALLBACK (export_file_cb), this);
+ subitem = gtk_separator_menu_item_new();
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), subitem);
+ subitem = gtk_image_menu_item_new_from_stock (GTK_STOCK_SAVE, NULL);
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), subitem);
+ subitem = gtk_image_menu_item_new_from_stock (GTK_STOCK_QUIT, NULL);
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), subitem);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), item);
+ item = gtk_menu_item_new_with_label (_("View"));
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), item);
+ item = gtk_menu_item_new_with_label (_("Tools"));
+ submenu = gtk_menu_new();
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu);
+ subitem = gtk_menu_item_new_with_label (_("Generate Dependency Testcase..."));
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), subitem);
+ g_signal_connect (G_OBJECT (subitem), "activate",
+ G_CALLBACK (create_solver_testcase_cb), this);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), item);
+ gtk_widget_show_all (menu_bar);
+ ygtk_wizard_set_custom_menu (wizard, menu_bar);
#endif
m_progressbar = gtk_progress_bar_new();
Modified: trunk/gtk/src/pkg/ygtkpackageview.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkpackageview.cc?rev=60408&r1=60407&r2=60408&view=diff
==============================================================================
--- trunk/gtk/src/pkg/ygtkpackageview.cc (original)
+++ trunk/gtk/src/pkg/ygtkpackageview.cc Sat Jan 16 17:17:07 2010
@@ -728,10 +728,10 @@
clear();
if (action_col) {
- if (action_col_as_check)
- appendCheckColumn ("is-installed"); //("to-install");
- else //if (action_col_as_button)
+ if (action_col_as_button)
appendButtonColumn (NULL, "to-install");
+ else //if (action_col_as_check)
+ appendCheckColumn ("is-installed"); //("to-install");
}
if (status_col)
appendIconColumn (NULL, "icon");
Modified: trunk/gtk/src/ygtkwizard.c
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/ygtkwizard.c?rev=60408&r1=60407&r2=60408&view=diff
==============================================================================
--- trunk/gtk/src/ygtkwizard.c (original)
+++ trunk/gtk/src/ygtkwizard.c Sat Jan 16 17:17:07 2010
@@ -920,19 +920,17 @@
{
if (!wizard->menu) {
wizard->menu = gtk_menu_bar_new();
- gtk_container_add (GTK_CONTAINER (wizard->m_menu_box), wizard->menu);
- // we probably want to hide the title, so the menu is more visible
- gtk_widget_hide (wizard->m_title);
+ ygtk_wizard_set_custom_menu (wizard, wizard->menu);
+ gtk_widget_show (wizard->menu);
}
GtkWidget *entry = gtk_menu_item_new_with_mnemonic (text);
- gtk_menu_shell_append (GTK_MENU_SHELL (wizard->menu), entry);
-
GtkWidget *submenu = gtk_menu_new();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (entry), submenu);
+ gtk_menu_shell_append (GTK_MENU_SHELL (wizard->menu), entry);
+ gtk_widget_show_all (entry);
g_hash_table_insert (wizard->menu_ids, g_strdup (id), submenu);
- gtk_widget_show_all (wizard->m_menu_box);
}
gboolean ygtk_wizard_add_menu_entry (YGtkWizard *wizard, const char *parent_id,
@@ -970,13 +968,12 @@
return FALSE;
GtkWidget *entry = gtk_menu_item_new_with_mnemonic (text);
- gtk_menu_shell_append (GTK_MENU_SHELL (parent), entry);
-
GtkWidget *submenu = gtk_menu_new();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (entry), submenu);
+ gtk_menu_shell_append (GTK_MENU_SHELL (parent), entry);
+ gtk_widget_show_all (entry);
g_hash_table_insert (wizard->menu_ids, g_strdup (id), submenu);
- gtk_widget_show_all (entry);
return TRUE;
}
@@ -1004,6 +1001,14 @@
}
}
+void ygtk_wizard_set_custom_menu (YGtkWizard *wizard, GtkWidget *menu_bar)
+{
+ gtk_container_add (GTK_CONTAINER (wizard->m_menu_box), menu_bar);
+ gtk_widget_show (wizard->m_menu_box);
+ // we probably want to hide the title, so the menu is more visible
+ gtk_widget_hide (wizard->m_title);
+}
+
void ygtk_wizard_add_step_header (YGtkWizard *wizard, const char *text)
{
g_return_if_fail (wizard->steps != NULL);
Modified: trunk/gtk/src/ygtkwizard.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/ygtkwizard.h?rev=60408&r1=60407&r2=60408&view=diff
==============================================================================
--- trunk/gtk/src/ygtkwizard.h (original)
+++ trunk/gtk/src/ygtkwizard.h Sat Jan 16 17:17:07 2010
@@ -162,6 +162,7 @@
const char *text, const char *id);
gboolean ygtk_wizard_add_menu_separator (YGtkWizard *wizard, const char *parent_id);
void ygtk_wizard_clear_menu (YGtkWizard *wizard);
+void ygtk_wizard_set_custom_menu (YGtkWizard *wizard, GtkWidget *menu_bar);
void ygtk_wizard_add_step_header (YGtkWizard *wizard, const char *text);
void ygtk_wizard_add_step (YGtkWizard *wizard, const char* text, const char *id);
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org