#!/usr/bin/newlisp # # Simple table in GTK # # January 2009, PvE. #------------------------------------------------------------------------------------------------- # Define libraries for each platform (case ostype ("Win32" (set 'GTK "libgtk-win32-2.0-0.dll") (set 'GLIB "libglib-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 'GLIB "/Library/Frameworks/GLib.framework/Libraries/libglib-2.0.0.dylib") (set 'GOBJECT "/Library/Frameworks/GLib.framework/Libraries/libgobject-2.0.0.dylib")) (true (set 'GTK "libgtk-x11-2.0.so.0") (set 'GLIB "libglib-2.0.so.0") (set 'GOBJECT "libgobject-2.0.so.0")) ) # Get the necessary functions (import GOBJECT "g_signal_connect_data") (import GLIB "g_malloc") (import GTK "gtk_cell_renderer_text_new") (import GTK "gtk_container_add") (import GTK "gtk_exit") (import GTK "gtk_init") (import GTK "gtk_list_store_append") (import GTK "gtk_list_store_new") (import GTK "gtk_list_store_set") (import GTK "gtk_main") (import GTK "gtk_scrolled_window_new") (import GTK "gtk_scrolled_window_set_policy") (import GTK "gtk_scrolled_window_set_shadow_type") (import GTK "gtk_tree_sortable_set_sort_column_id") (import GTK "gtk_tree_view_append_column") (import GTK "gtk_tree_view_column_new_with_attributes") (import GTK "gtk_tree_view_column_set_clickable") (import GTK "gtk_tree_view_column_set_resizable") (import GTK "gtk_tree_view_get_selection") (import GTK "gtk_tree_view_new_with_model") (import GTK "gtk_tree_view_set_grid_lines") (import GTK "gtk_tree_view_set_headers_clickable") (import GTK "gtk_widget_set_size_request") (import GTK "gtk_widget_show_all") (import GTK "gtk_window_new") (import GTK "gtk_window_set_icon_name") (import GTK "gtk_window_set_resizable") (import GTK "gtk_window_set_title") # Callback to exit program (define (Exit_Prog) (gtk_exit 0) (exit)) # Initialize GTK (gtk_init 0 0) # Define main window and some attributes (set 'Window (gtk_window_new 0)) (gtk_window_set_title Window "GTK tables") (gtk_window_set_resizable Window 0) (gtk_window_set_icon_name Window "gtk-info") (gtk_widget_set_size_request Window 300 200) (g_signal_connect_data Window "delete-event" (callback 0 'Exit_Prog) 0 0 0) # Define the List Store - 64 means TEXT (set 'Lst (gtk_list_store_new 3 64 64 64)) (set 'View (gtk_tree_view_new_with_model Lst)) (set 'Sel (gtk_tree_view_get_selection View)) # Define the columns (set 'Column1 (gtk_tree_view_column_new_with_attributes "Your" (gtk_cell_renderer_text_new) "text" 0 0)) (gtk_tree_view_append_column View Column1) (gtk_tree_view_column_set_resizable Column1 1) (set 'Column2 (gtk_tree_view_column_new_with_attributes "Advertisement" (gtk_cell_renderer_text_new) "text" 1 0)) (gtk_tree_view_append_column View Column2) (gtk_tree_view_column_set_resizable Column2 1) (set 'Column3 (gtk_tree_view_column_new_with_attributes "Here" (gtk_cell_renderer_text_new) "text" 2 0)) (gtk_tree_view_append_column View Column3) (gtk_tree_view_column_set_resizable Column3 1) # Define the container (set 'Sw (gtk_scrolled_window_new 0 0)) (gtk_scrolled_window_set_policy Sw 1 1) (gtk_scrolled_window_set_shadow_type Sw 1) (gtk_container_add Sw View) (gtk_tree_sortable_set_sort_column_id Lst 0 0) (gtk_tree_view_set_grid_lines View 3) # Fill with some data (set 'Iter (g_malloc 128)) (gtk_list_store_append Lst Iter) (gtk_list_store_set Lst Iter 0 "Hello" -1) (gtk_list_store_set Lst Iter 1 "Cruel" -1) (gtk_list_store_set Lst Iter 2 "World" -1) (gtk_list_store_append Lst Iter) (gtk_list_store_set Lst Iter 0 "Tell me" -1) (gtk_list_store_set Lst Iter 1 "Where are" -1) (gtk_list_store_set Lst Iter 2 "My Tables?" -1) (gtk_list_store_append Lst Iter) (gtk_list_store_set Lst Iter 0 "This GTK" -1) (gtk_list_store_set Lst Iter 1 "stuff is" -1) (gtk_list_store_set Lst Iter 2 "really easy" -1) # Finish gui (gtk_container_add Window Sw) (gtk_widget_show_all Window) # Mainloop (gtk_main)