Bassix GTK3 webkit browser Wiki
A very small gtk3-webkit browser that runs well on the raspberry pi3
Brought to you by:
big-bass
All of these bassix demos were tested on linux mint 20.1 64 bit xfce in 2021

compile with
bacon cut-copy-paste.bac
** Example code: cut-copy-paste.bac**
'--- bigbass GTK3 with FIXED placement and some new macros
'--- for the lack of a name we can call it gtk3 bassix
'--- a simple 'HUG' looking syntax idea but include only what you need as you go
'--- June 25 2020
OPTION PARSE FALSE
PRAGMA INCLUDE <gtk-3.0/gtk/gtk.h>
PRAGMA OPTIONS `pkg-config --cflags gtk+-3.0`
PRAGMA LDFLAGS `pkg-config --libs gtk+-3.0`
PRAGMA OPTIONS -Wno-deprecated-declarations
'--- new signal handlers to simplify the callbacks
DEF FN CONNECT( widget, event,cb) = g_signal_connect_data(widget,event,cb, 0, 0, 0)
DEF FN CONNECT_DATA( widget, event,cb,t) = g_signal_connect_data(G_OBJECT (widget),event,G_CALLBACK (cb),(gpointer) t, 0, 0)
DEF FN NEW(widget,...) = g_object_new(widget, __VA_ARGS__,NULL)
DEF FN PLACE( widget, name,wid,high) = gtk_fixed_put(GTK_FIXED(widget), GTK_WIDGET(name),wid,high)
DEF FN ADD_FIXED( widget, name) = gtk_container_add(GTK_CONTAINER(widget), GTK_WIDGET(name))
DEF FN SET(widget, name, ...) = g_object_set(GTK_WIDGET(widget), name, __VA_ARGS__, NULL)
DEF FN GET( widget, name, ...) = g_object_get(widget, name, __VA_ARGS__, NULL)
DEF FN SHOW( widget) = gtk_widget_show_all(GTK_WIDGET(widget))
DEF FN HIDE( widget) = gtk_widget_hide(GTK_WIDGET(widget))
DEF FN INIT() = gtk_init(0,0)
DEF FN LABEL(t) = gtk_label_new(t)
DEF FN BUTTON_ADD(t) = gtk_button_new_with_label(t)
DEF FN TEXT_VIEW() = gtk_text_view_new ()
DEF FN FIXED() = gtk_fixed_new()
DEF FN DISPLAY() = gtk_main()
DEF FN ATTACH() = gtk_container_add()
DEF FN SCROLLED_WINDOW() = gtk_scrolled_window_new (NULL, NULL)
ALIAS GTK_TYPE_WINDOW TO WINDOW
ALIAS GTK_TYPE_BUTTON TO BUTTON
ALIAS GTK_WIDGET TO WIDGET
ALIAS GTK_CONTAINER TO CONTAINER
DECLARE window, scrolled_win TYPE GtkWidget*
DECLARE fixed TYPE GtkWidget*
'=====================
SUB exit_prog
'=====================
END
END SUB
'=====================
SUB cut_clicked (GtkButton *cut,GtkTextView *textview)
'=====================
LOCAL clipboard ,buffer TYPE void*
clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD)
buffer = gtk_text_view_get_buffer (textview)
gtk_text_buffer_cut_clipboard (buffer, clipboard, TRUE)
END SUB
'=====================
SUB copy_clicked (GtkButton *copy,GtkTextView *textview)
'=====================
LOCAL clipboard ,buffer TYPE void*
clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD)
buffer = gtk_text_view_get_buffer (textview)
gtk_text_buffer_copy_clipboard (buffer, clipboard)
END SUB
'=====================
SUB paste_clicked (GtkButton *paste,GtkTextView *textview)
'=====================
LOCAL clipboard ,buffer TYPE void*
clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD)
buffer = gtk_text_view_get_buffer (textview)
gtk_text_buffer_paste_clipboard (buffer, clipboard, NULL, TRUE)
END SUB
INIT
window = NEW(WINDOW, "icon-name","gtk-about")
SET(window, "title", "Cut, Copy & Paste", "border-width", 10, "default-width", 450)
fixed = FIXED()
ADD_FIXED(window, fixed)
textview = TEXT_VIEW ()
cut_btn = BUTTON_ADD ("Cut")
copy_btn = BUTTON_ADD ("Copy")
paste_btn = BUTTON_ADD ("Paste")
'--- handle callbacks
CONNECT(window, "delete-event", exit_prog)
CONNECT_DATA(cut_btn, "clicked" ,cut_clicked ,textview)
CONNECT_DATA(copy_btn, "clicked" ,copy_clicked ,textview)
CONNECT_DATA(paste_btn, "clicked" ,paste_clicked ,textview)
scrolled_win = SCROLLED_WINDOW()
SET(scrolled_win, "width_request", 300 ,"height_request",200)
ADD_FIXED(fixed, scrolled_win)
ADD_FIXED(scrolled_win, textview)
'--- widget ,property , value or string
SET(cut_btn, "width_request", 100 ,"height_request",30)
SET(cut_btn, "label","gtk-cut","use_stock",TRUE,"always_show_image",TRUE)
SET(copy_btn, "width_request", 100 ,"height_request",30)
SET(copy_btn, "label","gtk-copy","use_stock",TRUE,"always_show_image",TRUE)
SET(paste_btn, "width_request", 100 ,"height_request",30)
SET(paste_btn, "label","gtk-paste","use_stock",TRUE,"always_show_image",TRUE)
'--- widget ,property value or string
SET(cut_btn, "tooltip-text", "you can add properties with SET")
'---placement inside fixed,widget,X,Y
PLACE (fixed, cut_btn, 310, 10)
PLACE (fixed, copy_btn, 310, 70)
PLACE (fixed, paste_btn, 310, 130)
SHOW(window)
DISPLAY
SVG IMAGE
compile with
** Example code: svg-image.bac**
Last edit: big-bass 2021-04-30
SVG BUTTON
compile with
** Example code: svg-button.bac**
Last edit: big-bass 2021-04-30
PROGRESSBAR
compile with
** Example code: progressbar.bac**
Last edit: big-bass 2021-06-16
COMBO1
compile with
** Example code: combo1.bac**
Last edit: big-bass 2021-04-30