Skip to content
This repository was archived by the owner on Sep 4, 2024. It is now read-only.

Commit 2df379b

Browse files
committed
[Gtk] Adds EditingFinished event to cell renderers
1 parent 0bb3624 commit 2df379b

File tree

11 files changed

+58
-8
lines changed

11 files changed

+58
-8
lines changed

TestApps/Samples/Samples/ListViewCombos.cs

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,28 +25,33 @@
2525
// THE SOFTWARE.
2626
using System;
2727
using Xwt;
28+
using System.Linq;
2829

2930
namespace Samples
3031
{
3132
public class ListViewCombos: VBox
3233
{
34+
ListStore store;
35+
ListView list;
36+
DataField<int> indexField;
3337
public ListViewCombos ()
3438
{
35-
ListView list = new ListView ();
36-
var indexField = new DataField<int> ();
37-
39+
list = new ListView ();
40+
indexField = new DataField<int> ();
3841
var indexField2 = new DataField<int> ();
3942
var itemsField = new DataField<ItemCollection> ();
4043

41-
ListStore store = new ListStore (indexField, indexField2, itemsField);
44+
store = new ListStore (indexField, indexField2, itemsField);
4245
list.DataSource = store;
4346
list.GridLinesVisible = GridLines.Horizontal;
4447

45-
var comboCellView = new ComboBoxCellView { Editable = true, SelectedIndexField = indexField };
48+
ComboBoxCellView comboCellView = new ComboBoxCellView { Editable = true, SelectedIndexField = indexField };
4649
comboCellView.Items.Add (1, "one");
4750
comboCellView.Items.Add (2, "two");
4851
comboCellView.Items.Add (3, "three");
4952

53+
comboCellView.EditingFinished += ComboCellView_EditingFinished;
54+
5055
list.Columns.Add (new ListViewColumn ("List 1", comboCellView));
5156

5257
var comboCellView2 = new ComboBoxCellView { Editable = true, SelectedIndexField = indexField2, ItemsField = itemsField };
@@ -65,5 +70,13 @@ public ListViewCombos ()
6570
}
6671
PackStart (list, true);
6772
}
73+
74+
void ComboCellView_EditingFinished (object sender, EventArgs e)
75+
{
76+
var cellView = (ComboBoxCellView)sender;
77+
var cellText = store.GetValue (list.SelectedRow, indexField);
78+
79+
Console.WriteLine ($"Your real value is : {cellText}");
80+
}
6881
}
6982
}

Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererComboBox.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,8 @@ void HandleEdited (object o, Gtk.EditedArgs args)
129129
}
130130
if (view.SelectedTextField != null)
131131
CellUtil.SetModelValue (TreeModel, CurrentIter, view.SelectedTextField.Index, typeof (string), args.NewText);
132+
133+
view.RaiseEditingFinished ();
132134
}
133135
}
134136
}

Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererText.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ void HandleEdited (object o, EditedArgs args)
7272
Gtk.TreeIter iter;
7373
if (TreeModel.GetIterFromString (out iter, args.Path))
7474
CellUtil.SetModelValue (TreeModel, iter, view.TextField.Index, view.TextField.FieldType, args.NewText);
75+
view.RaiseEditingFinished ();
7576
}
7677
}
7778
}

Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererToggle.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ void HandleToggled (object o, ToggledArgs args)
9191

9292
CellUtil.SetModelValue (TreeModel, iter, field.Index, type, newValue);
9393
}
94+
95+
view.RaiseEditingFinished ();
9496
}
9597
}
9698
}

Xwt/Xwt.Backends/IComboBoxCellViewFrontend.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,12 @@
2727

2828
namespace Xwt.Backends
2929
{
30-
public interface IComboBoxCellViewFrontend: ICellViewFrontend
30+
public interface IEditableCellViewFrontend
31+
{
32+
void RaiseEditingFinished ();
33+
}
34+
35+
public interface IComboBoxCellViewFrontend: ICellViewFrontend, IEditableCellViewFrontend
3136
{
3237
IDataField<string> SelectedTextField { get; }
3338
IDataField<int> SelectedIndexField { get; }

Xwt/Xwt.Backends/ITextCellViewFrontend.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
namespace Xwt.Backends
2929
{
30-
public interface ITextCellViewFrontend: ICellViewFrontend
30+
public interface ITextCellViewFrontend: ICellViewFrontend, IEditableCellViewFrontend
3131
{
3232
string Markup { get; }
3333
string Text { get; }

Xwt/Xwt.Backends/IToggleCellViewFrontend.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
namespace Xwt.Backends
2828
{
2929

30-
public interface IToggleCellViewFrontend : ICellViewFrontend
30+
public interface IToggleCellViewFrontend : ICellViewFrontend, IEditableCellViewFrontend
3131
{
3232
bool Active { get; }
3333
bool Editable { get; }

Xwt/Xwt/CheckBoxCellView.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ public bool AllowMixed {
101101
}
102102

103103
public event EventHandler<WidgetEventArgs> Toggled;
104+
public event EventHandler EditingFinished;
104105

105106
/// <summary>
106107
/// Raises the toggled event
@@ -115,5 +116,10 @@ public bool RaiseToggled ()
115116
}
116117
return false;
117118
}
119+
120+
public void RaiseEditingFinished ()
121+
{
122+
EditingFinished?.Invoke (this, EventArgs.Empty);
123+
}
118124
}
119125
}

Xwt/Xwt/ComboBoxCellView.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,5 +124,12 @@ public bool RaiseSelectionChanged ()
124124
}
125125
return false;
126126
}
127+
128+
public event EventHandler EditingFinished;
129+
130+
public void RaiseEditingFinished ()
131+
{
132+
EditingFinished?.Invoke (this, EventArgs.Empty);
133+
}
127134
}
128135
}

Xwt/Xwt/RadioButtonCellView.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,5 +79,12 @@ public bool RaiseToggled ()
7979
}
8080
return false;
8181
}
82+
83+
public event EventHandler EditingFinished;
84+
85+
public void RaiseEditingFinished ()
86+
{
87+
EditingFinished?.Invoke (this, EventArgs.Empty);
88+
}
8289
}
8390
}

0 commit comments

Comments
 (0)