13978 Users should be able to clear logged errors from within PM
authorPadraig O'Briain <padraig.obriain@oracle.com>
Fri, 21 May 2010 16:11:58 +0100
changeset 1912 2c621de836c1
parent 1911 1029de64558c
child 1913 b9558971b1a8
13978 Users should be able to clear logged errors from within PM
src/gui/data/packagemanager.glade
src/gui/modules/misc.py
src/gui/modules/pmlogging.py
src/gui/modules/webinstall.py
src/packagemanager.py
src/updatemanager.py
--- a/src/gui/data/packagemanager.glade	Fri May 21 15:58:47 2010 +0100
+++ b/src/gui/data/packagemanager.glade	Fri May 21 16:11:58 2010 +0100
@@ -6167,9 +6167,20 @@
         <child internal-child="action_area">
           <widget class="GtkHButtonBox" id="dialog-action_area16">
             <property name="visible">True</property>
-            <property name="layout_style">end</property>
             <child>
-              <placeholder/>
+              <widget class="GtkButton" id="log_clear_button">
+                <property name="label">gtk-clear</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_log_clear_button_clicked"/>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
             </child>
             <child>
               <widget class="GtkButton" id="log_close_button">
--- a/src/gui/modules/misc.py	Fri May 21 15:58:47 2010 +0100
+++ b/src/gui/modules/misc.py	Fri May 21 16:11:58 2010 +0100
@@ -137,9 +137,9 @@
         app.w_infosearch_frame.show()
         app.w_infosearch_frame.set_tooltip_text(_("Errors logged: click to view"))
 
-def setup_logging(client_name):
-        su_logging(client_name)
-        
+def setup_logging():
+        su_logging(global_settings.client_name)
+
 def shutdown_logging():
         sd_logging()
         
--- a/src/gui/modules/pmlogging.py	Fri May 21 15:58:47 2010 +0100
+++ b/src/gui/modules/pmlogging.py	Fri May 21 16:11:58 2010 +0100
@@ -19,8 +19,7 @@
 #
 # CDDL HEADER END
 #
-# Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
+# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
 #
 
 import sys
@@ -57,6 +56,8 @@
                     {
                         "on_log_close_button_clicked": \
                             self.__on_log_close_button_clicked,
+                        "on_log_clear_button_clicked": \
+                            self.__on_log_clear_button_clicked,
                         "on_view_log_dialog_delete_event": \
                             self.__on_log_dialog_delete_event
                     }
@@ -74,6 +75,28 @@
         def __on_log_close_button_clicked(self, widget):
                 self.w_view_log_dialog.hide()
 
+        def __on_log_clear_button_clicked(self, widget):
+                log_dir = gui_misc.get_log_dir()
+                ext = gui_misc.get_log_error_ext()
+                self.__clear_logs(log_dir, ext) 
+                ext = gui_misc.get_log_info_ext()
+                self.__clear_logs(log_dir, ext) 
+                gui_misc.shutdown_logging()
+                gui_misc.setup_logging()
+                self.log_activate()
+
+        def __clear_logs(self, log_dir, ext):
+                self.__clear_log(os.path.join(log_dir, gui_misc.get_pm_name() + ext))
+                self.__clear_log(os.path.join(log_dir, gui_misc.get_wi_name() + ext))
+                self.__clear_log(os.path.join(log_dir, gui_misc.get_um_name() + ext))
+
+        @staticmethod
+        def __clear_log(path):
+                try:
+                        os.unlink(path)
+                except OSError:
+                        pass
+
         def log_activate(self):
                 textbuffer = self.w_log_errors_textview.get_buffer()
                 textbuffer.set_text(_("Loading ..."))
--- a/src/gui/modules/webinstall.py	Fri May 21 15:58:47 2010 +0100
+++ b/src/gui/modules/webinstall.py	Fri May 21 16:11:58 2010 +0100
@@ -134,7 +134,7 @@
                 self.w_webinstall_dialog.set_icon(self.window_icon)
                 self.api_o = gui_misc.get_api_object(self.image_dir, self.pr,
                     self.w_webinstall_dialog)
-                gui_misc.setup_logging(gui_misc.get_wi_name())
+                gui_misc.setup_logging()
         
         def __output_new_pub_tasks(self, infobuffer, textiter, num_tasks):
                 if num_tasks == 0:
--- a/src/packagemanager.py	Fri May 21 15:58:47 2010 +0100
+++ b/src/packagemanager.py	Fri May 21 16:11:58 2010 +0100
@@ -474,7 +474,7 @@
                 self.versioninfo.set_modal_and_transient(self.w_main_window)
 
                 self.__setup_text_signals()
-                gui_misc.setup_logging(gui_misc.get_pm_name())
+                gui_misc.setup_logging()
                 
         def __set_initial_sizes(self):
                 if self.gconf.initial_app_width >= MIN_APP_WIDTH and \
--- a/src/updatemanager.py	Fri May 21 15:58:47 2010 +0100
+++ b/src/updatemanager.py	Fri May 21 16:11:58 2010 +0100
@@ -204,7 +204,7 @@
  
                 self.w_um_dialog.show_all()
                 self.w_um_dialog.resize(620, 500)
-                gui_misc.setup_logging(gui_misc.get_um_name())
+                gui_misc.setup_logging()
 
         @staticmethod
         def __get_um_liststore():