Skip to content

Commit 514ac5e

Browse files
committed
Fix case where last text field edited might not be saved, bump version
1 parent 20e77ba commit 514ac5e

File tree

6 files changed

+31
-38
lines changed

6 files changed

+31
-38
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ The executable will be found in the `bin` subdirectory.
100100

101101
## Changes
102102

103+
* 0.2.1 Fix case where last text field edited might not be saved
103104
* 0.2.0 Add button to delete sound file from a track - Issue #2
104105
* 0.1.1 Fix adding new tracks with no associated sound file - Issue #1
105106
* 0.1.0 Initial release - runs OK on GNU/Linux and Windows

alire.toml

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ The MD can plan in advance the order of performance; later, `eMDee` will facilit
1010
Additional controls may be added to specific tracks such as changing the volume level.
1111
"""
1212

13-
version = "0.2.0" # TODO Update for each release
13+
version = "0.2.1" # TODO Update for each release
1414

1515
authors = ["Stephen Merrony"]
1616
maintainers = ["Stephen Merrony <merrony@gmail.com>"]
@@ -28,6 +28,7 @@ windows = true
2828
'...' = false
2929

3030
[[depends-on]]
31+
gnat = "^13.0"
3132
gtkada = "^24.0.0"
3233

3334
[[depends-on]]

examples/test_session_2.toml

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,37 @@
11
[session]
2-
comment = ""
3-
description = "Test Session"
2+
comment = "Notes"
3+
description = "Test Session updated"
44
fontsize = "M"
55
leadin = 0
66
midiport = ""
77
[[track]]
8-
comment = ""
8+
comment = "1"
99
path = "/home/steve/Ada/emdee/all_notes_off.mid"
1010
skip = false
1111
title = "All notes off"
1212
volume = 100
1313
[[track]]
14-
comment = "Mix up choir first!"
14+
comment = "2"
1515
path = "/home/steve/Desktop/Brugeria_MP3/Accompaniments/AvoirUnBonCopain.mid"
1616
skip = false
1717
title = "Avoir un bon copain"
1818
volume = 100
1919
[[track]]
20-
comment = "Bring men forward"
21-
path = "/home/steve/Desktop/Brugeria_MP3/Accompaniments/Fauré-CantiqueDeJeanRacine-Master_Piano.mp3"
20+
comment = "3"
21+
path = "/home/steve/Desktop/Brugeria_MP3/Accompaniments/Fauré-CantiqueDeJeanRacine-Master_Piano.mp3"
2222
skip = false
2323
title = "Cantique de Jean Racine"
2424
volume = 95
2525
[[track]]
26-
comment = ""
26+
comment = "4"
2727
path = "/home/steve/Ada/emdee/all_notes_off.mid"
2828
skip = false
29-
title = "sdf"
29+
title = "sdf2"
3030
volume = 100
3131
[[track]]
32-
comment = "ggg"
32+
comment = "56"
3333
path = "/home/steve/Ada/emdee/all_notes_off.mid"
3434
skip = false
35-
title = "sdfg"
35+
title = "sdfg3"
3636
volume = 100
3737

src/gui-tracks.adb

+10-15
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@ with Ada.Directories;
66
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
77
with Ada.Text_IO;
88

9-
with Gdk.Event;
10-
119
with Glib; use Glib;
1210

1311
with Gtk.Adjustment;
1412
with Gtk.Check_Button;
13+
with Gtk.Editable; use Gtk.Editable;
1514
with Gtk.Enums; use Gtk.Enums;
1615
with Gtk.Spin_Button;
1716
with Gtk.Toggle_Button;
@@ -44,32 +43,28 @@ package body GUI.Tracks is
4443
Set_Dirty;
4544
end New_Track_File_Del_Btn_CB;
4645

47-
function Comment_Changed_CB (Self : access Gtk_Widget_Record'Class;
48-
Event : Gdk.Event.Gdk_Event_Focus) return Boolean is
49-
pragma Unreferenced (Event);
50-
Name : constant String := Self.Get_Name;
46+
procedure Comment_Changed_CB (Self : Gtk_Editable) is
47+
Ent : constant Gtk_Entry := -Self;
48+
Name : constant String := Ent.Get_Name;
5149
Track_Num : constant Integer := Integer'Value (Name (9 .. Name'Last));
5250
begin
5351
if Sess.Tracks (Track_Num).Comment /= Gtk_Entry (Tracks_Grid.Get_Child_At (Comment_Col, Gint (Track_Num))).Get_Text then
5452
Sess.Tracks (Track_Num).Comment := To_Unbounded_String (Gtk_Entry (Tracks_Grid.Get_Child_At (Comment_Col, Gint (Track_Num))).Get_Text);
5553
Set_Dirty;
5654
end if;
57-
return False;
5855
end Comment_Changed_CB;
5956

60-
function Title_Changed_CB (Self : access Gtk_Widget_Record'Class;
61-
Event : Gdk.Event.Gdk_Event_Focus) return Boolean is
62-
pragma Unreferenced (Event);
63-
Name : constant String := Self.Get_Name;
57+
procedure Title_Changed_CB (Self : Gtk_Editable) is
58+
Ent : constant Gtk_Entry := -Self;
59+
Name : constant String := Ent.Get_Name;
6460
Track_Num : constant Integer := Integer'Value (Name (7 .. Name'Last));
6561
begin
6662
if Sess.Tracks.Length > 0 and then
6763
Sess.Tracks (Track_Num).Title /= Gtk_Entry (Tracks_Grid.Get_Child_At (Title_Col, Gint (Track_Num))).Get_Text then
6864
Sess.Tracks (Track_Num).Title := To_Unbounded_String (Gtk_Entry (Tracks_Grid.Get_Child_At (Title_Col, Gint (Track_Num))).Get_Text);
6965
Set_Dirty;
7066
end if;
71-
return False;
72-
end Title_Changed_CB;
67+
end Title_Changed_CB;
7368

7469
procedure Track_Insert_Btn_CB (Self : access Gtk_Button_Record'Class) is
7570
pragma Unreferenced (Self);
@@ -309,7 +304,7 @@ package body GUI.Tracks is
309304
Title_Entry.Set_Text (To_String (Track.Title));
310305
Title_Entry.Set_Name ("Title" & Row'Image);
311306
Tracks_Grid.Attach (Title_Entry, Title_Col, Track_Row);
312-
Title_Entry.On_Focus_Out_Event (Call => Title_Changed_CB'Access);
307+
On_Changed (+Title_Entry, Title_Changed_CB'Access);
313308

314309
Gtk.Check_Button.Gtk_New (Skip_Check, "");
315310
Skip_Check.Set_Active (Track.Skip);
@@ -323,7 +318,7 @@ package body GUI.Tracks is
323318
Comment_Entry.Set_Text (To_String (Track.Comment));
324319
Comment_Entry.Set_Name ("Comment" & Row'Image);
325320
Tracks_Grid.Attach (Comment_Entry, Comment_Col, Track_Row);
326-
Comment_Entry.On_Focus_Out_Event (Call => Comment_Changed_CB'Access);
321+
On_Changed (+Comment_Entry, Comment_Changed_CB'Access);
327322

328323
case Track.File_Type is
329324
when NONE | UNKNOWN =>

src/gui.adb

+7-11
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ with Glib.Error; use Glib.Error;
1717
with Gtk.Box; use Gtk.Box;
1818
with Gtk.Button; use Gtk.Button;
1919
with Gtk.Container;
20+
with Gtk.Editable; use Gtk.Editable;
2021
with Gtk.Enums; use Gtk.Enums;
2122
with Gtk.Frame;
2223
with Gtk.Style_Context;
@@ -115,26 +116,22 @@ package body GUI is
115116
end if;
116117
end Select_Previous_Track;
117118

118-
function Comment_Changed_CB (Self : access Gtk_Widget_Record'Class;
119-
Event : Gdk.Event.Gdk_Event_Focus) return Boolean is
120-
pragma Unreferenced (Self, Event);
119+
procedure Comment_Changed_CB (Self : Gtk_Editable) is
120+
pragma Unreferenced (Self);
121121
begin
122122
if Session_Comment_Entry.Get_Text /= Sess.Comment then
123123
Set_Dirty;
124124
Sess.Comment := To_Unbounded_String (Session_Comment_Entry.Get_Text);
125125
end if;
126-
return False;
127126
end Comment_Changed_CB;
128127

129-
function Desc_Changed_CB (Self : access Gtk_Widget_Record'Class;
130-
Event : Gdk.Event.Gdk_Event_Focus) return Boolean is
131-
pragma Unreferenced (Self, Event);
128+
procedure Desc_Changed_CB (Self : Gtk_Editable) is
129+
pragma Unreferenced (Self);
132130
begin
133131
if Session_Desc_Entry.Get_Text /= Sess.Desc then
134132
Set_Dirty;
135133
Sess.Desc := To_Unbounded_String (Session_Desc_Entry.Get_Text);
136134
end if;
137-
return False;
138135
end Desc_Changed_CB;
139136

140137
function Update_Status_Box_CB (SB : Gtk.Box.Gtk_Box) return Boolean is
@@ -255,15 +252,14 @@ package body GUI is
255252
Session_Header_Grid.Attach (Child => Session_Label, Left => 0, Top => 0);
256253
Gtk_New (Session_Desc_Entry);
257254
Session_Desc_Entry.Set_Width_Chars (60);
258-
Session_Desc_Entry.On_Focus_Out_Event (Call => Desc_Changed_CB'Access);
259-
-- Session_Desc_Entry.On_Focus_Out_Event ... TODO probably better than Update_Text_Fields
255+
On_Changed (+Session_Desc_Entry, Desc_Changed_CB'Access);
260256
Session_Header_Grid.Attach (Child => Session_Desc_Entry, Left => 1, Top => 0);
261257

262258
Gtk_New (Comment_Label, " Notes: ");
263259
Session_Header_Grid.Attach (Child => Comment_Label, Left => 0, Top => 1);
264260
Gtk_New (Session_Comment_Entry);
265261
Session_Comment_Entry.Set_Width_Chars (80);
266-
Session_Comment_Entry.On_Focus_Out_Event (Call => Comment_Changed_CB'Access);
262+
On_Changed (+Session_Comment_Entry, Comment_Changed_CB'Access);
267263
Session_Header_Grid.Attach (Child => Session_Comment_Entry, Left => 1, Top => 1);
268264
Main_Box.Pack_Start (Child => Session_Header_Grid, Expand => False);
269265

src/gui.ads

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ package GUI is
2222

2323
package SB_Timeout_P is new Glib.Main.Generic_Sources (Gtk.Box.Gtk_Box);
2424

25-
App_SemVer : constant String := "0.2.0"; -- TODO Update Version each release!
25+
App_SemVer : constant String := "0.2.1"; -- TODO Update Version each release!
2626
App_Title : constant String := "eMDee";
2727
App_ID : constant String := "fr.merrony." & App_Title;
2828
App_Comment : constant String := "Musical Director's Assistant";

0 commit comments

Comments
 (0)