#!/usr/bin/newlisp # Example of direct gtk2+ programming in newlisp # Norman at http://www.nodep.nl/newlisp/index.html # predefine libraries for platform (tested on LINUX UBUNTU 9.04 and OSX L.M.) (case ostype ("Win32" (set 'GTK "libgtk-win32-2.0-0.dll") (set 'GTK "libgdk-win32-2.0-0.dll") (set 'GOBJECT "libgobject-2.0-0.dll")) ("OSX" (set 'GTK "/Library/Frameworks/Gtk.framework/Libraries/libgtk-quartz-2.0.0.dylib") (set 'GDK "/Library/Frameworks/Gtk.framework/Libraries/libgdk-quartz-2.0.0.dylib") (set 'GOBJECT "/Library/Frameworks/GLib.framework/Libraries/libgobject-2.0.0.dylib")) (true ; libnames adjusted and tested on Linux UBUNTU 9.04 (L.M.) (set 'GTK "libgtk-x11-2.0.so.0") (set 'GDK "libgdk-x11-2.0.so.0") (set 'GOBJECT "libgobject-2.0.so.0")) ) # get functions from library's (import GOBJECT "g_signal_connect_data") (import GDK "gdk_color_parse") (dolist (L '( "gtk_init" "gtk_main" "gtk_exit" "gtk_table_new" "gtk_progress_bar_new" "gtk_table_attach_defaults" "gtk_events_pending" "gtk_main_iteration" "gtk_progress_bar_set_fraction" "gtk_container_add" "gtk_main_iteration" "gtk_widget_show_all" "gtk_widget_show_all" "gtk_widget_set_size_request" "gtk_widget_modify_fg" "gtk_widget_modify_bg" "gtk_window_new" "gtk_window_set_position" "gtk_window_set_resizable" "gtk_window_set_title" "gtk_window_set_decorated" )) (import GTK L)) # callback to exit program (define (_exit_) (gtk_exit 0) (exit)) # create a window (gtk_init 0 0) (set 'WIN (gtk_window_new 0)) (gtk_window_set_title WIN "different time") (gtk_widget_set_size_request WIN 200 32) (gtk_window_set_resizable WIN 0) (gtk_window_set_position WIN 2) (gtk_window_set_decorated WIN 1) (g_signal_connect_data WIN "delete-event" (callback 0 '_exit_) 0 0 0) # progress bars (setq tbl (gtk_table_new 100 100 1 )) (gtk_container_add WIN tbl) (setq pb1 (gtk_progress_bar_new)) (gtk_table_attach_defaults tbl pb1 1 100 1 10) (setq pb2 (gtk_progress_bar_new )) (gtk_table_attach_defaults tbl pb2 1 100 11 20) (setq pb3 (gtk_progress_bar_new)) (gtk_table_attach_defaults tbl pb3 1 100 21 30) # colors (gtk2+) (gdk_color_parse "#000000" black) (gtk_widget_modify_bg pb1 0 black) (gtk_widget_modify_bg pb2 0 black) (gtk_widget_modify_bg pb3 0 black) (gtk_widget_modify_bg WIN 0 black) (gtk_widget_show_all WIN) (setq event 0) (while (= (integer event) 0) (while (= (integer (gtk_events_pending)) 1) (gtk_main_iteration)) (sleep 50) (gtk_progress_bar_set_fraction pb3 (div (float (date (date-value) 0 "%H")) 24)) (gtk_progress_bar_set_fraction pb2 (div (float (date (date-value) 0 "%M")) 60)) (gtk_progress_bar_set_fraction pb1 (div (float (date (date-value) 0 "%S")) 60)) )) (_exit_)