diff --git a/sample/DbClient/Makefile b/sample/DbClient/Makefile index 8ca8054f3..195a18330 100644 --- a/sample/DbClient/Makefile +++ b/sample/DbClient/Makefile @@ -1,12 +1,12 @@ MCS=mcs -REFERENCES= glib-sharp gdk-sharp gtk-sharp gnome-sharp System.Data +REFERENCES= glib-sharp gdk-sharp gtk-sharp gnome-sharp System.Data System.Drawing ### REFS= $(addsuffix .dll, $(addprefix /r:, $(REFERENCES))) all: - $(MCS) $(REFS) DbClient.cs + $(MCS) $(REFS) client.cs clean: rm -f *.exe *.pdb diff --git a/sample/DbClient/client.cs b/sample/DbClient/client.cs new file mode 100644 index 000000000..96e986d84 --- /dev/null +++ b/sample/DbClient/client.cs @@ -0,0 +1,211 @@ +using System; +using System.Drawing; +using Gtk; +using GtkSharp; + +class Client { + + static Window window = null; + static Dialog dialog = null; + static Toolbar toolbar = null; + static Table tableau = null; + + static void Main () + { + Application.Init (); + window = new Window ("Database client"); + window.DeleteEvent += new DeleteEventHandler (Window_Delete); + window.DefaultSize = new Size (300, 200); + + VBox box = new VBox (false, 0); + window.Add (box); + + toolbar = new Toolbar (); + PackToolbar (); + box.PackStart (toolbar, false, false, 0); + + tableau = CreateView (); + box.PackStart (tableau, false, false, 0); + + window.ShowAll (); + Application.Run (); + } + + static void PackToolbar () + { + toolbar.AppendItem ("Insert", "Insert a row", String.Empty, + new Gtk.Image (Stock.Add, IconSize.LargeToolbar), + new SignalFunc (Db_Insert), IntPtr.Zero); + + toolbar.AppendItem ("Remove", "Remove a row", String.Empty, + new Gtk.Image (Stock.Remove, IconSize.LargeToolbar), + new SignalFunc (Db_Remove), IntPtr.Zero); + + toolbar.AppendItem ("Update", "Update the view", String.Empty, + new Gtk.Image (Stock.Refresh, IconSize.LargeToolbar), + new SignalFunc (Db_Update), IntPtr.Zero); + + toolbar.AppendSpace (); + + toolbar.InsertStock (Stock.Quit, "Quit", String.Empty, + new SignalFunc (Quit), IntPtr.Zero, -1); + + toolbar.ToolbarStyle = ToolbarStyle.BothHoriz; + } + + static void Window_Delete (object o, DeleteEventArgs args) + { + Application.Quit (); + args.RetVal = true; + } + + static Gtk.Table CreateView () + { + Table t = new Gtk.Table (0, 2, true); + DrawTitles (t); + t.ColSpacings = 10; + + return t; + } + + static void DrawTitles (Table t) + { + Label label = null; + + label = new Label (String.Empty); + label.Markup = "ID"; + label.UseMarkup = true; + + t.Attach (label, 0, 1, 0, 1, AttachOptions.Expand, AttachOptions.Expand, 1, 1); + + label = new Label (String.Empty); + label.Markup = "Name"; + label.UseMarkup = true; + t.Attach (label, 0, 2, 0, 1, AttachOptions.Expand, AttachOptions.Expand, 1, 1); + + label = new Label (String.Empty); + label.Markup = "Address"; + label.UseMarkup = true; + t.Attach (label, 0, 3, 0, 1, AttachOptions.Expand, AttachOptions.Expand, 1, 1); + } + + static void UpdateView (Record [] records) + { + + } + + static void Db_Insert () + { + dialog = new Dialog (); + dialog.Title = "Insert row"; + dialog.VBox.BorderWidth = 5; + + dialog.VBox.PackStart (DrawForm (Stock.Add), true, true, 0); + + Button button = null; + button = new Button ("_Insert"); + button.Clicked += new EventHandler (Insert_Action); + button.CanDefault = true; + dialog.ActionArea.PackStart (button, true, true, 0); + button.GrabDefault (); + + button = new Button ("_Cancel"); + button.Clicked += new EventHandler (Dialog_Cancel); + dialog.ActionArea.PackStart (button, true, true, 0); + + dialog.ShowAll (); + } + + static void Db_Remove () + { + dialog = new Dialog (); + dialog.Title = "Remove row"; + dialog.VBox.BorderWidth = 5; + + dialog.VBox.PackStart (DrawForm (Stock.Remove), true, true, 0); + + Button button = null; + button = new Button ("_Remove"); + button.Clicked += new EventHandler (Remove_Action); + button.CanDefault = true; + dialog.ActionArea.PackStart (button, true, true, 0); + button.GrabDefault (); + + button = new Button ("_Cancel"); + button.Clicked += new EventHandler (Dialog_Cancel); + dialog.ActionArea.PackStart (button, true, true, 0); + + dialog.ShowAll (); + + } + + static Widget DrawForm (string image) + { + HBox hbox = new HBox (false, 2); + hbox.PackStart (new Gtk.Image (image, IconSize.Dialog), true, true, 0); + + Table table = new Table (3, 3, false); + hbox.PackStart (table); + table.ColSpacings = 4; + table.RowSpacings = 4; + Label label = null; + Gtk.Entry entry = null; + + label = Label.NewWithMnemonic ("_ID"); + table.Attach (label, 0, 1, 0, 1); + entry = new Entry (); + table.Attach (entry, 1, 2, 0, 1); + + label = Label.NewWithMnemonic ("_Name"); + table.Attach (label, 0, 1, 1, 2); + entry = new Entry (); + table.Attach (entry, 1, 2, 1, 2); + + label = Label.NewWithMnemonic ("_Address"); + table.Attach (label, 0, 1, 2, 3); + entry = new Entry (); + table.Attach (entry, 1, 2, 2, 3); + + + return hbox ; + } + + static void Db_Update () + { + } + + static void Quit () + { + Application.Quit (); + } + + static void Insert_Action (object o, EventArgs args) + { + } + + static void Remove_Action (object o, EventArgs args) + { + } + + static void Dialog_Cancel (object o, EventArgs args) + { + dialog.Destroy (); + dialog = null; + } + + +} + +struct Record { + + public int ID; + public string Name; + public string Address; + + public Record (int i, string s, string t) + { + ID = i; + Name = s; + Address = t; + } +}