; Module/File: Trackbar_AllowFPValues.pb ; Function: Allow float values in contrast to the PB version - Linux gtk2/gtk3 ; Author: Omi ; Date: Oct. 14, 2014 ; Version: 0.4 updt. gtk3 ; Target Compiler: PureBasic 5.22/5.31/5.40/5.5/5.6 ; Target OS: Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni ;-------------------------------------------------------------- EnableExplicit ImportC "" gtk_scale_clear_marks(*scale.GtkScale) gtk_scale_add_mark(*scale.GtkScale, value.d, position.i, *markup) gtk_range_get_value.d(*range.GtkRange) gtk_adjustment_set_lower(*adjustment.GtkAdjustment, lower.d) gtk_adjustment_set_value(*adjustment.GtkAdjustment, value.d) gtk_adjustment_set_upper(*adjustment.GtkAdjustment, upper.d) gtk_adjustment_set_step_increment(*adjustment.GtkAdjustment, step_increment.d) g_signal_connect(*instance, detailed_signal.p-utf8, *c_handler, *data, destroy= 0, flags= 0) As "g_signal_connect_data" EndImport ; Object constants #Win_Main = 0 #TBar1 = 0 #SPBret = 1 #SGtkRet = 2 Global.i I, gEvent, gQuit, gCounter Global *gTrackBar.GtkWidget, *gAdjustment.GtkAdjustment ProcedureC GetScaleValue(*widget, user_data) SetGadgetText(#SGtkRet, StrD(gtk_range_get_value(*widget))) EndProcedure If OpenWindow(#Win_Main, 300, 200, 300, 200, "Trackbar w. 'double'-type-value", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) TextGadget(#PB_Any, 5, 20, 90, 20, "'double'-steps") TextGadget(#PB_Any, 5, 80, 140, 20, "PB-returnvalue :") StringGadget(#SPBret, 150, 75, 50, 25, "", #PB_String_ReadOnly) TextGadget(#PB_Any, 5, 110, 140, 20, "Gtk-returnvalue:") StringGadget(#SGtkRet, 150, 105, 50, 25, "", #PB_String_ReadOnly) TrackBarGadget(#TBar1, 110, 5, 150, 45, 0, 2); no 'double'-parameters possible => need double instead PB-integer) ; ----- additional trackbar settings ... *gTrackBar= GadgetID(#TBar1) gtk_scale_set_draw_value_(*gTrackBar, #True); display ON *gAdjustment= gtk_range_get_adjustment_(*gTrackBar); get adjustment gtk_adjustment_set_lower(*gAdjustment, 0.5); set real lower-limit to 0.5 gtk_adjustment_set_upper(*gAdjustment, 1.5); set real upper-limit to 1.5 gtk_adjustment_set_value(*gAdjustment, 1.0); preset value gtk_adjustment_set_step_increment(*gAdjustment, 0.1); set step to 0.1 gtk_scale_clear_marks(*gTrackBar); no marks => wrong cause pb-int-parameter For I= 5 To 15 gtk_scale_add_mark(*gTrackBar, I/10, #GTK_POS_TOP, #Null) Next I g_signal_connect(*gTrackBar, "value-changed", @GetScaleValue(), #TBar1) Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True Case #PB_Event_Gadget If EventGadget()= #TBar1 SetGadgetText(#SPBret, StrD(GetGadgetState(#TBar1))); no 'double'-type return possible EndIf EndSelect Until gQuit EndIf ; IDE Options = PureBasic 5.44 LTS (Linux - x86) ; CursorPosition = 19 ; Folding = - ; EnableUnicode ; EnableXP ; CurrentDirectory = /home/charly-xubuntu/Programming/PureBasic/purebasic/