From 42904bb6f3b48b27961bbec807cb514661ebb675 Mon Sep 17 00:00:00 2001 From: Jed Barber Date: Sun, 13 Nov 2016 20:06:05 +1100 Subject: Added optional line numbers --- src/adapad.adb | 17 ++++++++++++++++- src/fltk_binding/c_fl_text_display.cpp | 5 +++++ src/fltk_binding/c_fl_text_display.h | 1 + src/fltk_binding/fltk-widgets-groups-text_displays.adb | 17 +++++++++++++++++ src/fltk_binding/fltk-widgets-groups-text_displays.ads | 5 +++++ src/windows-editor.adb | 10 ++++++++++ src/windows-editor.ads | 5 +++++ to_do.txt | 4 ++-- 8 files changed, 61 insertions(+), 3 deletions(-) diff --git a/src/adapad.adb b/src/adapad.adb index a045cfe..e72d4d6 100644 --- a/src/adapad.adb +++ b/src/adapad.adb @@ -252,6 +252,20 @@ package body Adapad is + procedure Lines_CB + (Item : in out FLTK.Widgets.Widget'Class) is + begin + if FLTK.Widgets.Menus.Menu (Item).Chosen.Value then + -- 50 pixels should be enough for 5 digit line numbers + Editor.Set_Linenumber_Width (50); + else + Editor.Set_Linenumber_Width (0); + end if; + end Lines_CB; + + + + procedure About_CB (Item : in out FLTK.Widgets.Widget'Class) is begin @@ -479,7 +493,8 @@ begin Bar.Add ("Search/Word Count", Count_CB'Access); Bar.Add (Text => "&Options", Flags => Flag_Submenu); - Bar.Add ("Options/&Word Wrap", Wrap_CB'Access, No_Key, Flag_Toggle); + Bar.Add ("Options/&Word Wrap", Wrap_CB'Access, No_Key, Flag_Toggle); + Bar.Add ("Options/&Line Numbers", Lines_CB'Access, No_Key, Flag_Toggle); Bar.Add (Text => "&Help", Flags => Flag_Submenu); Bar.Add ("Help/&About", About_CB'Access); diff --git a/src/fltk_binding/c_fl_text_display.cpp b/src/fltk_binding/c_fl_text_display.cpp index 85ad733..b9e59c6 100644 --- a/src/fltk_binding/c_fl_text_display.cpp +++ b/src/fltk_binding/c_fl_text_display.cpp @@ -98,3 +98,8 @@ int fl_text_display_rewind_lines(TEXTDISPLAY td, int s, int l) { return reinterpret_cast(td)->rewind_lines(s, l); } + +void fl_text_display_linenumber_width(TEXTDISPLAY td, int w) { + reinterpret_cast(td)->linenumber_width(w); +} + diff --git a/src/fltk_binding/c_fl_text_display.h b/src/fltk_binding/c_fl_text_display.h index 3202397..dbd683f 100644 --- a/src/fltk_binding/c_fl_text_display.h +++ b/src/fltk_binding/c_fl_text_display.h @@ -28,6 +28,7 @@ extern "C" void fl_text_display_previous_word(TEXTDISPLAY td); extern "C" void fl_text_display_wrap_mode(TEXTDISPLAY td, int w, int m); extern "C" int fl_text_display_skip_lines(TEXTDISPLAY td, int s, int l, int p); extern "C" int fl_text_display_rewind_lines(TEXTDISPLAY td, int s, int l); +extern "C" void fl_text_display_linenumber_width(TEXTDISPLAY td, int w); #endif diff --git a/src/fltk_binding/fltk-widgets-groups-text_displays.adb b/src/fltk_binding/fltk-widgets-groups-text_displays.adb index c6a1589..1aa5962 100644 --- a/src/fltk_binding/fltk-widgets-groups-text_displays.adb +++ b/src/fltk_binding/fltk-widgets-groups-text_displays.adb @@ -97,6 +97,11 @@ package body FLTK.Widgets.Groups.Text_Displays is return Interfaces.C.int; pragma Import (C, fl_text_display_rewind_lines, "fl_text_display_rewind_lines"); + procedure fl_text_display_linenumber_width + (TD : in System.Address; + W : in Interfaces.C.int); + pragma Import (C, fl_text_display_linenumber_width, "fl_text_display_linenumber_width"); + @@ -306,5 +311,17 @@ package body FLTK.Widgets.Groups.Text_Displays is end Rewind_Lines; + + + procedure Set_Linenumber_Width + (This : in out Text_Display; + Width : in Natural) is + begin + fl_text_display_linenumber_width + (This.Void_Ptr, + Interfaces.C.int (Width)); + end Set_Linenumber_Width; + + end FLTK.Widgets.Groups.Text_Displays; diff --git a/src/fltk_binding/fltk-widgets-groups-text_displays.ads b/src/fltk_binding/fltk-widgets-groups-text_displays.ads index 6362160..0e136ff 100644 --- a/src/fltk_binding/fltk-widgets-groups-text_displays.ads +++ b/src/fltk_binding/fltk-widgets-groups-text_displays.ads @@ -102,6 +102,11 @@ package FLTK.Widgets.Groups.Text_Displays is return Natural; + procedure Set_Linenumber_Width + (This : in out Text_Display; + Width : in Natural); + + private diff --git a/src/windows-editor.adb b/src/windows-editor.adb index e9195dd..d995f7a 100644 --- a/src/windows-editor.adb +++ b/src/windows-editor.adb @@ -197,5 +197,15 @@ package body Windows.Editor is end Set_Wrap_Mode; + + + procedure Set_Linenumber_Width + (This : in out Editor_Window; + Width : in Natural) is + begin + This.Editor.Set_Linenumber_Width (Width); + end Set_Linenumber_Width; + + end Windows.Editor; diff --git a/src/windows-editor.ads b/src/windows-editor.ads index d2874ed..8012e09 100644 --- a/src/windows-editor.ads +++ b/src/windows-editor.ads @@ -95,6 +95,11 @@ package Windows.Editor is Margin : in Natural := 0); + procedure Set_Linenumber_Width + (This : in out Editor_Window; + Width : in Natural); + + private diff --git a/to_do.txt b/to_do.txt index 2160017..95481e0 100644 --- a/to_do.txt +++ b/to_do.txt @@ -3,11 +3,11 @@ To Do: - change build to be dynamically linked -- improve find, replace, undo/redo, word count, jump to -- add line numbers +- improve find, replace, undo/redo, jump to - suppress unnecessary left/right scrollbar - make logo colours lighter to stand out more - clean up menu widget code +- eliminate image/text_buffer runtime warnings - separate fltk binding into its own repo - add license -- cgit