Author: rpmcruz
Date: Thu Apr 1 00:12:18 2010
New Revision: 61551
URL: http://svn.opensuse.org/viewcvs/yast?rev=61551&view=rev
Log:
* src/ygtkpkghistorydialog.h/cc: fate#305859 and
as requested by Atri: added Extras > Show History
of Changes menu item.
Added:
trunk/gtk/src/pkg/ygtkpkghistorydialog.cc
trunk/gtk/src/pkg/ygtkpkghistorydialog.h
Modified:
trunk/gtk/ChangeLog
trunk/gtk/src/pkg/CMakeLists.txt
trunk/gtk/src/pkg/ygtkpkgmenubar.cc
trunk/gtk/src/pkg/ygtkpkgproductdialog.cc
trunk/gtk/src/pkg/ygtkpkgstatusbar.cc
Modified: trunk/gtk/ChangeLog
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/ChangeLog?rev=61551&r1=61550&r2=61551&view=diff
==============================================================================
--- trunk/gtk/ChangeLog (original)
+++ trunk/gtk/ChangeLog Thu Apr 1 00:12:18 2010
@@ -1,3 +1,9 @@
+2010-03-31 Ricardo Cruz
+
+ * src/ygtkpkghistorydialog.h/cc: fate#305859 and
+ as requested by Atri: added Extras > Show History
+ of Changes menu item.
+
2010-03-25 Ricardo Cruz
* src/pkg/ygtkpkglistview.cc: allocate sufficient memory
Modified: trunk/gtk/src/pkg/CMakeLists.txt
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/CMakeLists.txt?rev=61551&r1=61550&r2=61551&view=diff
==============================================================================
--- trunk/gtk/src/pkg/CMakeLists.txt (original)
+++ trunk/gtk/src/pkg/CMakeLists.txt Thu Apr 1 00:12:18 2010
@@ -4,6 +4,7 @@
YGPackageSelector.cc
YGPackageSelectorPluginImpl.cc
ygtkpkgdetailview.cc
+ ygtkpkghistorydialog.cc
ygtkpkglistview.cc
ygtkpkgfilterview.cc
ygtkpkglanguageview.cc
Added: trunk/gtk/src/pkg/ygtkpkghistorydialog.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkpkghistorydialog.cc?rev=61551&view=auto
==============================================================================
--- trunk/gtk/src/pkg/ygtkpkghistorydialog.cc (added)
+++ trunk/gtk/src/pkg/ygtkpkghistorydialog.cc Thu Apr 1 00:12:18 2010
@@ -0,0 +1,192 @@
+/********************************************************************
+ * YaST2-GTK - http://en.opensuse.org/YaST2-GTK *
+ ********************************************************************/
+/* Textdomain "yast2-gtk" */
+/* YGtkPkgMenuBar, menu bar */
+// check the header file for information about this widget
+
+#include "YGi18n.h"
+#include "config.h"
+#include "YGDialog.h"
+#include "ygtkpkghistorydialog.h"
+#include
+#include "ygtkrichtext.h"
+
+#include
+#define FILENAME "/var/log/zypp/history"
+
+static void selection_changed_cb (GtkTreeSelection *selection, YGtkRichText *text)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ char *date;
+ gtk_tree_model_get (model, &iter, 0, &date, -1);
+
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text));
+ GtkTextMark *mark = gtk_text_buffer_get_mark (buffer, date);
+ gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (text), mark, 0, TRUE, 0, 0);
+ g_free (date);
+ }
+}
+
+struct Handler
+{
+ Handler (GtkListStore *store, GtkTextBuffer *buffer)
+ : store (store), buffer (buffer)
+ {}
+
+ bool operator() (const zypp::HistoryItem::Ptr &item)
+ {
+ std::string _date (item->date.form ("%d %B %Y"));
+ bool new_date = date != _date;
+
+ GtkTextIter text_iter;
+ gtk_text_buffer_get_end_iter (buffer, &text_iter);
+
+ if (new_date) {
+ date = _date;
+ GtkTreeIter list_iter;
+ gtk_list_store_append (store, &list_iter);
+ gtk_list_store_set (store, &list_iter,
+ 0, date.c_str(), -1);
+
+ gtk_text_buffer_create_mark (buffer, date.c_str(), &text_iter, TRUE);
+ gtk_text_buffer_insert (buffer, &text_iter, (date + "\n").c_str(), -1);
+ }
+
+ std::string line;
+ line.reserve (1024);
+ line = "\t";
+ switch (item->action.toEnum()) {
+ case zypp::HistoryActionID::NONE_e:
+ break;
+ case zypp::HistoryActionID::INSTALL_e: {
+ zypp::HistoryItemInstall *_item =
+ static_cast (item.get());
+ line += _("install"); line += " ";
+ line += _item->name + " ";
+ line += _item->edition.version();
+ break;
+ }
+ case zypp::HistoryActionID::REMOVE_e: {
+ zypp::HistoryItemRemove *_item =
+ static_cast (item.get());
+ line += _("remove"); line += " ";
+ line += _item->name + " ";
+ line += _item->edition.version();
+ break;
+ }
+ case zypp::HistoryActionID::REPO_ADD_e: {
+ zypp::HistoryItemRepoAdd *_item =
+ static_cast (item.get());
+ line += _("add repository"); line += " ";
+ line += _item->alias;
+ break;
+ }
+ case zypp::HistoryActionID::REPO_REMOVE_e: {
+ zypp::HistoryItemRepoRemove *_item =
+ static_cast (item.get());
+ line += _("remove repository"); line += " ";
+ line += _item->alias;
+ break;
+ }
+ case zypp::HistoryActionID::REPO_CHANGE_ALIAS_e: {
+ zypp::HistoryItemRepoAliasChange *_item =
+ static_cast (item.get());
+ gchar *str = g_strdup_printf ("change repository %s alias: %s",
+ _item->oldalias.c_str(), _item->newalias.c_str());
+ line += str;
+ g_free (str);
+ break;
+ }
+ case zypp::HistoryActionID::REPO_CHANGE_URL_e: {
+ zypp::HistoryItemRepoUrlChange *_item =
+ static_cast (item.get());
+ gchar *str = g_strdup_printf ("change repository %s url: %s",
+ _item->alias.c_str(), _item->newurl.asString().c_str());
+ line += str;
+ g_free (str);
+ break;
+ }
+ }
+ line += "\n";
+ gtk_text_buffer_insert (buffer, &text_iter, line.c_str(), -1);
+ return true;
+ }
+
+ GtkListStore *store;
+ GtkTextBuffer *buffer;
+ std::string date;
+};
+
+
+YGtkPkgHistoryDialog::YGtkPkgHistoryDialog()
+{
+ GtkWidget *text = ygtk_rich_text_new();
+ GtkWidget *text_scroll = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (text_scroll),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_shadow_type (
+ GTK_SCROLLED_WINDOW (text_scroll), GTK_SHADOW_IN);
+ gtk_container_add (GTK_CONTAINER (text_scroll), text);
+
+ GtkListStore *store = gtk_list_store_new (1, G_TYPE_STRING);
+ GtkWidget *date_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
+ g_object_unref (G_OBJECT (store));
+ gtk_tree_view_set_search_column (GTK_TREE_VIEW (date_view), 0);
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (date_view), FALSE);
+
+ GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
+ GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes (
+ NULL, renderer, "text", 0, NULL);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (date_view), column);
+
+ //gtk_tree_view_column_set_sort_column_id (column, 1);
+ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED);
+ gtk_tree_view_set_fixed_height_mode (GTK_TREE_VIEW (date_view), TRUE);
+
+ GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (date_view));
+ g_signal_connect (G_OBJECT (selection), "changed",
+ G_CALLBACK (selection_changed_cb), text);
+
+ GtkWidget *date_scroll = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (date_scroll),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_shadow_type (
+ GTK_SCROLLED_WINDOW (date_scroll), GTK_SHADOW_IN);
+ gtk_container_add (GTK_CONTAINER (date_scroll), date_view);
+
+ GtkWidget *dialog = gtk_message_dialog_new (YGDialog::currentWindow(),
+ GtkDialogFlags (0), GTK_MESSAGE_OTHER, GTK_BUTTONS_CLOSE, _("History of Changes"));
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), FILENAME);
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE);
+ gtk_window_set_resizable (GTK_WINDOW (dialog), TRUE);
+ gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 500);
+
+ GtkWidget *hpaned = gtk_hpaned_new();
+ gtk_paned_pack1 (GTK_PANED (hpaned), date_scroll, FALSE, FALSE);
+ gtk_paned_pack2 (GTK_PANED (hpaned), text_scroll, TRUE, FALSE);
+ gtk_paned_set_position (GTK_PANED (hpaned), 220);
+ gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hpaned);
+
+ Handler handler (store, gtk_text_view_get_buffer (GTK_TEXT_VIEW (text)));
+ zypp::parser::HistoryLogReader parser (FILENAME, boost::ref (handler));
+ try {
+ parser.readAll();
+ }
+ catch (const zypp::Exception &ex) {
+ yuiWarning () << "Error: Could not load log file" << FILENAME << ": "
+ << ex.asUserHistory() << std::endl;
+ }
+
+ gtk_widget_show_all (dialog);
+ m_dialog = dialog;
+}
+
+YGtkPkgHistoryDialog::~YGtkPkgHistoryDialog()
+{ gtk_widget_destroy (m_dialog); }
+
+void YGtkPkgHistoryDialog::popup()
+{ gtk_dialog_run (GTK_DIALOG (m_dialog)); }
+
Added: trunk/gtk/src/pkg/ygtkpkghistorydialog.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkpkghistorydialog.h?rev=61551&view=auto
==============================================================================
--- trunk/gtk/src/pkg/ygtkpkghistorydialog.h (added)
+++ trunk/gtk/src/pkg/ygtkpkghistorydialog.h Thu Apr 1 00:12:18 2010
@@ -0,0 +1,26 @@
+/********************************************************************
+ * YaST2-GTK - http://en.opensuse.org/YaST2-GTK *
+ ********************************************************************/
+
+/* Show /var/log/zypp/history.
+ Uses zypp::parser::HistoryLogReader.
+*/
+
+#ifndef YGTK_PKG_HISTORY_DIALOG_H
+#define YGTK_PKG_HISTORY_DIALOG_H
+
+#include
+
+struct YGtkPkgHistoryDialog
+{
+ YGtkPkgHistoryDialog();
+ ~YGtkPkgHistoryDialog();
+
+ void popup();
+
+private:
+ GtkWidget *m_dialog;
+};
+
+#endif
+
Modified: trunk/gtk/src/pkg/ygtkpkgmenubar.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkpkgmenubar.cc?rev=61551&r1=61550&r2=61551&view=diff
==============================================================================
--- trunk/gtk/src/pkg/ygtkpkgmenubar.cc (original)
+++ trunk/gtk/src/pkg/ygtkpkgmenubar.cc Thu Apr 1 00:12:18 2010
@@ -524,6 +524,15 @@
static void show_pkg_changes_cb()
{ YGPackageSelector::get()->popupChanges(); }
+
+#include "ygtkpkghistorydialog.h"
+
+static void show_log_changes_cb()
+{
+ YGtkPkgHistoryDialog dialog;
+ dialog.popup();
+}
+
static void reset_ignored_dependency_conflicts_cb()
{ zypp::getZYpp()->resolver()->undo(); }
@@ -589,6 +598,8 @@
G_CALLBACK (show_products_cb), this);
append_menu_item (submenu, _("Show Package Changes"), NULL,
G_CALLBACK (show_pkg_changes_cb), this);
+ append_menu_item (submenu, _("Show History of Changes"), NULL,
+ G_CALLBACK (show_log_changes_cb), this);
append_menu_item (submenu, NULL, NULL, NULL, NULL);
append_menu_item (submenu, _("Install All Matching -devel Packages"), NULL,
G_CALLBACK (install_all_devel_pkgs_cb), this);
Modified: trunk/gtk/src/pkg/ygtkpkgproductdialog.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkpkgproductdialog.cc?rev=61551&r1=61550&r2=61551&view=diff
==============================================================================
--- trunk/gtk/src/pkg/ygtkpkgproductdialog.cc (original)
+++ trunk/gtk/src/pkg/ygtkpkgproductdialog.cc Thu Apr 1 00:12:18 2010
@@ -153,7 +153,7 @@
gtk_container_add (GTK_CONTAINER (scroll), view);
GtkWidget *dialog = gtk_message_dialog_new (YGDialog::currentWindow(),
- GtkDialogFlags (0), GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, _("Product Listing"));
+ GtkDialogFlags (0), GTK_MESSAGE_OTHER, GTK_BUTTONS_CLOSE, _("Product Listing"));
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE);
gtk_window_set_resizable (GTK_WINDOW (dialog), TRUE);
gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 500);
Modified: trunk/gtk/src/pkg/ygtkpkgstatusbar.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkpkgstatusbar.cc?rev=61551&r1=61550&r2=61551&view=diff
==============================================================================
--- trunk/gtk/src/pkg/ygtkpkgstatusbar.cc (original)
+++ trunk/gtk/src/pkg/ygtkpkgstatusbar.cc Thu Apr 1 00:12:18 2010
@@ -86,7 +86,7 @@
const char *action = getStatusAction (sel);
gchar *str;
if (sel->toModifyAuto())
- str = g_strdup_printf (_("<b>%s</b> %d predefined packages"), action, auto_count);
+ str = g_strdup_printf (_("<b>%s</b> %d preselected packages"), action, auto_count);
else {
const char *format;
if (auto_count > 1)
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org