From 09d9f2f6fc83af3bdc76717941eb13b77b2b1613 Mon Sep 17 00:00:00 2001 From: Jed Barber Date: Tue, 20 Mar 2018 01:41:49 +1100 Subject: Moved several Widgets from the Partially list to the Done list --- progress.txt | 15 +- src/c_fl_file_input.cpp | 19 +++ src/c_fl_file_input.h | 8 ++ src/c_fl_input.cpp | 66 +++++++++ src/c_fl_input.h | 20 +++ src/c_fl_slider.cpp | 15 +- src/c_fl_slider.h | 1 + src/c_fl_valuator.cpp | 32 +++-- src/c_fl_valuator.h | 2 + src/fltk-widgets-groups-color_choosers.adb | 7 + src/fltk-widgets-groups-color_choosers.ads | 3 + src/fltk-widgets-inputs-file.adb | 57 ++++++++ src/fltk-widgets-inputs-file.ads | 19 +++ src/fltk-widgets-inputs.adb | 221 +++++++++++++++++++++++++++++ src/fltk-widgets-inputs.ads | 73 +++++++++- src/fltk-widgets-valuators-sliders.adb | 24 ++++ src/fltk-widgets-valuators-sliders.ads | 7 + src/fltk-widgets-valuators.adb | 26 ++++ src/fltk-widgets-valuators.ads | 8 ++ 19 files changed, 602 insertions(+), 21 deletions(-) diff --git a/progress.txt b/progress.txt index 425431e..9325713 100644 --- a/progress.txt +++ b/progress.txt @@ -10,6 +10,11 @@ Overall estimate: ???% +Polished: + + + + Done: FLTK.Images @@ -46,6 +51,7 @@ FLTK.Widgets.Groups.Windows.Double FLTK.Widgets.Groups.Windows.Single FLTK.Widgets.Groups.Windows.Single.Menu FLTK.Widgets.Groups.Wizards +FLTK.Widgets.Inputs.File FLTK.Widgets.Inputs.Float FLTK.Widgets.Inputs.Integer FLTK.Widgets.Inputs.Multiline @@ -54,6 +60,7 @@ FLTK.Widgets.Inputs.Outputs.Multiline FLTK.Widgets.Inputs.Secret FLTK.Widgets.Menus.Menu_Bars FLTK.Widgets.Progress_Bars +FLTK.Widgets.Valuators FLTK.Widgets.Valuators.Adjusters FLTK.Widgets.Valuators.Counters FLTK.Widgets.Valuators.Counters.Simple @@ -61,6 +68,7 @@ FLTK.Widgets.Valuators.Dials FLTK.Widgets.Valuators.Dials.Fill FLTK.Widgets.Valuators.Dials.Line FLTK.Widgets.Valuators.Rollers +FLTK.Widgets.Valuators.Sliders FLTK.Widgets.Valuators.Sliders.Fill FLTK.Widgets.Valuators.Sliders.Hor_Fill FLTK.Widgets.Valuators.Sliders.Hor_Nice @@ -78,6 +86,7 @@ Partially Done: FLTK FLTK.Dialogs FLTK.Menu_Items +FLTK.Screen FLTK.Text_Buffers; FLTK.Widgets FLTK.Widgets.Buttons (70%) @@ -85,11 +94,8 @@ FLTK.Widgets.Groups FLTK.Widgets.Groups.Text_Displays (94%) FLTK.Widgets.Groups.Windows FLTK.Widgets.Inputs -FLTK.Widgets.Inputs.File FLTK.Widgets.Menus FLTK.Widgets.Menus.Menu_Buttons -FLTK.Widgets.Valuators -FLTK.Widgets.Valuators.Sliders @@ -112,6 +118,9 @@ FL_Table FL_Table_Row FL_Tree +- mark all methods as inline +- make sure all C++ reinterpret_cast for methods is to the Fl object, not the My object, because inheriting + diff --git a/src/c_fl_file_input.cpp b/src/c_fl_file_input.cpp index 03f941c..50b600f 100644 --- a/src/c_fl_file_input.cpp +++ b/src/c_fl_file_input.cpp @@ -68,3 +68,22 @@ void free_fl_file_input(FILE_INPUT i) { } + + +int fl_file_input_get_down_box(FILE_INPUT i) { + return reinterpret_cast(i)->down_box(); +} + +void fl_file_input_set_down_box(FILE_INPUT i, int t) { + reinterpret_cast(i)->down_box(static_cast(t)); +} + +unsigned int fl_file_input_get_errorcolor(FILE_INPUT i) { + return reinterpret_cast(i)->errorcolor(); +} + +void fl_file_input_set_errorcolor(FILE_INPUT i, unsigned int t) { + reinterpret_cast(i)->errorcolor(t); +} + + diff --git a/src/c_fl_file_input.h b/src/c_fl_file_input.h index d2a7b73..18d977e 100644 --- a/src/c_fl_file_input.h +++ b/src/c_fl_file_input.h @@ -23,5 +23,13 @@ extern "C" FILE_INPUT new_fl_file_input(int x, int y, int w, int h, char* label) extern "C" void free_fl_file_input(FILE_INPUT i); + + +extern "C" int fl_file_input_get_down_box(FILE_INPUT i); +extern "C" void fl_file_input_set_down_box(FILE_INPUT i, int t); +extern "C" unsigned int fl_file_input_get_errorcolor(FILE_INPUT i); +extern "C" void fl_file_input_set_errorcolor(FILE_INPUT i, unsigned int t); + + #endif diff --git a/src/c_fl_input.cpp b/src/c_fl_input.cpp index cb0b849..7e106e2 100644 --- a/src/c_fl_input.cpp +++ b/src/c_fl_input.cpp @@ -70,7 +70,73 @@ void free_fl_input(INPUT i) { +int fl_input_copy(INPUT i) { + return reinterpret_cast(i)->copy(1); +} + +int fl_input_cut(INPUT i) { + return reinterpret_cast(i)->cut(); +} + +int fl_input_cut2(INPUT i, int b) { + return reinterpret_cast(i)->cut(b); +} + +int fl_input_cut3(INPUT i, int a, int b) { + return reinterpret_cast(i)->cut(a,b); +} + +int fl_input_copy_cuts(INPUT i) { + return reinterpret_cast(i)->copy_cuts(); +} + + + + +int fl_input_get_readonly(INPUT i) { + return reinterpret_cast(i)->readonly(); +} + +void fl_input_set_readonly(INPUT i, int t) { + reinterpret_cast(i)->readonly(t); +} + + + + const char * fl_input_get_value(INPUT i) { return reinterpret_cast(i)->value(); } +void fl_input_set_value(INPUT i, char * s, int len) { + reinterpret_cast(i)->value(s,len); +} + + + + +unsigned int fl_input_get_textcolor(INPUT i) { + return reinterpret_cast(i)->textcolor(); +} + +void fl_input_set_textcolor(INPUT i, unsigned int t) { + reinterpret_cast(i)->textcolor(t); +} + +int fl_input_get_textfont(INPUT i) { + return reinterpret_cast(i)->textfont(); +} + +void fl_input_set_textfont(INPUT i, int t) { + reinterpret_cast(i)->textfont(t); +} + +int fl_input_get_textsize(INPUT i) { + return reinterpret_cast(i)->textsize(); +} + +void fl_input_set_textsize(INPUT i, int t) { + reinterpret_cast(i)->textsize(t); +} + + diff --git a/src/c_fl_input.h b/src/c_fl_input.h index cb9935a..4ffbea4 100644 --- a/src/c_fl_input.h +++ b/src/c_fl_input.h @@ -25,7 +25,27 @@ extern "C" void free_fl_input(INPUT i); +extern "C" int fl_input_copy(INPUT i); +extern "C" int fl_input_cut(INPUT i); +extern "C" int fl_input_cut2(INPUT i, int b); +extern "C" int fl_input_cut3(INPUT i, int a, int b); +extern "C" int fl_input_copy_cuts(INPUT i); + + +extern "C" int fl_input_get_readonly(INPUT i); +extern "C" void fl_input_set_readonly(INPUT i, int t); + + extern "C" const char * fl_input_get_value(INPUT i); +extern "C" void fl_input_set_value(INPUT i, char * s, int len); + + +extern "C" unsigned int fl_input_get_textcolor(INPUT i); +extern "C" void fl_input_set_textcolor(INPUT i, unsigned int t); +extern "C" int fl_input_get_textfont(INPUT i); +extern "C" void fl_input_set_textfont(INPUT i, int t); +extern "C" int fl_input_get_textsize(INPUT i); +extern "C" void fl_input_set_textsize(INPUT i, int t); #endif diff --git a/src/c_fl_slider.cpp b/src/c_fl_slider.cpp index 8fdf2da..fe30e2b 100644 --- a/src/c_fl_slider.cpp +++ b/src/c_fl_slider.cpp @@ -71,22 +71,27 @@ void free_fl_slider(SLIDER s) { void fl_slider_set_bounds(SLIDER s, double a, double b) { - reinterpret_cast(s)->bounds(a,b); + reinterpret_cast(s)->bounds(a,b); } int fl_slider_get_slider(SLIDER s) { - return reinterpret_cast(s)->slider(); + return reinterpret_cast(s)->slider(); } void fl_slider_set_slider(SLIDER s, int t) { - reinterpret_cast(s)->slider(static_cast(t)); + reinterpret_cast(s)->slider(static_cast(t)); } float fl_slider_get_slider_size(SLIDER s) { - return reinterpret_cast(s)->slider_size(); + return reinterpret_cast(s)->slider_size(); } void fl_slider_set_slider_size(SLIDER s, float t) { - reinterpret_cast(s)->slider_size(t); + reinterpret_cast(s)->slider_size(t); } +int fl_slider_scrollvalue(SLIDER s, int p, int z, int f, int t) { + return reinterpret_cast(s)->scrollvalue(p,z,f,t); +} + + diff --git a/src/c_fl_slider.h b/src/c_fl_slider.h index b3955f5..c06f209 100644 --- a/src/c_fl_slider.h +++ b/src/c_fl_slider.h @@ -30,6 +30,7 @@ extern "C" int fl_slider_get_slider(SLIDER s); extern "C" void fl_slider_set_slider(SLIDER s, int t); extern "C" float fl_slider_get_slider_size(SLIDER s); extern "C" void fl_slider_set_slider_size(SLIDER s, float t); +extern "C" int fl_slider_scrollvalue(SLIDER s, int p, int z, int f, int t); #endif diff --git a/src/c_fl_valuator.cpp b/src/c_fl_valuator.cpp index 523379b..37f8ad8 100644 --- a/src/c_fl_valuator.cpp +++ b/src/c_fl_valuator.cpp @@ -62,53 +62,61 @@ void free_fl_valuator(VALUATOR v) { double fl_valuator_clamp(VALUATOR v, double a) { - return reinterpret_cast(v)->clamp(a); + return reinterpret_cast(v)->clamp(a); } double fl_valuator_round(VALUATOR v, double a) { - return reinterpret_cast(v)->round(a); + return reinterpret_cast(v)->round(a); } double fl_valuator_increment(VALUATOR v, double a, int s) { - return reinterpret_cast(v)->increment(a,s); + return reinterpret_cast(v)->increment(a,s); } double fl_valuator_get_minimum(VALUATOR v) { - return reinterpret_cast(v)->minimum(); + return reinterpret_cast(v)->minimum(); } void fl_valuator_set_minimum(VALUATOR v, double t) { - reinterpret_cast(v)->minimum(t); + reinterpret_cast(v)->minimum(t); } double fl_valuator_get_maximum(VALUATOR v) { - return reinterpret_cast(v)->maximum(); + return reinterpret_cast(v)->maximum(); } void fl_valuator_set_maximum(VALUATOR v, double t) { - reinterpret_cast(v)->maximum(t); + reinterpret_cast(v)->maximum(t); +} + +double fl_valuator_get_step(VALUATOR v) { + return reinterpret_cast(v)->step(); +} + +void fl_valuator_set_step(VALUATOR v, double t) { + reinterpret_cast(v)->step(t); } double fl_valuator_get_value(VALUATOR v) { - return reinterpret_cast(v)->value(); + return reinterpret_cast(v)->value(); } void fl_valuator_set_value(VALUATOR v, double t) { - reinterpret_cast(v)->value(t); + reinterpret_cast(v)->value(t); } void fl_valuator_bounds(VALUATOR v, double a, double b) { - reinterpret_cast(v)->bounds(a,b); + reinterpret_cast(v)->bounds(a,b); } void fl_valuator_precision(VALUATOR v, int s) { - reinterpret_cast(v)->precision(s); + reinterpret_cast(v)->precision(s); } void fl_valuator_range(VALUATOR v, double a, double b) { - reinterpret_cast(v)->range(a,b); + reinterpret_cast(v)->range(a,b); } diff --git a/src/c_fl_valuator.h b/src/c_fl_valuator.h index 867e030..4a6bbe9 100644 --- a/src/c_fl_valuator.h +++ b/src/c_fl_valuator.h @@ -35,6 +35,8 @@ extern "C" double fl_valuator_get_minimum(VALUATOR v); extern "C" void fl_valuator_set_minimum(VALUATOR v, double t); extern "C" double fl_valuator_get_maximum(VALUATOR v); extern "C" void fl_valuator_set_maximum(VALUATOR v, double t); +extern "C" double fl_valuator_get_step(VALUATOR v); +extern "C" void fl_valuator_set_step(VALUATOR v, double t); extern "C" double fl_valuator_get_value(VALUATOR v); extern "C" void fl_valuator_set_value(VALUATOR v, double t); extern "C" void fl_valuator_bounds(VALUATOR v, double a, double b); diff --git a/src/fltk-widgets-groups-color_choosers.adb b/src/fltk-widgets-groups-color_choosers.adb index c47533a..dabcf00 100644 --- a/src/fltk-widgets-groups-color_choosers.adb +++ b/src/fltk-widgets-groups-color_choosers.adb @@ -240,6 +240,13 @@ package body FLTK.Widgets.Groups.Color_Choosers is end Color_Was_Changed; + procedure Clear_Changed + (This : in out Color_Chooser) is + begin + This.Was_Changed := False; + end Clear_Changed; + + function Get_Mode diff --git a/src/fltk-widgets-groups-color_choosers.ads b/src/fltk-widgets-groups-color_choosers.ads index 3cf4386..3af3fa4 100644 --- a/src/fltk-widgets-groups-color_choosers.ads +++ b/src/fltk-widgets-groups-color_choosers.ads @@ -64,6 +64,9 @@ package FLTK.Widgets.Groups.Color_Choosers is (This : in Color_Chooser) return Boolean; + procedure Clear_Changed + (This : in out Color_Chooser); + diff --git a/src/fltk-widgets-inputs-file.adb b/src/fltk-widgets-inputs-file.adb index 4f7ffdf..cdbeca5 100644 --- a/src/fltk-widgets-inputs-file.adb +++ b/src/fltk-widgets-inputs-file.adb @@ -37,6 +37,29 @@ package body FLTK.Widgets.Inputs.File is + function fl_file_input_get_down_box + (F : in System.Address) + return Interfaces.C.int; + pragma Import (C, fl_file_input_get_down_box, "fl_file_input_get_down_box"); + + procedure fl_file_input_set_down_box + (F : in System.Address; + T : in Interfaces.C.int); + pragma Import (C, fl_file_input_set_down_box, "fl_file_input_set_down_box"); + + function fl_file_input_get_errorcolor + (F : in System.Address) + return Interfaces.C.unsigned; + pragma Import (C, fl_file_input_get_errorcolor, "fl_file_input_get_errorcolor"); + + procedure fl_file_input_set_errorcolor + (F : in System.Address; + T : in Interfaces.C.unsigned); + pragma Import (C, fl_file_input_set_errorcolor, "fl_file_input_set_errorcolor"); + + + + procedure fl_file_input_draw (W : in System.Address); pragma Import (C, fl_file_input_draw, "fl_file_input_draw"); @@ -92,6 +115,40 @@ package body FLTK.Widgets.Inputs.File is + function Get_Down_Box + (This : in File_Input) + return Box_Kind is + begin + return Box_Kind'Val (fl_file_input_get_down_box (This.Void_Ptr)); + end Get_Down_Box; + + + procedure Set_Down_Box + (This : in out File_Input; + To : in Box_Kind) is + begin + fl_file_input_set_down_box (This.Void_Ptr, Box_Kind'Pos (To)); + end Set_Down_Box; + + + function Get_Error_Color + (This : in File_Input) + return Color is + begin + return Color (fl_file_input_get_errorcolor (This.Void_Ptr)); + end Get_Error_Color; + + + procedure Set_Error_Color + (This : in out File_Input; + To : in Color) is + begin + fl_file_input_set_errorcolor (This.Void_Ptr, Interfaces.C.unsigned (To)); + end Set_Error_Color; + + + + procedure Draw (This : in out File_Input) is begin diff --git a/src/fltk-widgets-inputs-file.ads b/src/fltk-widgets-inputs-file.ads index e3bdb45..3ef3561 100644 --- a/src/fltk-widgets-inputs-file.ads +++ b/src/fltk-widgets-inputs-file.ads @@ -20,6 +20,25 @@ package FLTK.Widgets.Inputs.File is + function Get_Down_Box + (This : in File_Input) + return Box_Kind; + + procedure Set_Down_Box + (This : in out File_Input; + To : in Box_Kind); + + function Get_Error_Color + (This : in File_Input) + return Color; + + procedure Set_Error_Color + (This : in out File_Input; + To : in Color); + + + + procedure Draw (This : in out File_Input); diff --git a/src/fltk-widgets-inputs.adb b/src/fltk-widgets-inputs.adb index b5134ae..7e57a3e 100644 --- a/src/fltk-widgets-inputs.adb +++ b/src/fltk-widgets-inputs.adb @@ -7,6 +7,7 @@ with use type + Interfaces.C.int, System.Address; @@ -37,6 +38,91 @@ package body FLTK.Widgets.Inputs is + function fl_input_copy + (I : in System.Address) + return Interfaces.C.int; + pragma Import (C, fl_input_copy, "fl_input_copy"); + + function fl_input_cut + (I : in System.Address) + return Interfaces.C.int; + pragma Import (C, fl_input_cut, "fl_input_cut"); + + function fl_input_cut2 + (I : in System.Address; + B : in Interfaces.C.int) + return Interfaces.C.int; + pragma Import (C, fl_input_cut2, "fl_input_cut2"); + + function fl_input_cut3 + (I : in System.Address; + A, B : in Interfaces.C.int) + return Interfaces.C.int; + pragma Import (C, fl_input_cut3, "fl_input_cut3"); + + function fl_input_copy_cuts + (I : in System.Address) + return Interfaces.C.int; + pragma Import (C, fl_input_copy_cuts, "fl_input_copy_cuts"); + + + + + function fl_input_get_readonly + (I : in System.Address) + return Interfaces.C.int; + pragma Import (C, fl_input_get_readonly, "fl_input_get_readonly"); + + procedure fl_input_set_readonly + (I : in System.Address; + T : in Interfaces.C.int); + pragma Import (C, fl_input_set_readonly, "fl_input_set_readonly"); + + + + + procedure fl_input_set_value + (I : in System.Address; + T : in Interfaces.C.char_array; + L : in Interfaces.C.int); + pragma Import (C, fl_input_set_value, "fl_input_set_value"); + + + + + function fl_input_get_textcolor + (I : in System.Address) + return Interfaces.C.unsigned; + pragma Import (C, fl_input_get_textcolor, "fl_input_get_textcolor"); + + procedure fl_input_set_textcolor + (I : in System.Address; + T : in Interfaces.C.unsigned); + pragma Import (C, fl_input_set_textcolor, "fl_input_set_textcolor"); + + function fl_input_get_textfont + (I : in System.Address) + return Interfaces.C.int; + pragma Import (C, fl_input_get_textfont, "fl_input_get_textfont"); + + procedure fl_input_set_textfont + (I : in System.Address; + T : in Interfaces.C.int); + pragma Import (C, fl_input_set_textfont, "fl_input_set_textfont"); + + function fl_input_get_textsize + (I : in System.Address) + return Interfaces.C.int; + pragma Import (C, fl_input_get_textsize, "fl_input_get_textsize"); + + procedure fl_input_set_textsize + (I : in System.Address; + T : in Interfaces.C.int); + pragma Import (C, fl_input_set_textsize, "fl_input_set_textsize"); + + + + procedure fl_input_draw (W : in System.Address); pragma Import (C, fl_input_draw, "fl_input_draw"); @@ -94,6 +180,83 @@ package body FLTK.Widgets.Inputs is + procedure Copy + (This : in out Input) is + begin + This.Was_Changed := fl_input_copy (This.Void_Ptr) /= 0; + end Copy; + + + procedure Cut + (This : in out Input) is + begin + This.Was_Changed := fl_input_cut (This.Void_Ptr) /= 0; + end Cut; + + + procedure Cut + (This : in out Input; + Num_Bytes : in Integer) is + begin + This.Was_Changed := fl_input_cut2 + (This.Void_Ptr, + Interfaces.C.int (Num_Bytes)) /= 0; + end Cut; + + + procedure Cut + (This : in out Input; + Start, Finish : in Integer) is + begin + This.Was_Changed := fl_input_cut3 + (This.Void_Ptr, + Interfaces.C.int (Start), + Interfaces.C.int (Finish)) /= 0; + end Cut; + + + procedure Copy_Cuts + (This : in out Input) is + begin + This.Was_Changed := fl_input_copy_cuts (This.Void_Ptr) /= 0; + end Copy_Cuts; + + + + + function Has_Changed + (This : in Input) + return Boolean is + begin + return This.Was_Changed; + end Has_Changed; + + + procedure Clear_Changed + (This : in out Input) is + begin + This.Was_Changed := False; + end Clear_Changed; + + + function Is_Readonly + (This : in Input) + return Boolean is + begin + return fl_input_get_readonly (This.Void_Ptr) /= 0; + end Is_Readonly; + + + procedure Set_Readonly + (This : in out Input; + To : in Boolean) is + begin + fl_input_set_readonly (This.Void_Ptr, Boolean'Pos (To)); + end Set_Readonly; + + + + function Get_Value (This : in Input) return String is @@ -102,6 +265,64 @@ package body FLTK.Widgets.Inputs is end Get_Value; + procedure Set_Value + (This : in out Input; + To : in String) is + begin + fl_input_set_value (This.Void_Ptr, Interfaces.C.To_C (To), To'Length); + end Set_Value; + + + + + function Get_Text_Color + (This : in Input) + return Color is + begin + return Color (fl_input_get_textcolor (This.Void_Ptr)); + end Get_Text_Color; + + + procedure Set_Text_Color + (This : in out Input; + To : in Color) is + begin + fl_input_set_textcolor (This.Void_Ptr, Interfaces.C.unsigned (To)); + end Set_Text_Color; + + + function Get_Text_Font + (This : in Input) + return Font_Kind is + begin + return Font_Kind'Val (fl_input_get_textfont (This.Void_Ptr)); + end Get_Text_Font; + + + procedure Set_Text_Font + (This : in out Input; + To : in Font_Kind) is + begin + fl_input_set_textfont (This.Void_Ptr, Font_Kind'Pos (To)); + end Set_Text_Font; + + + function Get_Text_Size + (This : in Input) + return Font_Size is + begin + return Font_Size (fl_input_get_textsize (This.Void_Ptr)); + end Get_Text_Size; + + + procedure Set_Text_Size + (This : in out Input; + To : in Font_Size) is + begin + fl_input_set_textsize (This.Void_Ptr, Interfaces.C.int (To)); + end Set_Text_Size; + + procedure Draw diff --git a/src/fltk-widgets-inputs.ads b/src/fltk-widgets-inputs.ads index 2531cfa..fc7b980 100644 --- a/src/fltk-widgets-inputs.ads +++ b/src/fltk-widgets-inputs.ads @@ -29,10 +29,79 @@ package FLTK.Widgets.Inputs is + procedure Copy + (This : in out Input); + + procedure Cut + (This : in out Input); + + procedure Cut + (This : in out Input; + Num_Bytes : in Integer); + + procedure Cut + (This : in out Input; + Start, Finish : in Integer); + + procedure Copy_Cuts + (This : in out Input); + + + + + function Has_Changed + (This : in Input) + return Boolean; + + procedure Clear_Changed + (This : in out Input); + + function Is_Readonly + (This : in Input) + return Boolean; + + procedure Set_Readonly + (This : in out Input; + To : in Boolean); + + + + function Get_Value (This : in Input) return String; + procedure Set_Value + (This : in out Input; + To : in String); + + + + + function Get_Text_Color + (This : in Input) + return Color; + + procedure Set_Text_Color + (This : in out Input; + To : in Color); + + function Get_Text_Font + (This : in Input) + return Font_Kind; + + procedure Set_Text_Font + (This : in out Input; + To : in Font_Kind); + + function Get_Text_Size + (This : in Input) + return Font_Size; + + procedure Set_Text_Size + (This : in out Input; + To : in Font_Size); + @@ -48,7 +117,9 @@ package FLTK.Widgets.Inputs is private - type Input is new Widget with null record; + type Input is new Widget with record + Was_Changed : Boolean := False; + end record; overriding procedure Finalize (This : in out Input); diff --git a/src/fltk-widgets-valuators-sliders.adb b/src/fltk-widgets-valuators-sliders.adb index 1a8dbce..752a5aa 100644 --- a/src/fltk-widgets-valuators-sliders.adb +++ b/src/fltk-widgets-valuators-sliders.adb @@ -62,6 +62,12 @@ package body FLTK.Widgets.Valuators.Sliders is T : in Interfaces.C.C_float); pragma Import (C, fl_slider_set_slider_size, "fl_slider_set_slider_size"); + function fl_slider_scrollvalue + (S : in System.Address; + P, Z, F, T : in Interfaces.C.int) + return Interfaces.C.int; + pragma Import (C, fl_slider_scrollvalue, "fl_slider_scrollvalue"); + @@ -163,6 +169,24 @@ package body FLTK.Widgets.Valuators.Sliders is end Set_Slide_Size; + procedure Set_Scrollvalue + (This : in out Slider; + Pos_First_Line : in Natural; + Lines_In_Window : in Natural; + First_Line_Num : in Natural; + Total_Lines : in Natural) + is + Ignore_Me : Interfaces.C.int; + begin + Ignore_Me := fl_slider_scrollvalue + (This.Void_Ptr, + Interfaces.C.int (Pos_First_Line), + Interfaces.C.int (Lines_In_Window), + Interfaces.C.int (First_Line_Num), + Interfaces.C.int (Total_Lines)); + end Set_Scrollvalue; + + procedure Draw diff --git a/src/fltk-widgets-valuators-sliders.ads b/src/fltk-widgets-valuators-sliders.ads index 48be83d..fda69d2 100644 --- a/src/fltk-widgets-valuators-sliders.ads +++ b/src/fltk-widgets-valuators-sliders.ads @@ -40,6 +40,13 @@ package FLTK.Widgets.Valuators.Sliders is (This : in out Slider; To : in Float); + procedure Set_Scrollvalue + (This : in out Slider; + Pos_First_Line : in Natural; + Lines_In_Window : in Natural; + First_Line_Num : in Natural; + Total_Lines : in Natural); + diff --git a/src/fltk-widgets-valuators.adb b/src/fltk-widgets-valuators.adb index 47c6f06..5cb821d 100644 --- a/src/fltk-widgets-valuators.adb +++ b/src/fltk-widgets-valuators.adb @@ -79,6 +79,16 @@ package body FLTK.Widgets.Valuators is D : in Interfaces.C.double); pragma Import (C, fl_valuator_set_maximum, "fl_valuator_set_maximum"); + function fl_valuator_get_step + (V : in System.Address) + return Interfaces.C.double; + pragma Import (C, fl_valuator_get_step, "fl_valuator_get_step"); + + procedure fl_valuator_set_step + (V : in System.Address; + T : in Interfaces.C.double); + pragma Import (C, fl_valuator_set_step, "fl_valuator_set_step"); + function fl_valuator_get_value (V : in System.Address) return Interfaces.C.double; @@ -223,6 +233,22 @@ package body FLTK.Widgets.Valuators is end Set_Maximum; + function Get_Step + (This : in Valuator) + return Long_Float is + begin + return Long_Float (fl_valuator_get_step (This.Void_Ptr)); + end Get_Step; + + + procedure Set_Step + (This : in out Valuator; + To : in Long_Float) is + begin + fl_valuator_set_step (This.Void_Ptr, Interfaces.C.double (To)); + end Set_Step; + + function Get_Value (This : in Valuator) return Long_Float is diff --git a/src/fltk-widgets-valuators.ads b/src/fltk-widgets-valuators.ads index dafcfc3..da22f79 100644 --- a/src/fltk-widgets-valuators.ads +++ b/src/fltk-widgets-valuators.ads @@ -55,6 +55,14 @@ package FLTK.Widgets.Valuators is (This : in out Valuator; To : in Long_Float); + function Get_Step + (This : in Valuator) + return Long_Float; + + procedure Set_Step + (This : in out Valuator; + To : in Long_Float); + function Get_Value (This : in Valuator) return Long_Float; -- cgit