; Module/File: Gadget_Expander&MoreWidgets.pb ; Function: Add expander with checkbutton, entry & label in GtkFixed- Linux ; Author: Omi ; Date: Nov. 16, 2014 ; Version: 0.1 ; Target Compiler: PureBasic 5.22/5.31/5.40 ; Target OS: Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni ;-------------------------------------------------------------- EnableExplicit ImportC "" g_signal_connect(*instance, detailed_signal.p-utf8, *c_handler, *data, destroy= 0, flags= 0) As "g_signal_connect_data" gtk_expander_new(label.p-utf8) gtk_label_new(label.p-utf8) gtk_check_button_new_with_label(label.p-utf8) EndImport ; Object constants #MainWin= 0 #Txt1 = 0 #Txt2 = 1 #WinX = 300 #WinY = 200 #WinW = 300 #WinH = 200 Global.i gEvent, gQuit Global *expander1 ProcedureC Callback_ExpanderButtonChanged(*widget.GtkWidget, user_data) Debug *widget Debug "checkbox-state: " + Str(gtk_toggle_button_get_active_(*widget)) EndProcedure ProcedureC Callback_ExpanderEntryChanged(*widget.GtkWidget, user_data) Debug *widget Debug "Entry-text: " + PeekS(gtk_entry_get_text_(*widget), -1 ,#PB_UTF8) EndProcedure ProcedureC Callback_ExpanderExpanded(*widget.GtkWidget, user_data) Debug *widget Debug "expander-state: " + Str(gtk_expander_get_expanded_(*widget)) EndProcedure Procedure.i ExpanderGadget(Gadget, x, y, w, h, text.s) Protected.i Container= ContainerGadget(Gadget, x, y, w, h, #PB_Container_BorderLess) Protected *fixed.GtkFixed Protected *expander.GtkWidget= gtk_expander_new(text) If Gadget <> #PB_Any : Container= Gadget : EndIf Protected *vbox= gtk_vbox_new_(#False, 0) gtk_container_add_(GadgetID(Container), *vbox) gtk_box_pack_start_(*vbox, *expander, #False, #False, 0) ;a FixedBox inside (= ContainerGadget) *fixed= gtk_fixed_new_() ;some widgets ... Protected cbutton1= gtk_check_button_new_with_label("ON or OFF?") gtk_fixed_put_(*fixed, cbutton1, 20, 5) Protected edit1= gtk_entry_new_() gtk_fixed_put_(*fixed, edit1, 20, 28) Protected label= gtk_label_new("Widgets can be shown Or hidden here," + #LF$ + "label with more lines of course.") gtk_fixed_put_(*fixed, label, 20, 55) ;add the FixedBox to expander gtk_container_add_(*expander, *fixed) ;signals needed? g_signal_connect(*expander, "notify::expanded", @Callback_ExpanderExpanded(), 0) g_signal_connect(cbutton1, "toggled", @Callback_ExpanderButtonChanged(), 0) g_signal_connect(edit1, "changed", @Callback_ExpanderEntryChanged(), 0) gtk_widget_show_all_(GadgetID(Container)) CloseGadgetList() ProcedureReturn *expander EndProcedure If OpenWindow(#MainWin, #WinX, #WinY, #WinW, #WinH, "Expander with more widgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) *expander1= ExpanderGadget(#PB_Any, 5, 80, 290, 115, "gtk-expander") Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True EndSelect Until gQuit EndIf ; IDE Options = PureBasic 5.44 LTS (Linux - x86) ; CursorPosition = 12 ; Folding = - ; EnableUnicode ; EnableXP