public static void Main(string[] args) { Gtk.Application.Init("test", ref args); Gtk.Window window = new Gtk.Window("Test"); Gtk.WindowGroup grp = new Gtk.WindowGroup(); grp.AddWindow(window); window.SetDefaultSize(400, 300); Plot.Widget area = new Plot.Widget(); d_graph = area.Graph; d_graph.AxisAspect = 1; d_graph.KeepAspect = true; window.Add(area); window.ShowAll(); window.DeleteEvent += delegate { Gtk.Application.Quit(); }; d_i = 0; Plot.Series.Point s1 = new Plot.Series.Point("test 1"); s1.Size = 5; s1.ShowLines = true; Plot.Series.Line s2 = new Plot.Series.Line("test 2"); d_graph.ShowRuler = true; d_graph.Add(s1); d_graph.Add(s2); List <Plot.Point <double> > d1 = new List <Plot.Point <double> >(); List <Plot.Point <double> > d2 = new List <Plot.Point <double> >(); int samplesize = 1000; //GLib.Timeout.Add(10, delegate { for (int i = 0; i <= samplesize; ++i) { d_i = i; double x = d_i++ / (double)samplesize; Plot.Point <double> pt1 = new Plot.Point <double>(x, Math.Sin(x * Math.PI * 2)); Plot.Point <double> pt2 = new Plot.Point <double>(x, Math.Cos(x * Math.PI * 2)); d1.Add(pt1); d2.Add(pt2); } s1.Data = d1; s2.Data = d2; Gtk.Application.Run(); }
private void Build() { if (d_function == null) { return; } d_treeview = new TreeView <Node>(); d_treeview.Show(); d_treeview.EnableSearch = false; d_treeview.Selection.Mode = SelectionMode.Multiple; d_treeview.ShowExpanders = false; d_treeview.ButtonPressEvent += OnTreeViewButtonPressEvent; d_treeview.KeyPressEvent += OnTreeViewKeyPressEvent; CellRenderer renderer; TreeViewColumn column; renderer = new CellRendererText(); column = new TreeViewColumn("Begin", renderer, "text", Node.Column.Begin); d_treeview.AppendColumn(column); column.MinWidth = 75; column.SetCellDataFunc(renderer, delegate(TreeViewColumn col, CellRenderer rend, TreeModel model, TreeIter iter) { Node node = d_treeview.NodeStore.GetFromIter(iter); CellRendererText text = rend as CellRendererText; if (node.Piece == null) { text.Style = Pango.Style.Italic; text.ForegroundGdk = d_treeview.Style.Foreground(StateType.Insensitive); } else { text.Style = Pango.Style.Normal; text.ForegroundGdk = d_treeview.Style.Foreground(d_treeview.State); } }); CellRendererText rname = renderer as CellRendererText; renderer.EditingStarted += delegate(object o, EditingStartedArgs args) { d_editingEntry = args.Editable as Entry; d_editingPath = args.Path; Node node = d_treeview.NodeStore.FindPath(new TreePath(args.Path)); if (node.Piece == null) { d_editingEntry.Text = ""; } d_editingEntry.KeyPressEvent += delegate(object source, KeyPressEventArgs a) { OnEntryKeyPressed(a, rname, BeginEdited); }; }; renderer.EditingCanceled += delegate(object sender, EventArgs e) { if (d_editingEntry != null && Utils.GetCurrentEvent() is Gdk.EventButton) { // Still do it actually BeginEdited(d_editingEntry.Text, d_editingPath); } }; rname.Edited += DoBeginEdited; rname.Editable = true; renderer = new CellRendererText(); column = new TreeViewColumn("End", renderer, "text", Node.Column.End, "editable", Node.Column.Editable); d_treeview.AppendColumn(column); column.MinWidth = 75; CellRendererText rrend = renderer as CellRendererText; renderer.EditingStarted += delegate(object o, EditingStartedArgs args) { d_editingEntry = args.Editable as Entry; d_editingPath = args.Path; d_editingEntry.KeyPressEvent += delegate(object source, KeyPressEventArgs a) { OnEntryKeyPressed(a, rrend, EndEdited); }; }; renderer.EditingCanceled += delegate(object sender, EventArgs e) { if (d_editingEntry != null && Utils.GetCurrentEvent() is Gdk.EventButton) { // Still do it actually EndEdited(d_editingEntry.Text, d_editingPath); } }; rrend.Edited += DoEndEdited; renderer = new CellRendererText(); column = new TreeViewColumn("Coefficients", renderer, "text", Node.Column.Coefficients, "editable", Node.Column.Editable); d_treeview.AppendColumn(column); CellRendererText rcoef = renderer as CellRendererText; renderer.EditingStarted += delegate(object o, EditingStartedArgs args) { d_editingEntry = args.Editable as Entry; d_editingPath = args.Path; d_editingEntry.KeyPressEvent += delegate(object source, KeyPressEventArgs a) { OnEntryKeyPressed(a, rcoef, CoefficientsEdited); }; }; renderer.EditingCanceled += delegate(object sender, EventArgs e) { if (d_editingEntry != null && Utils.GetCurrentEvent() is Gdk.EventButton) { // Still do it actually CoefficientsEdited(d_editingEntry.Text, d_editingPath); } }; rcoef.Edited += DoCoefficientsEdited; ScrolledWindow sw = new ScrolledWindow(); sw.Show(); sw.SetPolicy(PolicyType.Automatic, PolicyType.Automatic); sw.ShadowType = ShadowType.EtchedIn; sw.Add(d_treeview); d_sw = sw; Pack1(sw, true, true); VBox vbox = new VBox(false, 3); vbox.Show(); Frame frame = new Frame(); frame.Shadow = ShadowType.EtchedIn; frame.Show(); d_graph = new Plot.Widget(); d_graph.Graph.AutoRecolor = false; d_graph.Graph.XAxisMode = Plot.AxisMode.Fixed; d_graph.Graph.YAxisMode = Plot.AxisMode.Fixed; d_graph.Graph.SnapRulerToData = false; d_graph.Graph.RulerTracksData = false; d_graph.Graph.SnapRulerToAxis = true; d_graph.Graph.ShowGrid = true; d_graph.MotionNotifyEvent += OnGraphMotionNotify; d_graph.Show(); d_graph.ButtonPressEvent += OnGraphButtonPress; d_graph.ButtonReleaseEvent += OnGraphButtonRelease; frame.Add(d_graph); vbox.PackStart(frame, true, true, 0); d_periodWidget = new HBox(false, 6); d_periodWidget.Show(); d_period = new Entry(); d_period.Show(); d_period.Text = "1"; d_period.WidthChars = 5; d_period.FocusOutEvent += OnPeriodFocusOut; d_period.Activated += OnPeriodActivated; d_period.TooltipText = "If specified, makes the function periodic on the range 0:<value>"; d_periodWidget.PackEnd(d_period, false, false, 0); Label lbl = new Label("Period:"); lbl.Show(); d_periodWidget.PackEnd(lbl, false, false, 0); CheckButton button = new CheckButton("Show coefficients"); button.Active = true; button.Show(); button.Toggled += OnShowCoefficientsToggled; d_periodWidget.PackStart(button, false, false, 0); Pack2(vbox, true, true); Populate(); button.Active = !d_iscubic; }