#!/usr/bin/env python # -*- coding: iso8859-2 -*- ''' Big Clock 1.1 (c) 2003-2006 Jan ONDREJ (SAL) This script is under GPL license. ''' description = 'Clockiik :-)' import gobject import gtk import time, sys, os, locale GDK=gtk.keysyms alarmtime='--:--:--' acur=-1 acurp=[7,0,1,3,3,4,6,6,7,0] acurm=[7,0,1,1,3,4,4,6,6,6] amaxp=['2','9','0','5','9','0','5','9'] at=(9999, 1, 1, 0, 0, 0, 0, 0, 0) def chgt(n,curp=-1,recur=-1): global alarmtime,acur if (recur>=0) & (alarmtime=='--:--:--'): alarmtime=time.strftime("%H:%M:%S",time.localtime()) acur=curp=4 if curp<0: curp=acur if curp<0: return c=chr(ord(alarmtime[curp])+n) if c>amaxp[curp]: c='0' if (recur>0) & (curp>=0): chgt(1,acurm[curp],1) if c<'0': c=amaxp[curp] if (recur>0) & (curp>=0): chgt(-1,acurm[curp],1) alarmtime=alarmtime[:curp]+c+alarmtime[curp+1:] showtime(0) def chgacur(n): global acur,alarmtime if n>0: acur=acurp[acur+n+1] else: acur=acurm[acur+n+1] if alarmtime=='--:--:--': alarmtime=time.strftime("%H:%M:00",time.localtime()) showtime(0) def keyf(self, event): global label,alarmtime,acur,at if event.keyval == GDK.Escape: gtk.main_quit() if event.keyval == GDK.Return: if (alarmtime!='--:--:--'): if (int(alarmtime[0:2])>0) & (int(alarmtime[0:2])<24): lt=time.localtime() at=(lt.tm_year,lt.tm_mon,lt.tm_mday, int(alarmtime[0:2]),int(alarmtime[3:5]),int(alarmtime[6:8]), lt.tm_wday,lt.tm_yday,lt.tm_isdst) acur=-1 showtime(0) if event.keyval == GDK.Up: chgt(1) if event.keyval == GDK.Down: chgt(-1) if event.keyval == GDK.Left: chgacur(-1) if event.keyval == GDK.Right: chgacur(1) if (event.keyval==GDK.Page_Up) | (event.keyval==GDK.u): chgt(1,acur,1) if (event.keyval==GDK.Page_Down) | (event.keyval==GDK.d): chgt(-1,acur,1) if (event.keyval >= GDK._0) & (event.keyval <= GDK._9): if acur<0: acur=0 alarmtime=alarmtime[:acur]+chr(event.keyval)+alarmtime[acur+1:] chgacur(1) if event.keyval == GDK.space: at=(9999, 1, 1, 0, 0, 0, 0, 0, 0) alarmtime='--:--:--' acur=-1 showtime(0) def addtext(text,tagname): global buffer iter=buffer.get_end_iter() buffer.insert_with_tags_by_name(iter,text,tagname) def showtime(noadd=1): global at if at<=time.localtime(): if execcmd!=[]: os.execv(execcmd[0],execcmd) else: f=open("/dev/console","w") f.write("\a") f.close() start,end = buffer.get_bounds() buffer.delete(start,end) addtext(time.strftime("%H:%M:%S",time.localtime())+"\n",'clock') addtext(unicode(time.strftime("%e. %B %Y, %A",time.localtime()), locale.getlocale()[1])+"\n",'date') astr=unicode(' Budík: ','iso8859-2') if acur<0: addtext(astr+alarmtime,'alarm') else: addtext(astr+alarmtime[:acur],'alarm') addtext(alarmtime[acur],'alarmr') addtext(alarmtime[acur+1:],'alarm') if noadd>0: gobject.timeout_add(1000, showtime) def main(): global buffer win = gtk.Window() win.connect('destroy', lambda win: gtk.main_quit()) win.set_title('Clock') win.set_border_width(0) vbox = gtk.VBox(False, 8) win.add(vbox) text_view = gtk.TextView() text_view.connect('key_press_event', keyf); vbox.pack_start(text_view) buffer = gtk.TextBuffer(None) text_view.set_buffer(buffer) text_view.set_editable(False) text_view.set_cursor_visible(False) tag = buffer.create_tag('clock') tag.set_property('font', 'Sans 180') #tag.set_property('background','navyblue') #tag.set_property('foreground','yellow') tag = buffer.create_tag('date') tag.set_property('font', 'Sans 60') tag.set_property('justification',gtk.JUSTIFY_CENTER) tag = buffer.create_tag('alarm') tag.set_property('font', 'Sans 80') tag.set_property('justification',gtk.JUSTIFY_CENTER) tag = buffer.create_tag('alarmr') tag.set_property('font', 'Sans 80') tag.set_property('justification',gtk.JUSTIFY_CENTER) tag.set_property('foreground','red') gobject.timeout_add(100, showtime); win.show_all() gtk.main() if __name__ == '__main__': execcmd=[] if sys.argv[1:]: execcmd=sys.argv[1:] print execcmd main()