Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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;
        }