directly with GTK2+.. The import part can be put inside a module so that
only leaves the real coding..which is actualy pretty small...just to mention it.. ;-)
Code: Select all
#!/usr/bin/newlisp
# Example of direct gtk2+ programming in newlisp
# predefine libraries for platform
(set 'GTK "libgtk-x11-2.0.so")
(set 'GDK "libgdk-x11-2.0.so")
(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_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_)