; Module/File: Trackbar_AddFormatValueDisplayWithPos.pb ; Function: Adds formatted value display with position - Linux ; Author: Omi ; Date: Apr 6, 2018 ; Version: 0.1 ; Target Compiler: PureBasic 5.22/5.31/5.4/5.6/5.7 ; 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" g_strdup_printf(format.p-utf8, value1.l, value2.d) As "g_strdup_printf" ;for double values and marks ... gtk_adjustment_set_value(*adjustment.GtkAdjustment, value.d) gtk_adjustment_set_step_increment(*adjustment.GtkAdjustment, step_increment.d) gtk_scale_clear_marks(*scale.GtkScale) gtk_scale_add_mark(*scale.GtkScale, value.d, position.i, *markup) EndImport ; Window Variablen #Win_Main= 0 #TBar1 = 0 #TBar2 = 1 Global.i gEvent, gQuit Global.i I Global *gAdjustment.GtkAdjustment ProcedureC Callback_TBarFormatValue(*scale.GtkScale, value.d, user_data) Protected.s FString If user_data = #TBar1 FString= "[ %0.*f ]"; see sprintf, i.e. https://www.tutorialspoint.com/c_standard_library/c_function_sprintf.htm ElseIf user_data = #TBar2 FString= "factor: %0.*e" EndIf ProcedureReturn g_strdup_printf(FString, gtk_scale_get_digits_(*scale), value) EndProcedure If OpenWindow(#Win_Main, 300, 200, 400, 150, "Trackbar w. formatted value & pos", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) TrackBarGadget(#TBar1, 5, 5, 300, 40, 1, 10, #PB_TrackBar_Ticks) gtk_scale_set_value_pos_ (GadgetID(#TBar1), #GTK_POS_LEFT); value-display - others positions: #GTK_POS_RIGHT, #GTK_POS_TOP, #GTK_POS_BOTTOM gtk_scale_set_draw_value_(GadgetID(#TBar1), #True); add value-display gtk_scale_set_digits_ (GadgetID(#TBar1), 1); 1 digit TrackBarGadget(#TBar2, 5, 70, 300, 40, 0, 1, #PB_TrackBar_Ticks) gtk_scale_set_value_pos_ (GadgetID(#TBar2), #GTK_POS_RIGHT); value-display - others positions: #GTK_POS_RIGHT, #GTK_POS_TOP, #GTK_POS_BOTTOM gtk_scale_set_draw_value_(GadgetID(#TBar2), #True); add value-display gtk_scale_set_digits_ (GadgetID(#TBar2), 1); 1 digit gtk_scale_clear_marks (GadgetID(#TBar2)); clear marks For I= 0 To 10; add new 11 marks at 0.1 steps gtk_scale_add_mark (GadgetID(#TBar2), I/10, #GTK_POS_BOTTOM, #Null) Next I *gAdjustment= gtk_range_get_adjustment_(GadgetID(#TBar2)); get adjustment gtk_adjustment_set_value(*gAdjustment, 1.0); preset value gtk_adjustment_set_step_increment(*gAdjustment, 0.1); step 0.1 = 10 steps g_signal_connect(GadgetID(#TBar1), "format-value", @Callback_TBarFormatValue(), #TBar1) g_signal_connect(GadgetID(#TBar2), "format-value", @Callback_TBarFormatValue(), #TBar2) Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True EndSelect Until gQuit EndIf ; IDE Options = PureBasic 5.70 LTS beta 2 (Linux - x64) ; CursorPosition = 5 ; Folding = - ; EnableXP ; EnableUnicode