Merge branch 'module.laditools'

This commit is contained in:
Alessio Treglia 2011-12-08 17:05:11 +01:00
commit ed0b757b53
3 changed files with 39 additions and 40 deletions

View File

@ -25,6 +25,10 @@ import pty
from signal import SIGTERM from signal import SIGTERM
import termios import termios
import tty import tty
import gettext
import laditools
gettext.install(laditools.__name__)
try: try:
import imp import imp
@ -40,11 +44,9 @@ try:
import pygtk import pygtk
pygtk.require ('2.0') pygtk.require ('2.0')
import gtk import gtk
import gtk.glade
import vte import vte
import laditools
except Exception, e: except Exception, e:
error = gtk.MessageDialog (None, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, "You need to get you dependencies right before you run this program. Ask your package maintainer why this is happening to you\n%s" % repr(e)) error = gtk.MessageDialog (None, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, _("You need to get you dependencies right before you run this program. Ask your package maintainer why this is happening to you\n%s") % repr(e))
error.run () error.run ()
exit (1) exit (1)
@ -74,7 +76,7 @@ def read_last(lfile, lines):
lfile.seek(endpos, 0) lfile.seek(endpos, 0)
return backlog return backlog
class ladilog (gtk.glade.XML): class ladilog(object):
def __init__ (self): def __init__ (self):
self.log_files = [ self.log_files = [
{ {
@ -113,27 +115,28 @@ class ladilog (gtk.glade.XML):
# skip logfiles that dont exist # skip logfiles that dont exist
if not os.access(log['logfile_path'], os.R_OK): if not os.access(log['logfile_path'], os.R_OK):
self.log_files.remove(log) self.log_files.remove(log)
print "Skipping '%s' because it does not exist" % log['logfile_path'] print _("Skipping '%s' because it does not exist") % log['logfile_path']
else: else:
print "Watching '%s'" % log['logfile_path'] print _("Watching '%s'") % log['logfile_path']
max_lines_text = self.param_dict['max_lines'] max_lines_text = self.param_dict['max_lines']
self.max_lines = int (max_lines_text) self.max_lines = int (max_lines_text)
# Load the glade file # Load the glade file
gtk.glade.XML.__init__(self, laditools.find_data_file("ladilog_ui.glade")) builder = gtk.Builder()
builder.add_from_file(laditools.find_data_file("ladilog_ui.ui"))
# Get the ui ready for action # Get the ui ready for action
self.event_dict = {"on_ladilog_ui_destroy" : self.on_quit, self.event_dict = {"on_ladilog_ui_destroy" : self.on_quit,
"on_close_button_clicked" : self.on_quit, "on_close_button_clicked" : self.on_quit,
"on_clear_button_clicked" : self.on_clear_text, "on_clear_button_clicked" : self.on_clear_text,
"on_purge_button_clicked" : self.on_purge} "on_purge_button_clicked" : self.on_purge}
self.signal_autoconnect (self.event_dict) builder.connect_signals(self.event_dict)
# Create our terminal and display it # Create our terminal and display it
for log in self.log_files: for log in self.log_files:
log['term'] = vte.Terminal () log['term'] = vte.Terminal ()
log["tab_label"] = gtk.Label (log["name"]) log["tab_label"] = gtk.Label (log["name"])
self.logview_notebook = self.get_widget ("ladilog_notebook") self.logview_notebook = builder.get_object ("ladilog_notebook")
for log in self.log_files: for log in self.log_files:
log['term'].show () log['term'].show ()
@ -148,9 +151,9 @@ class ladilog (gtk.glade.XML):
log["term"].feed(line) log["term"].feed(line)
except ValueError: except ValueError:
print "You called Popen with invalid arguments... dumbass" print _("You called Popen with invalid arguments... dumbass")
except: except:
print "Unexpected error:", sys.exc_info ()[0] print _("Unexpected error:"), sys.exc_info ()[0]
for log in self.log_files: for log in self.log_files:
self.logview_notebook.append_page (log["term"]) self.logview_notebook.append_page (log["term"])
@ -191,6 +194,6 @@ class ladilog (gtk.glade.XML):
try: try:
ladilog().run() ladilog().run()
except Exception, e: except Exception, e:
error = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, "Unexpected error\n\n" + repr(e)) error = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, _("Unexpected error\n\n") + repr(e))
error.run() error.run()
exit(1) exit(1)

View File

@ -1,23 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
<!--Generated with glade3 3.4.0 on Tue Aug 5 23:08:01 2008 --> <!--Generated with glade3 3.4.0 on Tue Aug 5 23:08:01 2008 -->
<glade-interface> <interface>
<widget class="GtkWindow" id="ladilog_ui"> <object class="GtkWindow" id="ladilog_ui">
<property name="visible">True</property> <property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="title" translatable="yes">LADI - Log viewer</property> <property name="title" translatable="yes">LADI - Log viewer</property>
<property name="icon">laditools_logo.svg</property> <property name="icon">laditools_logo.svg</property>
<signal name="destroy" handler="on_ladilog_ui_destroy"/> <signal handler="on_ladilog_ui_destroy" name="destroy"/>
<child> <child>
<widget class="GtkVBox" id="ladilog_vbox"> <object class="GtkVBox" id="ladilog_vbox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child> <child>
<widget class="GtkImage" id="laditools_logo"> <object class="GtkImage" id="laditools_logo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="pixbuf">laditools_logo.svg</property> <property name="pixbuf">laditools_logo.svg</property>
</widget> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">False</property> <property name="fill">False</property>
@ -25,72 +24,69 @@
</packing> </packing>
</child> </child>
<child> <child>
<widget class="GtkNotebook" id="ladilog_notebook"> <object class="GtkNotebook" id="ladilog_notebook">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
</widget> </object>
<packing> <packing>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child> <child>
<widget class="GtkHBox" id="button_hbox"> <object class="GtkHBox" id="button_hbox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="border_width">10</property> <property name="border_width">10</property>
<child> <child>
<widget class="GtkButton" id="clear_button"> <object class="GtkButton" id="clear_button">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="receives_default">True</property> <property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Clear</property> <property name="label" translatable="yes">Clear</property>
<property name="response_id">0</property> <signal handler="on_clear_button_clicked" name="clicked"/>
<signal name="clicked" handler="on_clear_button_clicked"/> </object>
</widget>
<packing> <packing>
<property name="fill">False</property> <property name="fill">False</property>
</packing> </packing>
</child> </child>
<child> <child>
<widget class="GtkButton" id="purge_button"> <object class="GtkButton" id="purge_button">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="receives_default">True</property> <property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Purge logs</property> <property name="label" translatable="yes">Purge logs</property>
<property name="response_id">0</property> <signal handler="on_purge_button_clicked" name="clicked"/>
<signal name="clicked" handler="on_purge_button_clicked"/> </object>
</widget>
<packing> <packing>
<property name="fill">False</property> <property name="fill">False</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child> <child>
<widget class="GtkButton" id="close_button"> <object class="GtkButton" id="close_button">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="receives_default">True</property> <property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Close</property> <property name="label" translatable="yes">Close</property>
<property name="response_id">0</property> <signal handler="on_close_button_clicked" name="clicked"/>
<signal name="clicked" handler="on_close_button_clicked"/> </object>
</widget>
<packing> <packing>
<property name="fill">False</property> <property name="fill">False</property>
<property name="position">2</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
</widget> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">False</property> <property name="fill">False</property>
<property name="position">2</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
</widget> </object>
</child> </child>
</widget> </object>
</glade-interface> </interface>

View File

@ -59,7 +59,7 @@ setup(name='laditools',
('share/applications', ['data/laditray.desktop']), ('share/applications', ['data/laditray.desktop']),
('share/applications', ['data/ladiconf.desktop']), ('share/applications', ['data/ladiconf.desktop']),
('share/laditools/data', ['data/laditools_logo.svg', ('share/laditools/data', ['data/laditools_logo.svg',
'data/ladilog_ui.glade', 'data/ladilog_ui.ui',
'data/started.svg', 'data/started.svg',
'data/starting.svg', 'data/starting.svg',
'data/stopped.svg'])], 'data/stopped.svg'])],