コード例 #1
0
ファイル: WrappersTree.cs プロジェクト: codyn-net/studio
        public WrappersTree(Wrappers.Node parent) : base(false, 0)
        {
            d_treeview = new Widgets.TreeView <WrapperNode>();
            d_group    = parent;

            TreeViewColumn col;

            col = new TreeViewColumn();

            d_rendererToggle = new CellRendererToggle();
            col.PackStart(d_rendererToggle, false);
            col.SetAttributes(d_rendererToggle,
                              "active", WrapperNode.Column.Checked,
                              "inconsistent", WrapperNode.Column.Inconsistent);

            d_rendererToggle.Toggled += OnRendererToggleToggled;

            d_rendererIcon = new CellRendererPixbuf();
            col.PackStart(d_rendererIcon, false);
            col.SetAttributes(d_rendererIcon, "pixbuf", WrapperNode.Column.Icon);

            d_rendererName = new CellRendererText();
            col.PackStart(d_rendererName, true);
            col.SetAttributes(d_rendererName, "text", WrapperNode.Column.Name, "sensitive", WrapperNode.Column.Sensitive);

            d_treeview.AppendColumn(col);

            d_treeview.HeadersVisible       = false;
            d_treeview.NodeStore.SortColumn = 0;
            d_treeview.ShowExpanders        = false;
            d_treeview.LevelIndentation     = 6;
            d_treeview.EnableSearch         = false;
            d_treeview.SearchColumn         = -1;
            d_treeview.Selection.Mode       = SelectionMode.Multiple;

            d_treeview.StartInteractiveSearch += OnTreeViewInteractiveSearch;

            d_treeview.RowActivated  += OnTreeViewRowActivated;
            d_treeview.PopulatePopup += OnTreeViewPopulatePopup;
            d_treeview.KeyPressEvent += OnTreeViewKeyPressEvent;

            // Keep expanded
            d_treeview.Model.RowInserted += delegate(object o, RowInsertedArgs args) {
                TreeRowReference r = new TreeRowReference(d_treeview.Model, args.Path);

                GLib.Idle.Add(delegate {
                    if (r.Valid())
                    {
                        d_treeview.ExpandToPath(r.Path);
                    }

                    return(false);
                });
            };

            d_treeview.NodeStore.NodeAdded += delegate(Node par, Node child) {
                WrapperNode n = (WrapperNode)child;
                n.Toggled += OnNodeToggled;

                foreach (WrapperNode c in n.Descendents)
                {
                    c.Toggled += OnNodeToggled;
                }
            };

            d_treeview.NodeStore.NodeRemoved += delegate(Node par, Node child, int wasAtIndex) {
                WrapperNode n = (WrapperNode)child;
                n.Toggled -= OnNodeToggled;

                foreach (WrapperNode c in n.Descendents)
                {
                    c.Toggled -= OnNodeToggled;
                }
            };

            Build(parent);

            d_treeview.Show();

            ScrolledWindow wd = new ScrolledWindow();

            wd.SetPolicy(PolicyType.Automatic, PolicyType.Automatic);
            wd.ShadowType = ShadowType.EtchedIn;
            wd.Add(d_treeview);
            wd.Show();

            PackStart(wd, true, true, 0);

            HBox hbox = new HBox(false, 3);

            hbox.Show();

            d_entry = new Entry();
            d_entry.Show();

            Image img = new Image(Gtk.Stock.Find, IconSize.Button);

            img.Show();

            d_label = new Label("");
            d_label.Show();

            hbox.PackStart(img, false, false, 0);
            hbox.PackStart(d_label, false, false, 0);
            hbox.PackStart(d_entry, true, true, 0);
            hbox.BorderWidth = 6;

            PackStart(hbox, false, false, 0);

            d_entry.Changed       += HandleEntryChanged;
            d_entry.KeyPressEvent += HandleEntryKeyPressEvent;

            d_treeview.ExpandAll();
            d_treeview.NodeStore.Filter(FilterFunc);
        }
コード例 #2
0
ファイル: Edge.cs プロジェクト: codyn-net/studio
        private void Build()
        {
            SetPolicy(PolicyType.Automatic, PolicyType.Automatic);
            ShadowType = ShadowType.EtchedIn;

            d_treeview = new Widgets.TreeView <Node>();
            d_treeview.Show();

            d_treeview.ShowExpanders     = false;
            d_treeview.RulesHint         = true;
            d_treeview.Selection.Mode    = SelectionMode.Multiple;
            d_treeview.ButtonPressEvent += OnTreeViewButtonPressEvent;
            d_treeview.EnableSearch      = false;
            d_treeview.TooltipColumn     = (int)Node.Column.Tooltip;
            d_treeview.KeyPressEvent    += OnTreeViewKeyPressEvent;

            Add(d_treeview);

            CellRendererText renderer;

            Gtk.TreeViewColumn column;

            // Target renderer
            renderer = new CellRendererText();
            column   = d_treeview.AppendColumn("Target", renderer, "text", Node.Column.Target);

            column.SetCellDataFunc(renderer, VisualizeProperties);

            d_rendererTarget = renderer;

            renderer.Editable         = true;
            renderer.Edited          += HandleEdgeActionTargetEdited;
            renderer.EditingStarted  += HandleEdgeActionTargetEditingStarted;
            renderer.EditingCanceled += delegate {
                if (d_editingEntry != null && Utils.GetCurrentEvent() is Gdk.EventButton)
                {
                    // Still do it actually
                    TargetEdited(d_editingEntry.Text, d_editingPath);
                }
            };

            column.MinWidth = 80;

            // Equation renderer
            renderer           = new CellRendererText();
            renderer.Editable  = true;
            d_rendererEquation = renderer;

            renderer.EditingStarted += delegate(object o, EditingStartedArgs a) {
                d_editingEntry = a.Editable as Entry;
                d_editingPath  = a.Path;

                d_editingEntry.KeyPressEvent += delegate(object source, KeyPressEventArgs args) {
                    OnEntryKeyPressed(args, d_rendererEquation, EquationEdited);
                };
            };

            renderer.Edited += HandleEdgeActionEquationEdited;

            renderer.EditingCanceled += delegate {
                if (d_editingEntry != null && Utils.GetCurrentEvent() is Gdk.EventButton)
                {
                    // Still do it actually
                    EquationEdited(d_editingEntry.Text, d_editingPath);
                }
            };

            column        = d_treeview.AppendColumn("Equation", renderer, "text", Node.Column.Equation, "editable", Node.Column.EquationEditable);
            column.Expand = true;

            column.SetCellDataFunc(renderer, VisualizeProperties);

            Populate();
        }