; Module/File: Button_ColorButton.pb ; Function: Add ColorButton with color chooser - Linux gtk3.4+ ; Author: Omi ; Date: Oct. 01, 2015 ; 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 ;gtk3 CompilerIf Defined(GdkRGBA, #PB_Structure) CompilerElse Structure GdkRGBA red.d green.d blue.d alpha.d EndStructure CompilerEndIf ImportC "" g_signal_connect(*instance, detailed_signal.p-utf8, *c_handler, *data, destroy= 0, flags= 0) As "g_signal_connect_data" gtk_color_chooser_get_rgba(*chooser, *color.GdkRGBA) EndImport ; Object constants #MainWin= 0 #Text1 = 0 Global.i gEvent, gQuit Global *colorbutton1.GtkWidget Global colorGtk2.GdkColor; gtk2.4-3.4 Global colorGtk3.GdkRGBA; gtk3.4up ProcedureC Callback_ColorButtonChanged(*widget.GtkWidget, user_data) If *widget = *colorbutton1 gtk_color_button_get_color_(*widget, @colorGtk2) Debug "for gtk2 ..." Debug "red " + Str(colorGtk2\red) Debug "green " + Str(colorGtk2\green) Debug "blue " + Str(colorGtk2\blue) Debug "pix " + Str(colorGtk2\pixel) ;gtk3 Debug "for gtk3 ..." gtk_color_chooser_get_rgba(*widget, @colorGtk3) Debug "red " + StrD(colorGtk3\red * $FFFF) Debug "green " + StrD(colorGtk3\green * $FFFF) Debug "blue " + StrD(colorGtk3\blue * $FFFF) Debug "alpha " + StrD(colorGtk3\alpha) EndIf EndProcedure Procedure.i ColorButtonGadget(Gadget, x, y, w, h) Protected.i Container= ContainerGadget(Gadget, x, y, w, h, #PB_Container_BorderLess) Protected *cbutton= gtk_color_button_new_() If Gadget <> #PB_Any : Container= Gadget : EndIf gtk_container_add_(GadgetID(Container), *cbutton) gtk_widget_show_(*cbutton) CloseGadgetList() ProcedureReturn *cbutton EndProcedure If OpenWindow(#MainWin, 300, 200, 200, 200, "Add ColorButton", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) TextGadget(#Text1, 5, 10, 100, 22, "change color: ") *colorbutton1= ColorButtonGadget(#PB_Any, 105, 5, 50, 36) g_signal_connect(*colorbutton1, "color-set", @Callback_ColorButtonChanged(), 0) Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True EndSelect Until gQuit EndIf ; IDE Options = PureBasic 5.46 LTS Beta 1 (Linux - x86) ; CursorPosition = 31 ; Folding = - ; EnableUnicode ; EnableXP