summaryrefslogtreecommitdiff
path: root/src/fltk-file_choosers.ads
diff options
context:
space:
mode:
Diffstat (limited to 'src/fltk-file_choosers.ads')
-rw-r--r--src/fltk-file_choosers.ads401
1 files changed, 401 insertions, 0 deletions
diff --git a/src/fltk-file_choosers.ads b/src/fltk-file_choosers.ads
new file mode 100644
index 0000000..b350ddc
--- /dev/null
+++ b/src/fltk-file_choosers.ads
@@ -0,0 +1,401 @@
+
+
+-- Programmed by Jedidiah Barber
+-- Released into the public domain
+
+
+with
+
+ FLTK.Widgets.Buttons.Light.Check;
+
+private with
+
+ Ada.Finalization,
+ Interfaces.C.Strings;
+
+
+package FLTK.File_Choosers is
+
+
+ type File_Chooser is new Wrapper with private;
+
+ type File_Chooser_Reference (Data : not null access File_Chooser'Class) is
+ limited null record with Implicit_Dereference => Data;
+
+ type Chooser_Kind is (Single, Multi, Create, Directory);
+
+ type Chooser_Callback is access procedure
+ (Item : in out File_Chooser'Class);
+
+ type Icon_Size is mod 256;
+
+
+
+
+ package Forge is
+
+ function Create
+ (Title : in String;
+ Pattern : in String;
+ Pathname : in String;
+ Kind : in Chooser_Kind := Single)
+ return File_Chooser;
+
+ end Forge;
+
+
+
+
+ function New_Button
+ (This : in out File_Chooser)
+ return FLTK.Widgets.Buttons.Button_Reference;
+
+ function Preview_Button
+ (This : in out File_Chooser)
+ return FLTK.Widgets.Buttons.Light.Check.Check_Button_Reference;
+
+ function Show_Hidden_Button
+ (This : in out File_Chooser)
+ return FLTK.Widgets.Buttons.Light.Check.Check_Button_Reference;
+
+
+
+
+ function Get_Add_Favorites_Label
+ return String;
+
+ procedure Set_Add_Favorites_Label
+ (Value : in String);
+
+ function Get_All_Files_Label
+ return String;
+
+ procedure Set_All_Files_Label
+ (Value : in String);
+
+ function Get_Custom_Filter_Label
+ return String;
+
+ procedure Set_Custom_Filter_Label
+ (Value : in String);
+
+ function Get_Existing_File_Label
+ return String;
+
+ procedure Set_Existing_File_Label
+ (Value : in String);
+
+ function Get_Favorites_Label
+ return String;
+
+ procedure Set_Favorites_Label
+ (Value : in String);
+
+ function Get_Filename_Label
+ return String;
+
+ procedure Set_Filename_Label
+ (Value : in String);
+
+ function Get_Filesystems_Label
+ return String;
+
+ procedure Set_Filesystems_Label
+ (Value : in String);
+
+ function Get_Hidden_Label
+ return String;
+
+ procedure Set_Hidden_Label
+ (Value : in String);
+
+ function Get_Manage_Favorites_Label
+ return String;
+
+ procedure Set_Manage_Favorites_Label
+ (Value : in String);
+
+ function Get_New_Directory_Label
+ return String;
+
+ procedure Set_New_Directory_Label
+ (Value : in String);
+
+ function Get_New_Directory_Tooltip
+ return String;
+
+ procedure Set_New_Directory_Tooltip
+ (Value : in String);
+
+ function Get_Preview_Label
+ return String;
+
+ procedure Set_Preview_Label
+ (Value : in String);
+
+ function Get_Save_Label
+ return String;
+
+ procedure Set_Save_Label
+ (Value : in String);
+
+ function Get_Show_Label
+ return String;
+
+ procedure Set_Show_Label
+ (Value : in String);
+
+
+
+
+ procedure Add_Extra
+ (This : in out File_Chooser;
+ Item : in out Widgets.Widget'Class);
+
+ procedure Remove_Extra
+ (This : in out File_Chooser);
+
+ function Eject_Extra
+ (This : in out File_Chooser;
+ Item : in out Widgets.Widget'Class)
+ return access Widgets.Widget'Class;
+
+ procedure Set_Callback
+ (This : in out File_Chooser;
+ Func : in Chooser_Callback);
+
+
+
+
+ function Get_Background_Color
+ (This : in File_Chooser)
+ return Color;
+
+ procedure Set_Background_Color
+ (This : in out File_Chooser;
+ Value : in Color);
+
+ function Get_Icon_Size
+ (This : in File_Chooser)
+ return Icon_Size;
+
+ procedure Set_Icon_Size
+ (This : in out File_Chooser;
+ Value : in Icon_Size);
+
+ function Get_Label
+ (This : in File_Chooser)
+ return String;
+
+ procedure Set_Label
+ (This : in out File_Chooser;
+ Text : in String);
+
+ function Get_OK_Label
+ (This : in File_Chooser)
+ return String;
+
+ procedure Set_OK_Label
+ (This : in out File_Chooser;
+ Text : in String);
+
+ function Has_Preview
+ (This : in File_Chooser)
+ return Boolean;
+
+ procedure Set_Preview
+ (This : in out File_Chooser;
+ Value : in Boolean);
+
+ function Get_Text_Color
+ (This : in File_Chooser)
+ return Color;
+
+ procedure Set_Text_Color
+ (This : in out File_Chooser;
+ Value : in Color);
+
+ function Get_Text_Font
+ (This : in File_Chooser)
+ return Font_Kind;
+
+ procedure Set_Text_Font
+ (This : in out File_Chooser;
+ Font : in Font_Kind);
+
+ function Get_Text_Size
+ (This : in File_Chooser)
+ return Font_Size;
+
+ procedure Set_Text_Size
+ (This : in out File_Chooser;
+ Size : in Font_Size);
+
+ function Get_Chooser_Kind
+ (This : in File_Chooser)
+ return Chooser_Kind;
+
+ procedure Set_Chooser_Kind
+ (This : in out File_Chooser;
+ Kind : in Chooser_Kind);
+
+
+
+
+ function Number_Selected
+ (This : in File_Chooser)
+ return Natural;
+
+ function Get_Directory
+ (This : in File_Chooser)
+ return String;
+
+ procedure Set_Directory
+ (This : in out File_Chooser;
+ Value : in String);
+
+ function Get_Filter
+ (This : in File_Chooser)
+ return String;
+
+ procedure Set_Filter
+ (This : in out File_Chooser;
+ Value : in String);
+
+ function Get_Filter_Index
+ (This : in File_Chooser)
+ return Positive;
+
+ procedure Set_Filter_Index
+ (This : in out File_Chooser;
+ Value : in Positive);
+
+ procedure Rescan
+ (This : in out File_Chooser);
+
+ procedure Rescan_Keep_Filename
+ (This : in out File_Chooser);
+
+ function Get_Selected
+ (This : in File_Chooser;
+ Index : in Positive := 1)
+ return String
+ with Pre => Index <= This.Number_Selected;
+
+ procedure Set_Selected
+ (This : in out File_Chooser;
+ Value : in String);
+
+
+
+
+ procedure Show
+ (This : in out File_Chooser);
+
+ procedure Hide
+ (This : in out File_Chooser);
+
+ function Is_Shown
+ (This : in File_Chooser)
+ return Boolean;
+
+ function Is_Visible
+ (This : in File_Chooser)
+ return Boolean;
+
+
+private
+
+
+ type File_Chooser is new Wrapper with record
+ New_Butt : aliased Widgets.Buttons.Button;
+ Preview_Butt : aliased Widgets.Buttons.Light.Check.Check_Button;
+ Hidden_Butt : aliased Widgets.Buttons.Light.Check.Check_Button;
+ My_Callback : Chooser_Callback;
+ My_Label : Interfaces.C.Strings.chars_ptr;
+ My_OK_Label : Interfaces.C.Strings.chars_ptr;
+ end record;
+
+ overriding procedure Finalize
+ (This : in out File_Chooser);
+
+ procedure Extra_Init
+ (This : in out File_Chooser);
+
+ procedure Extra_Final
+ (This : in out File_Chooser);
+
+
+ Add_Favorites_Label, All_Files_Label,
+ Custom_Filter_Label, Existing_File_Label,
+ Favorites_Label, Filename_Label,
+ Filesystems_Label, Hidden_Label,
+ Manage_Favorites_Label, New_Directory_Label,
+ New_Directory_Tooltip, Preview_Label,
+ Save_Label, Show_Label : Interfaces.C.Strings.chars_ptr;
+
+
+ pragma Inline (New_Button);
+ pragma Inline (Preview_Button);
+ pragma Inline (Show_Hidden_Button);
+
+ pragma Inline (Get_Add_Favorites_Label);
+ pragma Inline (Get_All_Files_Label);
+ pragma Inline (Get_Custom_Filter_Label);
+ pragma Inline (Get_Existing_File_Label);
+ pragma Inline (Get_Favorites_Label);
+ pragma Inline (Get_Filename_Label);
+ pragma Inline (Get_Filesystems_Label);
+ pragma Inline (Get_Hidden_Label);
+ pragma Inline (Get_Manage_Favorites_Label);
+ pragma Inline (Get_New_Directory_Label);
+ pragma Inline (Get_New_Directory_Tooltip);
+ pragma Inline (Get_Preview_Label);
+ pragma Inline (Get_Save_Label);
+ pragma Inline (Get_Show_Label);
+
+ pragma Inline (Add_Extra);
+ pragma Inline (Remove_Extra);
+ pragma Inline (Eject_Extra);
+ pragma Inline (Set_Callback);
+
+ pragma Inline (Get_Background_Color);
+ pragma Inline (Set_Background_Color);
+ pragma Inline (Get_Icon_Size);
+ pragma Inline (Set_Icon_Size);
+ pragma Inline (Get_Label);
+ pragma Inline (Get_OK_Label);
+ pragma Inline (Set_Preview);
+ pragma Inline (Get_Text_Color);
+ pragma Inline (Set_Text_Color);
+ pragma Inline (Get_Text_Font);
+ pragma Inline (Set_Text_Font);
+ pragma Inline (Get_Text_Size);
+ pragma Inline (Set_Text_Size);
+ pragma Inline (Set_Chooser_Kind);
+
+ pragma Inline (Number_Selected);
+ pragma Inline (Get_Filter_Index);
+ pragma Inline (Set_Filter_Index);
+ pragma Inline (Rescan);
+ pragma Inline (Rescan_Keep_Filename);
+ pragma Inline (Set_Selected);
+
+ pragma Inline (Show);
+ pragma Inline (Hide);
+ pragma Inline (Is_Shown);
+ pragma Inline (Is_Visible);
+
+
+ -- Needed to ensure chars_ptr storage is properly cleaned up
+ type File_Chooser_Final_Controller is new Ada.Finalization.Limited_Controlled with null record;
+
+ overriding procedure Finalize
+ (This : in out File_Chooser_Final_Controller);
+
+ Cleanup : File_Chooser_Final_Controller;
+
+
+end FLTK.File_Choosers;
+
+