HUG3 testing (unofficial HUG) uses gtk3
Sept 3, 2014 14:40:14 GMT 1
Post by vovchik on Sept 3, 2014 14:40:14 GMT 1
Dear Joe,
And we can do crazy stuff like this - I still have to work on the arguments passed to the sub...
With kind regards,
vovchik
And we can do crazy stuff like this - I still have to work on the arguments passed to the sub...
' ***********************
' COMPILER OPTIONS
' ***********************
PRAGMA OPTIONS `pkg-config --cflags gtk+-3.0`
PRAGMA LDFLAGS `pkg-config --libs gtk+-3.0`
OPTION PARSE FALSE
' ***********************
' END COMPILER OPTIONS
' ***********************
' ***********************
' INITIALIZATION
' ***********************
DECLARE *window TYPE void
DECLARE *frame1, *frame2, *frame3, *frame4 TYPE void
DECLARE *table TYPE void
CONST MY_VERSION$ = "v.01a"
' ***********************
' END INITIALIZATION
' ***********************
' ***********************
' SUB & FUNCTIONS
' ***********************
' -----------------
SUB DESTROY(NUMBER widget, void* data)
' -----------------
gtk_main_quit()
END SUB
' -----------------
SUB FRAME_GRAD(int size, int pad, int radius, int style)
' -----------------
' use #xxxxxx or named color in quotes
' plus thickness, pad, radius and style as int
LOCAL provider TYPE void*
LOCAL display TYPE void*
LOCAL screen TYPE void*
LOCAL data$, style$ TYPE STRING
' The border-style property accepts the 'none', 'solid',
' 'inset' and 'outset' keywords.
SELECT style
CASE 0
style$ = "none"
CASE 1
style$ = "solid"
CASE 2
style$ = "inset"
CASE 3
style$ = "outset"
END SELECT
data$ = ".frame{" & \
"border-color: shade(mix(rgb(36, 100, 90), red, 0.5), 0.9);" & \
"background-image: -gtk-gradient (linear, left top, " & \
"left bottom, from (pink), " & \
"color-stop (0.5, darker (maroon)), " & \
"to (orange)); " & \
"padding:" & STR$(pad) & "px;" & \
"border-radius:" & STR$(radius) & "px;" \
"border-style:" & style$ & ";" & \
" }"
provider = gtk_css_provider_new()
display = gdk_display_get_default()
screen = gdk_display_get_default_screen(display)
gtk_style_context_add_provider_for_screen (screen, provider, 600)
gtk_css_provider_load_from_data(provider, data$, -1, NULL)
g_object_unref(provider)
END SUB
' -----------------
SUB MK_GUI()
' -----------------
LOCAL shadow TYPE int
gtk_init(0, 0)
window = gtk_window_new(0)
gtk_window_set_position(window, 0)
gtk_window_set_default_size(window, 250, 250)
gtk_window_set_title(window, CONCAT$("Gtk3 Frame - ", MY_VERSION$))
gtk_container_set_border_width(window, 10)
table = gtk_table_new(2, 2, TRUE)
gtk_table_set_row_spacings(table, 10)
gtk_table_set_col_spacings(table, 10)
gtk_container_add(window, table)
frame1 = gtk_frame_new("Shadow In")
gtk_frame_set_shadow_type(frame1, 1)
frame2 = gtk_frame_new("Shadow Out")
gtk_frame_set_shadow_type(frame2, 2)
frame3 = gtk_frame_new("Etched In")
gtk_frame_set_shadow_type(frame3, 3)
frame4 = gtk_frame_new("Etched Out")
gtk_frame_set_shadow_type(frame4, 4)
gtk_table_attach_defaults(table, frame1, 0, 1, 0, 1)
gtk_table_attach_defaults(table, frame2, 0, 1, 1, 2)
gtk_table_attach_defaults(table, frame3, 1, 2, 0, 1)
gtk_table_attach_defaults(table, frame4, 1, 2, 1, 2)
g_signal_connect_data(window, "destroy", ADDRESS(DESTROY), 0, 0, 0)
' use #xxxxxx or named colors in quotes for bg and border,
' plus thickness, pad, radius and style as int
FRAME_GRAD(3, 4, 8, 3)
gtk_widget_show_all(window)
END SUB
' ***********************
' END SUBS & FUNCTIONS
' ***********************
' ***********************
' MAIN
' ***********************
MK_GUI()
gtk_main()
' ***********************
' END MAIN
' ***********************
With kind regards,
vovchik