Code: Select all
ImportC "-lgtk-3"
gtk_application_new(Id.p-utf8, Flags=0)
gtk_application_window_new(*application)
gtk_application_add_window(*application, *window)
gtk_application_set_app_menu(*application, *app_menu)
gtk_application_set_menubar(*application, *menubar)
gtk_builder_new()
gtk_builder_add_from_string(*builder, buffer.p-utf8, length=-1, *error=0)
gtk_builder_get_object(*builder, name.p-utf8)
gtk_widget_show_all(*Wigdet)
gtk_window_set_title(*Window, Title.p-utf8)
gtk_window_set_default_size(*Window, Width.l, Height.l)
gtk_window_set_position(*Window, Position.l)
gtk_window_set_decorated (*Window, flag.i)
gtk_window_set_titlebar (*Window, *bar)
gtk_header_bar_new ()
gtk_header_bar_set_title (*bar, Title.p-utf8)
gtk_header_bar_set_subtitle (*bar, SubTitle.p-utf8)
gtk_header_bar_set_show_close_button (*bar, flag.i)
gtk_header_bar_pack_start (*bar, *child)
gtk_header_bar_pack_end (*bar, *child)
gtk_button_new ();
gtk_button_new_with_label (*label.p-utf8);
EndImport
ImportC "-lgobject-2.0"
g_signal_connect_data(*Instance, Signal.p-utf8, *Handler, *Data=0, Flags.l=0)
EndImport
ImportC "-lgio-2.0"
g_action_map_add_action(*application, *action)
g_application_run(*application, argc=0, *argv=0)
g_application_quit(*application)
g_simple_action_new(name.p-utf8, parameter_type=0)
EndImport
Global *app, *win
ProcedureC PreferencesActivated()
Debug "PreferencesActivated"
EndProcedure
; quit_activated (GSimpleAction *action, GVariant *parameter, gpointer app)
ProcedureC QuitActivated() ;*action, *parameter, *application)
Debug "QuitActivated"
g_application_quit(*app)
EndProcedure
ProcedureC Startup(*appl)
Debug("Startup")
*win = gtk_application_window_new(*appl)
gtk_window_set_default_size(*win, 275, 275)
gtk_window_set_position(*win, #GTK_WIN_POS_CENTER)
*tbar = gtk_header_bar_new ()
gtk_header_bar_set_show_close_button(*tbar, #True)
gtk_header_bar_set_title (*tbar, "GTK3")
gtk_header_bar_set_subtitle (*tbar, "Test")
; make the headerbar the new titlebar
gtk_window_set_titlebar(*win, *tbar)
; add window to application
gtk_application_add_window(*appl, *win)
s.s = "<?xml version='1.0'?>" +
"<interface>" +
"<menu id='appmenu'>" +
" <section>" +
" <item>" +
" <attribute name='label' translatable='yes'>_Preferences</attribute>" +
" <attribute name='action'>app.preferences</attribute>" +
" </item>" +
" </section>" +
" <section>" +
" <item>" +
" <attribute name='label' translatable='yes'>_Quit</attribute>" +
" <attribute name='action'>app.quit</attribute>" +
" <attribute name='accel'><Primary>q</attribute>" +
" </item>" +
" </section>" +
"</menu>" +
"</interface>"
*builder = gtk_builder_new()
gtk_builder_add_from_string(*builder, s)
*appmenu = gtk_builder_get_object(*builder, "appmenu")
gtk_application_set_app_menu(*appl, *appmenu)
*menubar = gtk_builder_get_object(*builder, "menubar")
gtk_application_set_menubar(*appl, *menubar)
*actpref = g_simple_action_new("preferences")
g_signal_connect_data(*actpref, "activate", @PreferencesActivated())
g_action_map_add_action(*appl, *actpref)
*actquit = g_simple_action_new("quit")
g_signal_connect_data(*actquit, "activate", @QuitActivated())
g_action_map_add_action(*appl, *actquit)
EndProcedure
ProcedureC Activate(*appl)
Debug("Activate")
gtk_widget_show_all(*win)
EndProcedure
ProcedureC Shutdown(*appl)
Debug("Shutdown")
EndProcedure
Procedure Main()
*app = gtk_application_new("purebasic.gnome")
g_signal_connect_data(*app, "startup", @Startup())
g_signal_connect_data(*app, "activate", @Activate())
g_signal_connect_data(*app, "shutdown", @Shutdown())
g_application_run(*app)
g_object_unref_(*app)
EndProcedure
Main()
Maybe it's useful for someone.