REBOL [ Title: "Timelog" File: %times.r Date: 2000-06-18 Author: "Ingo Hohmann" Email: ingo@2b1.de Site: http://www.2b1.de/ Purpose: {Logs your working times, sends log to you} Version: 0.0.2 History: [ 0.0.2 {tried to use langugages, changed date/time display} 0.0.1 {initial} ] language-file: %times.lang ] yamm/import %languages.r language/bind [ &Back &Next &End &Remarks &Time_Log &Date &From &To ] times: make object! [ ; Functions set: func [ fields [block!] values [block!] /local i f v] [ for i 1 length? fields 1 [ f: pick fields i v: pick values i either path? :f [ system/words/set in get :f/1 :f/2 :v ] [ system/words/set :f :v ] ] ] date: func [/local date] [ date: to-idate now/date copy/part date find/reverse find/last date " " " " ] time: func [] [ copy/part to-string now/time 5 ] to-lines: func [ blk [block!] /local line txt][ txt: make string! 100 foreach line blk [ append txt join mold line newline ] ] log-file: either 4 = rebol/version/4 [ home zeiten.log ][ %/o/daten/zeiten.log ] log-data: either exists? log-file [ load log-file ] [ compose/deep [ [ (date) (time) (time) "" ]] ] log-pos: log-anz: length? log-data either not date = log-data/:log-anz/1 [ append/only log-data compose [ (date) (time) (time) "" ] log-pos: log-anz: length? log-data ] [ change log-data/:log-pos/3 time ] save log-file log-data log-pos: log-anz: length? log-data quit: func [][ save log-file log-data unview/all ] ;&Time_Log: "Time Log" ;print mold &Time_log view layout [ backdrop effect [gradient -1x-1 0.200.0] title &Time_log across label &Date tab fDate: field with [text: log-data/:log-pos/1] return text &From tab fFrom: field 80x24 with [text: log-data/:log-pos/2] text &To [ if log-pos = log-anz [ fTo/text: time show fTo ] ] fTo: field 80x24 with [text: log-data/:log-pos/3] return subtitle &Remarks [ send system/user/email rejoin ["BFH Zeiten^/^/" to-lines log-data] ] return space 0 fText: area 300x100 with [text: log-data/:log-pos/4] space 6 s1: slider 16x100 [ size: size-text fText fText/para/origin/y: s1/data - 1 * size/y / -480 + 2 show fText ] return bBack: button &Back [ log-data/:log-pos/1: fDate/text log-data/:log-pos/2: fFrom/text log-data/:log-pos/3: fTo/text log-data/:log-pos/4: fText/text save log-file log-data if 1 < log-pos [ log-pos: log-pos - 1 set [ fDate/text fFrom/text fTo/text fText/text ] log-data/:log-pos show fDate show fFrom show fTo show fText ] ] bEnd: button #"^e" &End [quit] bNext: button &Next [ log-data/:log-pos/1: fDate/text log-data/:log-pos/2: fFrom/text log-data/:log-pos/3: fTo/text log-data/:log-pos/4: fText/text save log-file log-data if log-pos < log-anz [ log-pos: log-pos + 1 fDate/text: log-data/:log-pos/1 show fDate fFrom/text: log-data/:log-pos/2 show fFrom fTo/text: log-data/:log-pos/3 show fTo fText/text: log-data/:log-pos/4 show fText ] ] ] ]