gnome-utils r8227 - trunk/logview
- From: cosimoc svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-utils r8227 - trunk/logview
- Date: Tue, 23 Dec 2008 13:25:24 +0000 (UTC)
Author: cosimoc
Date: Tue Dec 23 13:25:24 2008
New Revision: 8227
URL: http://svn.gnome.org/viewvc/gnome-utils?rev=8227&view=rev
Log:
Refactoe about dialog; keep on working on refactoring LogviewWindow and
LogviewManager.
Added:
trunk/logview/logview-about.h
Removed:
trunk/logview/about.c
trunk/logview/about.h
Modified:
trunk/logview/logview-manager.c
trunk/logview/logview-manager.h
trunk/logview/logview.c
Added: trunk/logview/logview-about.h
==============================================================================
--- (empty file)
+++ trunk/logview/logview-about.h Tue Dec 23 13:25:24 2008
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2004 Vincent Noel <vnoel cox net>
+ * Copyright (C) 2008 Cosimo Cecchi <cosimoc gnome org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ * USA.
+ */
+
+#ifndef __LOG_ABOUT_H__
+#define __LOG_ABOUT_H__
+
+static const char *logview_about_authors[] = {
+ "Cesar Miquel <miquel df uba ar>",
+ "Glynn Foster <glynn foster sun com>",
+ "Fernando Herrera <fherrera onirica com>",
+ "Shakti Sen <shprasad novell com>",
+ "Julio M Merino Vidal <jmmv menta net>",
+ "Jason Leach <leach wam umd edu>",
+ "Christian Neumair <chris gnome-de org>",
+ "Jan Arne Petersen <jpetersen uni-bonn de>",
+ "Jason Long <jlong messiah edu>",
+ "Kjartan Maraas <kmaraas gnome org>",
+ "Vincent Noel <vincent noel gmail com>",
+ "Cosimo Cecchi <cosimoc gnome org>".
+ NULL
+};
+
+static const char *logview_about_documenters[] = {
+ "Sun GNOME Documentation Team <gdocteam sun com>",
+ "Vincent Noel <vincent noel gmail com>",
+ "Judith Samson <judith samsonsource com>",
+ NULL
+};
+
+static const char * logview_about_license[] = {
+ N_("Log Viewer is free software; you can redistribute it and/or modify "
+ "it under the terms of the GNU General Public License as published by "
+ "the Free Software Foundation; either version 2 of the License, or "
+ "(at your option) any later version."),
+ N_("Log Viewer is distributed in the hope that it will be useful, "
+ "but WITHOUT ANY WARRANTY; without even the implied warranty of "
+ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the "
+ "GNU General Public License for more details."),
+ N_("You should have received a copy of the GNU General Public License "
+ "along with the GNOME Web Browser; if not, write to the Free Software Foundation, Inc., "
+ "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA")
+};
+
+/* translator credits */
+static const char *logview_about_translator_credits = _("translator-credits");
+
+
+#endif /* __LOG_ABOUT_H__ */
+
Modified: trunk/logview/logview-manager.c
==============================================================================
--- trunk/logview/logview-manager.c (original)
+++ trunk/logview/logview-manager.c Tue Dec 23 13:25:24 2008
@@ -80,6 +80,15 @@
G_TYPE_NONE, 1,
LOGVIEW_TYPE_LOG);
+ signals[LOG_CLOSED] = g_signal_new ("log-closed",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (LogviewManagerClass, log_closed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1,
+ LOGVIEW_TYPE_LOG);
+
signals[LOG_ADD_ERROR] = g_signal_new ("log-add-error",
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST,
@@ -107,7 +116,8 @@
self->priv = GET_PRIVATE (self);
priv->active_log = NULL;
- priv->logs = g_hash_table_new (g_str_hash, g_str_equal);
+ priv->logs = g_hash_table_new_full (g_str_hash, g_str_equal,
+ NULL, (GDestroyNotify) g_object_unref);
}
static void
@@ -135,6 +145,21 @@
g_slice_free (CreateCBData, data);
}
+static gboolean
+look_for_log (gpointer key,
+ gpointer value,
+ gpointer user_data)
+{
+ if (user_data == value) {
+ /* we found the log, emit the closed signal and remove the log */
+ g_signal_emit (singleton, signals[LOG_CLOSED], 0, value, NULL);
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
/* public methods */
LogviewManager*
@@ -216,17 +241,9 @@
int
logview_manager_get_log_count (LogviewManager *manager)
{
- GList *keys;
- int retval;
-
g_assert (LOGVIEW_IS_MANAGER (manager));
- keys = g_hash_table_get_keys (manager->priv->logs);
- retval = g_list_length (keys);
-
- g_list_free (keys);
-
- return retval;
+ return g_hash_table_size (manager->priv->logs);
}
LogviewLog *
@@ -235,4 +252,24 @@
g_assert (LOGVIEW_IS_MANAGER (manager));
return g_object_ref (g_hash_table_lookup (manager->priv->logs, filename));
+}
+
+void
+logview_manager_close_active_log (LogviewManager *manager)
+{
+ LogviewLog *active_log;
+ GHashTableIter iter;
+
+ g_assert (LOGVIEW_IS_MANAGER (manager));
+
+ active_log = manager->priv->active_log;
+
+ /* we own two refs to the active log; one is inside the hash table */
+ g_object_unref (active_log);
+
+ g_hash_table_find (manager->priv->logs,
+ (GHRFunc) look_for_log,
+ active_log);
+
+ /* someone else will take care of setting the next active log to us */
}
\ No newline at end of file
Modified: trunk/logview/logview-manager.h
==============================================================================
--- trunk/logview/logview-manager.h (original)
+++ trunk/logview/logview-manager.h Tue Dec 23 13:25:24 2008
@@ -53,6 +53,8 @@
void (* log_added) (LogviewManager *manager,
LogviewLog *log);
+ void (* log_closed) (LogviewManager *manager,
+ LogviewLog *log);
void (* log_add_error) (LogviewManager *manager,
char *filename);
void (* active_changed) (LogviewManager *manager,
@@ -73,6 +75,7 @@
int logview_manager_get_log_count (LogviewManager *manager);
LogviewLog * logview_manager_get_if_loaded (LogviewManager *manager,
char *filename);
+void logview_manager_close_active_log (LogviewManager *manager);
G_END_DECLS
Modified: trunk/logview/logview.c
==============================================================================
--- trunk/logview/logview.c (original)
+++ trunk/logview/logview.c Tue Dec 23 13:25:24 2008
@@ -28,7 +28,6 @@
#include "loglist.h"
#include "log_repaint.h"
#include "logrtns.h"
-#include "monitor.h"
#include "about.h"
#include "misc.h"
#include "logview-findbar.h"
@@ -75,82 +74,12 @@
G_DEFINE_TYPE (LogviewWindow, logview_window, GTK_TYPE_WINDOW);
/* Function Prototypes */
-
-static void logview_save_prefs (LogviewWindow *logview);
-static void logview_add_log (LogviewWindow *logview, Log *log);
-static void logview_menu_item_set_state (LogviewWindow *logview, char *path, gboolean state);
-static void logview_menu_item_toggle_set_active (LogviewWindow *logview, char *path, gboolean state);
static void logview_update_findbar_visibility (LogviewWindow *logview);
-
-static void logview_open_log (GtkAction *action, LogviewWindow *logview);
-static void logview_toggle_sidebar (GtkAction *action, LogviewWindow *logview);
-static void logview_toggle_statusbar (GtkAction *action, LogviewWindow *logview);
-static void logview_toggle_calendar (GtkAction *action, LogviewWindow *logview);
-static void logview_collapse_rows (GtkAction *action, LogviewWindow *logview);
-static void logview_toggle_monitor (GtkAction *action, LogviewWindow *logview);
-static void logview_close_log (GtkAction *action, LogviewWindow *logview);
-static void logview_bigger_text (GtkAction *action, LogviewWindow *logview);
-static void logview_smaller_text (GtkAction *action, LogviewWindow *logview);
-static void logview_normal_text (GtkAction *action, LogviewWindow *logview);
static void logview_calendar_set_state (LogviewWindow *logview);
static void logview_search (GtkAction *action, LogviewWindow *logview);
-static void logview_help (GtkAction *action, GtkWidget *parent_window);
-static void logview_copy (GtkAction *action, LogviewWindow *logview);
-static void logview_select_all (GtkAction *action, LogviewWindow *logview);
-static Log *logview_find_log_from_name (LogviewWindow *logview, gchar *name);
static void logview_window_get_property (GObject *object, guint param_id, GValue *value, GParamSpec *pspec);
-/* Menus */
-
-static GtkActionEntry entries[] = {
- { "FileMenu", NULL, N_("_File"), NULL, NULL, NULL },
- { "EditMenu", NULL, N_("_Edit"), NULL, NULL, NULL },
- { "ViewMenu", NULL, N_("_View"), NULL, NULL, NULL },
- { "HelpMenu", NULL, N_("_Help"), NULL, NULL, NULL },
-
- { "OpenLog", GTK_STOCK_OPEN, N_("_Open..."), "<control>O", N_("Open a log from file"),
- G_CALLBACK (logview_open_log) },
- { "CloseLog", GTK_STOCK_CLOSE, N_("_Close"), "<control>W", N_("Close this log"),
- G_CALLBACK (logview_close_log) },
- { "Quit", GTK_STOCK_QUIT, N_("_Quit"), "<control>Q", N_("Quit the log viewer"),
- G_CALLBACK (gtk_main_quit) },
-
- { "Copy", GTK_STOCK_COPY, N_("_Copy"), "<control>C", N_("Copy the selection"),
- G_CALLBACK (logview_copy) },
- { "SelectAll", NULL, N_("Select _All"), "<Control>A", N_("Select the entire log"),
- G_CALLBACK (logview_select_all) },
- { "Search", GTK_STOCK_FIND, N_("_Filter..."), "<control>F", N_("Filter log"),
- G_CALLBACK (logview_search) },
-
- {"ViewZoomIn", GTK_STOCK_ZOOM_IN, NULL, "<control>plus", N_("Bigger text size"),
- G_CALLBACK (logview_bigger_text)},
- {"ViewZoomOut", GTK_STOCK_ZOOM_OUT, NULL, "<control>minus", N_("Smaller text size"),
- G_CALLBACK (logview_smaller_text)},
- {"ViewZoom100", GTK_STOCK_ZOOM_100, NULL, "<control>0", N_("Normal text size"),
- G_CALLBACK (logview_normal_text)},
-
- {"CollapseAll", NULL, N_("Collapse _All"), NULL, N_("Collapse all the rows"),
- G_CALLBACK (logview_collapse_rows) },
-
- { "HelpContents", GTK_STOCK_HELP, N_("_Contents"), "F1", N_("Open the help contents for the log viewer"),
- G_CALLBACK (logview_help) },
- { "AboutAction", GTK_STOCK_ABOUT, N_("_About"), NULL, N_("Show the about dialog for the log viewer"),
- G_CALLBACK (logview_about) },
-
-};
-
-static GtkToggleActionEntry toggle_entries[] = {
- { "ShowStatusBar", NULL, N_("_Statusbar"), NULL, N_("Show Status Bar"),
- G_CALLBACK (logview_toggle_statusbar), TRUE },
- { "ShowSidebar", NULL, N_("Side _Pane"), "F9", N_("Show Side Pane"),
- G_CALLBACK (logview_toggle_sidebar), TRUE },
- { "MonitorLogs", NULL, N_("_Monitor"), "<control>M", N_("Monitor Current Log"),
- G_CALLBACK (logview_toggle_monitor), TRUE },
- {"ShowCalendar", NULL, N_("Ca_lendar"), "<control>L", N_("Show Calendar Log"),
- G_CALLBACK (logview_toggle_calendar), TRUE },
-};
-
static const char *ui_description =
"<ui>"
" <menubar name='LogviewMenu'>"
@@ -164,8 +93,6 @@
" <menuitem action='SelectAll'/>"
" </menu>"
" <menu action='ViewMenu'>"
- " <menuitem action='MonitorLogs'/>"
- " <separator/>"
" <menuitem action='ShowStatusBar'/>"
" <menuitem action='ShowSidebar'/>"
" <menuitem action='ShowCalendar'/>"
@@ -221,31 +148,6 @@
}
void
-logview_menus_set_state (LogviewWindow *logview)
-{
- Log *log;
- gboolean calendar_active = FALSE, monitor_active = FALSE;
- GtkWidget *widget;
-
- g_assert (LOGVIEW_IS_WINDOW (logview));
- log = logview->curlog;
-
- if (log) {
- monitor_active = (log->display_name == NULL);
- calendar_active = (log->days != NULL);
- logview_menu_item_toggle_set_active (logview, "/LogviewMenu/ViewMenu/MonitorLogs", logview->curlog->monitored);
- }
-
- logview_menu_item_set_state (logview, "/LogviewMenu/ViewMenu/MonitorLogs", monitor_active);
- logview_menu_item_set_state (logview, "/LogviewMenu/ViewMenu/ShowCalendar", calendar_active);
- logview_menu_item_set_state (logview, "/LogviewMenu/FileMenu/CloseLog", (log != NULL));
- logview_menu_item_set_state (logview, "/LogviewMenu/ViewMenu/CollapseAll", calendar_active);
- logview_menu_item_set_state (logview, "/LogviewMenu/ViewMenu/Search", (log != NULL));
- logview_menu_item_set_state (logview, "/LogviewMenu/EditMenu/Copy", (log != NULL));
- logview_menu_item_set_state (logview, "/LogviewMenu/EditMenu/SelectAll", (log != NULL));
-}
-
-void
logview_set_window_title (LogviewWindow *logview)
{
gchar *window_title;
@@ -264,10 +166,7 @@
logname = log->display_name;
else
logname = log->name;
-
- if (log->monitored)
- window_title = g_strdup_printf (_("%s (monitored) - %s"), logname, APP_NAME);
- else
+
window_title = g_strdup_printf ("%s - %s", logname, APP_NAME);
}
@@ -381,177 +280,193 @@
}
static void
-logview_close_log (GtkAction *action, LogviewWindow *logview)
+logview_calendar_set_state (LogviewWindow *logview)
{
- Log *log;
g_assert (LOGVIEW_IS_WINDOW (logview));
- if (logview->curlog == NULL)
- return;
-
- if (logview->curlog->monitored) {
- GtkAction *action = gtk_ui_manager_get_action (logview->ui_manager, "/LogviewMenu/ViewMenu/MonitorLogs");
- gtk_action_activate (action);
- }
-
- gtk_widget_hide (logview->find_bar);
+ if (logview->curlog) {
+ if (logview->curlog->days != NULL)
+ calendar_init_data (CALENDAR (logview->calendar), logview);
+ gtk_widget_set_sensitive (logview->calendar, (logview->curlog->days != NULL));
+ } else
+ gtk_widget_set_sensitive (logview->calendar, FALSE);
+}
- log = logview->curlog;
- logview->curlog = NULL;
+/* private helpers */
- logview->logs = g_slist_remove (logview->logs, log);
- log_close (log);
- loglist_remove_log (LOG_LIST (logview->loglist), log);
-}
+#define DEFAULT_LOGVIEW_FONT "Monospace 10"
static void
-logview_toggle_statusbar (GtkAction *action, LogviewWindow *logview)
+logview_set_font (LogviewWindow *logview,
+ const char *fontname)
{
- g_assert (LOGVIEW_IS_WINDOW (logview));
+ PangoFontDescription *font_desc;
- if (GTK_WIDGET_VISIBLE (logview->statusbar))
- gtk_widget_hide (logview->statusbar);
- else
- gtk_widget_show (logview->statusbar);
-}
+ g_assert (LOGVIEW_IS_WINDOW (logview));
-static void
-logview_toggle_sidebar (GtkAction *action, LogviewWindow *logview)
-{
- g_assert (LOGVIEW_IS_WINDOW (logview));
+ if (fontname == NULL)
+ fontname = DEFAULT_LOGVIEW_FONT;
- if (GTK_WIDGET_VISIBLE (logview->sidebar))
- gtk_widget_hide (logview->sidebar);
- else
- gtk_widget_show (logview->sidebar);
+ font_desc = pango_font_description_from_string (fontname);
+ if (font_desc) {
+ gtk_widget_modify_font (logview->priv->view, font_desc);
+ pango_font_description_free (font_desc);
+ }
}
-static void
-logview_toggle_calendar (GtkAction *action, LogviewWindow *logview)
+static void
+logview_set_fontsize (LogviewWindow *logview)
{
- g_assert (LOGVIEW_IS_WINDOW (logview));
+ PangoFontDescription *fontdesc;
+ PangoContext *context;
+
+ g_assert (LOGVIEW_IS_WINDOW (logview));
- if (GTK_WIDGET_VISIBLE (logview->calendar))
- gtk_widget_hide (logview->calendar);
- else {
- gtk_widget_show (logview->calendar);
- if (!GTK_WIDGET_VISIBLE (logview->sidebar)) {
- GtkAction *action = gtk_ui_manager_get_action (logview->ui_manager, "/LogviewMenu/ViewMenu/ShowSidebar");
- gtk_action_activate (action);
- }
- }
+ context = gtk_widget_get_pango_context (priv->view);
+ fontdesc = pango_context_get_font_description (context);
+ pango_font_description_set_size (fontdesc, (priv->fontsize) * PANGO_SCALE);
+ gtk_widget_modify_font (priv->view, fontdesc);
+
+ logview_prefs_store_fontsize (logview->priv->prefs, priv->fontsize);
}
-static void
-logview_collapse_rows (GtkAction *action, LogviewWindow *logview)
+static void
+logview_menu_item_set_state (LogviewWindow *logview, char *path, gboolean state)
{
- g_assert (LOGVIEW_IS_WINDOW (logview));
+ GtkAction *action;
+
+ g_assert (path);
- gtk_tree_view_collapse_all (GTK_TREE_VIEW (logview->view));
+ action = gtk_ui_manager_get_action (logview->priv->ui_manager, path);
+ gtk_action_set_sensitive (action, state);
}
+/* actions callbacks */
+
static void
-logview_toggle_monitor (GtkAction *action, LogviewWindow *logview)
+open_file_selected_cb (GtkWidget *chooser, gint response, LogviewWindow *logview)
{
- Log *log;
+ char *f;
+ LogviewLog *log;
- g_assert (LOGVIEW_IS_WINDOW (logview));
+ g_assert (LOGVIEW_IS_WINDOW (logview));
- log = logview->curlog;
- if ((log == NULL) || (log->display_name))
- return;
+ gtk_widget_hide (GTK_WIDGET (chooser));
+ if (response != GTK_RESPONSE_OK) {
+ return;
+ }
- if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)) &&
- (log->monitored))
- return;
+ f = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser));
- if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action))==FALSE &&
- (!log->monitored))
- return;
+ log = logview_manager_get_if_loaded (logview->priv->manager, f);
- if (log->monitored)
- monitor_stop (log);
- else
- monitor_start (log);
-
- logview_set_window_title (logview);
- logview_menus_set_state (logview);
-}
+ if (log) {
+ logview_manager_set_active_log (log);
+ g_object_unref (log);
+ goto out;
+ }
-#define DEFAULT_LOGVIEW_FONT "Monospace 10"
+ logview_manager_add_log_from_name (logview->priv->manager, f);
-void
-logview_set_font (LogviewWindow *logview,
- const gchar *fontname)
+out:
+ g_free (f);
+}
+
+static void
+logview_open_log (GtkAction *action, LogviewWindow *logview)
{
- PangoFontDescription *font_desc;
+ static GtkWidget *chooser = NULL;
+ char *active;
- g_return_if_fail (LOGVIEW_IS_WINDOW (logview));
+ if (chooser == NULL) {
+ chooser = gtk_file_chooser_dialog_new (_("Open Log"),
+ GTK_WINDOW (logview),
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_OK,
+ NULL);
+ gtk_dialog_set_default_response (GTK_DIALOG (chooser), GTK_RESPONSE_OK);
+ gtk_window_set_modal (GTK_WINDOW (chooser), TRUE);
+ g_signal_connect (G_OBJECT (chooser), "response",
+ G_CALLBACK (open_file_selected_cb), logview);
+ g_signal_connect (G_OBJECT (chooser), "destroy",
+ G_CALLBACK (gtk_widget_destroyed), &chooser);
+ active = logview_prefs_get_active_logfile (logview->priv->prefs);
+ if (active != NULL) {
+ gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (chooser), active);
+ g_free (active);
+ }
+ }
- if (fontname == NULL)
- fontname = DEFAULT_LOGVIEW_FONT;
+ gtk_window_present (GTK_WINDOW (chooser));
+}
- font_desc = pango_font_description_from_string (fontname);
- if (font_desc) {
- gtk_widget_modify_font (logview->view, font_desc);
- pango_font_description_free (font_desc);
- }
+static void
+logview_close_log (GtkAction *action, LogviewWindow *logview)
+{
+ g_assert (LOGVIEW_IS_WINDOW (logview));
+
+ gtk_widget_hide (logview->priv->find_bar);
+ logview_manager_close_active_log (logview->priv->manager);
}
static void
-logview_set_fontsize (LogviewWindow *logview)
+logview_help (GtkAction *action, GtkWidget *parent_window)
{
- PangoFontDescription *fontdesc;
- PangoContext *context;
-
- g_assert (LOGVIEW_IS_WINDOW (logview));
+ GError *error = NULL;
- context = gtk_widget_get_pango_context (logview->view);
- fontdesc = pango_context_get_font_description (context);
- pango_font_description_set_size (fontdesc, (logview->fontsize)*PANGO_SCALE);
- gtk_widget_modify_font (logview->view, fontdesc);
- logview_save_prefs (logview);
-}
+ gtk_show_uri (gtk_widget_get_screen (parent_window),
+ "ghelp:gnome-system-log", gtk_get_current_event_time (),
+ &error);
+
+ if (error) {
+ error_dialog_show (parent_window, _("There was an error displaying help."), error->message);
+ g_error_free (error);
+ }
+}
static void
logview_bigger_text (GtkAction *action, LogviewWindow *logview)
{
- g_assert (LOGVIEW_IS_WINDOW (logview));
+ g_assert (LOGVIEW_IS_WINDOW (logview));
- logview->fontsize = MIN (logview->fontsize + 1, 24);
- logview_set_fontsize (logview);
+ logview->priv->fontsize = MIN (logview->priv->fontsize + 1, 24);
+ logview_set_fontsize (logview);
}
static void
logview_smaller_text (GtkAction *action, LogviewWindow *logview)
{
- g_assert (LOGVIEW_IS_WINDOW (logview));
+ g_assert (LOGVIEW_IS_WINDOW (logview));
- logview->fontsize = MAX (logview->fontsize-1, 6);
- logview_set_fontsize (logview);
+ logview->priv->fontsize = MAX (logview->priv->fontsize-1, 6);
+ logview_set_fontsize (logview);
}
static void
logview_normal_text (GtkAction *action, LogviewWindow *logview)
{
- g_assert (LOGVIEW_IS_WINDOW (logview));
+ g_assert (LOGVIEW_IS_WINDOW (logview));
- logview->fontsize = logview->original_fontsize;
- logview_set_fontsize (logview);
+ logview->priv->fontsize = logview->priv->original_fontsize;
+ logview_set_fontsize (logview);
}
-
+
static void
-logview_search (GtkAction *action, LogviewWindow *logview)
+logview_select_all (GtkAction *action, LogviewWindow *logview)
{
- g_assert (LOGVIEW_IS_WINDOW (logview));
-
- gtk_widget_show_all (logview->find_bar);
- logview_findbar_grab_focus (LOGVIEW_FINDBAR (logview->find_bar));
+ GtkTreeSelection *selection;
+
+ g_assert (LOGVIEW_IS_WINDOW (logview));
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (logview->priv->view));
+ gtk_tree_selection_select_all (selection);
}
static void
logview_copy (GtkAction *action, LogviewWindow *logview)
{
+#if 0 doesn't work for now;
gchar *text, **lines;
int nline, i, l1, l2;
gchar *line;
@@ -584,128 +499,142 @@
g_free (text);
g_strfreev (lines);
+#endif
}
-static void
-logview_select_all (GtkAction *action, LogviewWindow *logview)
+static void
+logview_collapse_rows (GtkAction *action, LogviewWindow *logview)
{
- GtkTreeSelection *selection;
-
- g_assert (LOGVIEW_IS_WINDOW (logview));
+ g_assert (LOGVIEW_IS_WINDOW (logview));
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (logview->view));
- gtk_tree_selection_select_all (selection);
+ gtk_tree_view_collapse_all (GTK_TREE_VIEW (logview->priv->view));
}
static void
-logview_menu_item_toggle_set_active (LogviewWindow *logview, char *path, gboolean state)
+logview_search (GtkAction *action, LogviewWindow *logview)
{
- GtkToggleAction *action;
-
- g_assert (path);
+ g_assert (LOGVIEW_IS_WINDOW (logview));
- action = GTK_TOGGLE_ACTION (gtk_ui_manager_get_action (logview->ui_manager, path));
- gtk_toggle_action_set_active (action, state);
+ gtk_widget_show_all (logview->priv->find_bar);
+ logview_findbar_grab_focus (LOGVIEW_FINDBAR (logview->priv->find_bar));
}
-static void
-logview_menu_item_set_state (LogviewWindow *logview, char *path, gboolean state)
+void
+logview_about (GtkWidget *widget, GtkWidget *window)
{
- GtkAction *action;
+ g_return_if_fail (GTK_IS_WINDOW (window));
- g_assert (path);
+ char *license_trans = g_strjoin ("\n\n", _(logview_about_license[0]),
+ _(logview_about_license[1]),
+ _(logview_about_license[2]), NULL);
+
+ gtk_show_about_dialog (GTK_WINDOW (window),
+ "name", _("System Log Viewer"),
+ "version", VERSION,
+ "copyright", "Copyright \xc2\xa9 1998-2008 Free Software Foundation, Inc.",
+ "license", license_trans,
+ "wrap-license", TRUE,
+ "comments", _("A system log viewer for GNOME."),
+ "authors", logview_about_authors,
+ "documenters", logview_about_documenters,
+ "translator_credits", strcmp (logview_about_translator_credits,
+ "translator-credits") != 0 ?
+ logview_about_translator_credits : NULL,
+ "logo_icon_name", "logviewer",
+ NULL);
+ g_free (license_trans);
- action = gtk_ui_manager_get_action (logview->ui_manager, path);
- gtk_action_set_sensitive (action, state);
+ return;
}
static void
-logview_calendar_set_state (LogviewWindow *logview)
+logview_toggle_statusbar (GtkAction *action, LogviewWindow *logview)
{
- g_assert (LOGVIEW_IS_WINDOW (logview));
+ g_assert (LOGVIEW_IS_WINDOW (logview));
- if (logview->curlog) {
- if (logview->curlog->days != NULL)
- calendar_init_data (CALENDAR (logview->calendar), logview);
- gtk_widget_set_sensitive (logview->calendar, (logview->curlog->days != NULL));
- } else
- gtk_widget_set_sensitive (logview->calendar, FALSE);
+ if (GTK_WIDGET_VISIBLE (logview->priv->statusbar))
+ gtk_widget_hide (logview->priv->statusbar);
+ else
+ gtk_widget_show (logview->priv->statusbar);
}
-/* actions callbacks */
-
static void
-open_file_selected_cb (GtkWidget *chooser, gint response, LogviewWindow *logview)
+logview_toggle_sidebar (GtkAction *action, LogviewWindow *logview)
{
- char *f;
- LogviewLog *log;
-
g_assert (LOGVIEW_IS_WINDOW (logview));
- gtk_widget_hide (GTK_WIDGET (chooser));
- if (response != GTK_RESPONSE_OK) {
- return;
- }
-
- f = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser));
-
- log = logview_manager_get_if_loaded (logview->priv->manager, f);
-
- if (log) {
- logview_manager_set_active_log (log);
- g_object_unref (log);
- goto out;
- }
-
- logview_manager_add_log_from_name (logview->priv->manager, f);
-
-out:
- g_free (f);
+ if (GTK_WIDGET_VISIBLE (logview->priv->sidebar))
+ gtk_widget_hide (logview->priv->sidebar);
+ else
+ gtk_widget_show (logview->priv->sidebar);
}
-static void
-logview_open_log (GtkAction *action, LogviewWindow *logview)
+static void
+logview_toggle_calendar (GtkAction *action, LogviewWindow *logview)
{
- static GtkWidget *chooser = NULL;
- char *active;
+ g_assert (LOGVIEW_IS_WINDOW (logview));
- if (chooser == NULL) {
- chooser = gtk_file_chooser_dialog_new (_("Open Log"),
- GTK_WINDOW (logview),
- GTK_FILE_CHOOSER_ACTION_OPEN,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_OPEN, GTK_RESPONSE_OK,
- NULL);
- gtk_dialog_set_default_response (GTK_DIALOG (chooser), GTK_RESPONSE_OK);
- gtk_window_set_modal (GTK_WINDOW (chooser), TRUE);
- g_signal_connect (G_OBJECT (chooser), "response",
- G_CALLBACK (open_file_selected_cb), logview);
- g_signal_connect (G_OBJECT (chooser), "destroy",
- G_CALLBACK (gtk_widget_destroyed), &chooser);
- active = logview_prefs_get_active_logfile (logview->priv->prefs);
- if (active != NULL) {
- gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (chooser), active);
- g_free (active);
+ if (GTK_WIDGET_VISIBLE (logview->priv->calendar))
+ gtk_widget_hide (logview->priv->calendar);
+ else {
+ gtk_widget_show (logview->priv->calendar);
+ if (!GTK_WIDGET_VISIBLE (logview->priv->sidebar)) {
+ GtkAction *action = gtk_ui_manager_get_action (logview->priv->ui_manager,
+ "/LogviewMenu/ViewMenu/ShowSidebar");
+ gtk_action_activate (action);
}
}
-
- gtk_window_present (GTK_WINDOW (chooser));
}
-static void
-logview_help (GtkAction *action, GtkWidget *parent_window)
-{
- GError *error = NULL;
+/* GObject functions */
- gtk_show_uri (gtk_widget_get_screen (parent_window),
- "ghelp:gnome-system-log", gtk_get_current_event_time (),
- &error);
+/* Menus */
- if (error) {
- error_dialog_show (parent_window, _("There was an error displaying help."), error->message);
- g_error_free (error);
- }
-}
+static GtkActionEntry entries[] = {
+ { "FileMenu", NULL, N_("_File"), NULL, NULL, NULL },
+ { "EditMenu", NULL, N_("_Edit"), NULL, NULL, NULL },
+ { "ViewMenu", NULL, N_("_View"), NULL, NULL, NULL },
+ { "HelpMenu", NULL, N_("_Help"), NULL, NULL, NULL },
+
+ { "OpenLog", GTK_STOCK_OPEN, N_("_Open..."), "<control>O", N_("Open a log from file"),
+ G_CALLBACK (logview_open_log) },
+ { "CloseLog", GTK_STOCK_CLOSE, N_("_Close"), "<control>W", N_("Close this log"),
+ G_CALLBACK (logview_close_log) },
+ { "Quit", GTK_STOCK_QUIT, N_("_Quit"), "<control>Q", N_("Quit the log viewer"),
+ G_CALLBACK (gtk_main_quit) },
+
+ { "Copy", GTK_STOCK_COPY, N_("_Copy"), "<control>C", N_("Copy the selection"),
+ G_CALLBACK (logview_copy) },
+ { "SelectAll", NULL, N_("Select _All"), "<Control>A", N_("Select the entire log"),
+ G_CALLBACK (logview_select_all) },
+ { "Search", GTK_STOCK_FIND, N_("_Filter..."), "<control>F", N_("Filter log"),
+ G_CALLBACK (logview_search) },
+
+ {"ViewZoomIn", GTK_STOCK_ZOOM_IN, NULL, "<control>plus", N_("Bigger text size"),
+ G_CALLBACK (logview_bigger_text)},
+ {"ViewZoomOut", GTK_STOCK_ZOOM_OUT, NULL, "<control>minus", N_("Smaller text size"),
+ G_CALLBACK (logview_smaller_text)},
+ {"ViewZoom100", GTK_STOCK_ZOOM_100, NULL, "<control>0", N_("Normal text size"),
+ G_CALLBACK (logview_normal_text)},
+
+ {"CollapseAll", NULL, N_("Collapse _All"), NULL, N_("Collapse all the rows"),
+ G_CALLBACK (logview_collapse_rows) },
+
+ { "HelpContents", GTK_STOCK_HELP, N_("_Contents"), "F1", N_("Open the help contents for the log viewer"),
+ G_CALLBACK (logview_help) },
+ { "AboutAction", GTK_STOCK_ABOUT, N_("_About"), NULL, N_("Show the about dialog for the log viewer"),
+ G_CALLBACK (logview_about) },
+
+};
+
+static GtkToggleActionEntry toggle_entries[] = {
+ { "ShowStatusBar", NULL, N_("_Statusbar"), NULL, N_("Show Status Bar"),
+ G_CALLBACK (logview_toggle_statusbar), TRUE },
+ { "ShowSidebar", NULL, N_("Side _Pane"), "F9", N_("Show Side Pane"),
+ G_CALLBACK (logview_toggle_sidebar), TRUE },
+ {"ShowCalendar", NULL, N_("Ca_lendar"), "<control>L", N_("Show Calendar Log"),
+ G_CALLBACK (logview_toggle_calendar), TRUE },
+};
static gboolean
window_size_changed_cb (GtkWidget *widget, GdkEventConfigure *event,
@@ -937,4 +866,29 @@
}
return window;
+}
+
+void
+logview_window_menus_set_state (LogviewWindow *logview)
+{
+ LogviewLog *log;
+ gboolean calendar_active = FALSE;
+ GtkWidget *widget;
+
+ g_assert (LOGVIEW_IS_WINDOW (logview));
+
+ log = logview_manager_get_current_log (logview->priv->manager);
+
+ if (log) {
+ calendar_active = (log->days != NULL);
+ }
+
+ logview_menu_item_set_state (logview, "/LogviewMenu/ViewMenu/ShowCalendar", calendar_active);
+ logview_menu_item_set_state (logview, "/LogviewMenu/FileMenu/CloseLog", (log != NULL));
+ logview_menu_item_set_state (logview, "/LogviewMenu/ViewMenu/CollapseAll", calendar_active);
+ logview_menu_item_set_state (logview, "/LogviewMenu/ViewMenu/Search", (log != NULL));
+ logview_menu_item_set_state (logview, "/LogviewMenu/EditMenu/Copy", (log != NULL));
+ logview_menu_item_set_state (logview, "/LogviewMenu/EditMenu/SelectAll", (log != NULL));
+
+ g_object_unref (log);
}
\ No newline at end of file
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]