예제 #1
0
 protected override void OnEdited(string path, string new_text)
 {
     Gtk.TreeIter iter;
     if (treeModel.GetIterFromString(out iter, path))
     {
         treeModel.SetValue(iter, ((TextCellView)view).TextField.Index, new_text);
     }
     base.OnEdited(path, new_text);
 }
예제 #2
0
 protected override void OnToggled(string path)
 {
     if (!view.RaiseToggled() && view.ActiveField != null)
     {
         Gtk.TreeIter iter;
         if (treeModel.GetIterFromString(out iter, path))
         {
             CellUtil.SetModelValue(treeModel, iter, view.ActiveField.Index, view.ActiveField.FieldType, !Active);
         }
     }
     base.OnToggled(path);
 }
예제 #3
0
 protected override void OnEdited(string path, string new_text)
 {
     if (!view.RaiseTextChanged() && view.TextField != null)
     {
         Gtk.TreeIter iter;
         if (treeModel.GetIterFromString(out iter, path))
         {
             CellUtil.SetModelValue(treeModel, iter, view.TextField.Index, view.TextField.FieldType, new_text);
         }
     }
     base.OnEdited(path, new_text);
 }
예제 #4
0
        void HandleEdited(object o, EditedArgs args)
        {
            SetCurrentEventRow();
            var view = (ITextCellViewFrontend)Frontend;

            if (!view.RaiseTextChanged() && view.TextField != null)
            {
                Gtk.TreeIter iter;
                if (TreeModel.GetIterFromString(out iter, args.Path))
                {
                    CellUtil.SetModelValue(TreeModel, iter, view.TextField.Index, view.TextField.FieldType, args.NewText);
                }
            }
        }
예제 #5
0
        protected override void OnToggled(string path)
        {
            CellUtil.SetCurrentEventRow(treeBackend, path);

            IDataField field = (IDataField)view.StateField ?? view.ActiveField;

            if (!view.RaiseToggled() && (field != null))
            {
                Type type = field.FieldType;

                Gtk.TreeIter iter;
                if (treeModel.GetIterFromString(out iter, path))
                {
                    CheckBoxState newState;

                    if (view.AllowMixed && type == typeof(CheckBoxState))
                    {
                        if (Inconsistent)
                        {
                            newState = CheckBoxState.Off;
                        }
                        else if (Active)
                        {
                            newState = CheckBoxState.Mixed;
                        }
                        else
                        {
                            newState = CheckBoxState.On;
                        }
                    }
                    else
                    {
                        if (Active)
                        {
                            newState = CheckBoxState.Off;
                        }
                        else
                        {
                            newState = CheckBoxState.On;
                        }
                    }

                    object newValue = type == typeof(CheckBoxState) ?
                                      (object)newState : (object)(newState == CheckBoxState.On);

                    CellUtil.SetModelValue(treeModel, iter, field.Index, type, newValue);
                }
            }
            base.OnToggled(path);
        }
        void HandleToggled(object o, ToggledArgs args)
        {
            SetCurrentEventRow();

            var        view  = (IToggleCellViewFrontend)Frontend;
            IDataField field = (IDataField)(view as ICheckBoxCellViewFrontend)?.StateField ?? view.ActiveField;

            if (!view.RaiseToggled() && (field != null))
            {
                Type type = field.FieldType;

                Gtk.TreeIter iter;
                if (TreeModel.GetIterFromString(out iter, args.Path))
                {
                    CheckBoxState newState;

                    if (type == typeof(CheckBoxState) && ((ICheckBoxCellViewFrontend)view).AllowMixed)
                    {
                        if (renderer.Inconsistent)
                        {
                            newState = CheckBoxState.Off;
                        }
                        else if (renderer.Active)
                        {
                            newState = CheckBoxState.Mixed;
                        }
                        else
                        {
                            newState = CheckBoxState.On;
                        }
                    }
                    else
                    {
                        if (renderer.Active)
                        {
                            newState = CheckBoxState.Off;
                        }
                        else
                        {
                            newState = CheckBoxState.On;
                        }
                    }

                    object newValue = type == typeof(CheckBoxState) ?
                                      (object)newState : (object)(newState == CheckBoxState.On);

                    CellUtil.SetModelValue(TreeModel, iter, field.Index, type, newValue);
                }
            }
        }
예제 #7
0
        void HandleSelectionChanged(TreeModel model, TreePath [] selectedItems)
        {
            TreeIter iter;

            if (swallowSignals)
            {
                return;
            }

            if (ProjectsSelected != null)
            {
                selectedProjects = new List <LMProject> ();
                for (int i = 0; i < selectedItems.Length; i++)
                {
                    model.GetIterFromString(out iter, selectedItems [i].ToString());
                    selectedProjects.Add((LMProject)model.GetValue(iter, COL_PROJECT));
                }
                ProjectsSelected(selectedProjects);
            }
        }
예제 #8
0
        void HandleSelectionChanged(TreeModel model, TreePath[] selectedItems)
        {
            TreeIter iter;
            List <ProjectDescription> list;

            if (swallowSignals)
            {
                return;
            }

            if (ProjectsSelected != null)
            {
                list = new List <ProjectDescription> ();
                for (int i = 0; i < selectedItems.Length; i++)
                {
                    model.GetIterFromString(out iter, selectedItems [i].ToString());
                    list.Add((ProjectDescription)model.GetValue(iter, COL_PROJECT_DESCRIPTION));
                }
                ProjectsSelected(list);
            }
        }
예제 #9
0
        void HandleSelectionChanged(TreeModel model, TreePath[] selectedItems)
        {
            TreeIter iter;

            if (swallowSignals)
                return;

            if (ProjectsSelected != null) {
                selectedProjects = new List<ProjectLongoMatch> ();
                for (int i = 0; i < selectedItems.Length; i++) {
                    model.GetIterFromString (out iter, selectedItems [i].ToString ());
                    selectedProjects.Add ((ProjectLongoMatch)model.GetValue (iter, COL_PROJECT));
                }
                ProjectsSelected (selectedProjects);
            }
        }
예제 #10
0
    protected void AddPlatformTab(string friendlyName, string msfPayloadFilter, Notebook parent, string negativeFilter = null, Widget payloadDetails = null)
    {
        HBox split = new HBox();

        TreeView payloads = new TreeView();

        payloads.RowActivated += (object o, RowActivatedArgs args) => {
            TreeModel model = _treeViews [_parentNotebook.CurrentPage].Model;

            TreeIter iter;
            model.GetIterFromString(out iter, args.Path.ToString());
            string str    = model.GetValue(iter, 1) as string;
            VBox   deeets = RedrawOptions(_newPayloads [str], true);

            HBox   updateButton = new HBox();
            Button update       = new Button("Update payload");
            update.Clicked += (object sender, EventArgs e) => {
                Dictionary <string, object> newopts = new Dictionary <string, object> ();
                foreach (Widget child in _dynamicOptions[_parentNotebook.CurrentPage].Children)
                {
                    if (child is CheckButton)
                    {
                        newopts.Add((child as CheckButton).Label, (child as CheckButton).Active.ToString());
                    }
                    else if (child is HBox)
                    {
                        foreach (Widget c in (child as HBox).Children)
                        {
                            if (c is Entry)
                            {
                                newopts.Add((c as Entry).TooltipText, (c as Entry).Text);
                            }
                        }
                    }
                }

                _newPayloads [str] = newopts;
            };

            updateButton.PackStart(update, false, false, 0);
            deeets.PackStart(updateButton, false, false, 0);
            deeets.ShowAll();
        };

        TreeViewColumn no = new TreeViewColumn();

        no.Title = "#";
        CellRendererText noText = new CellRendererText();

        no.PackStart(noText, true);
        no.AddAttribute(noText, "text", 0);

        TreeViewColumn treedeets = new TreeViewColumn();

        payloads.AppendColumn(no);

        CellRendererText treeDeetsText = new CellRendererText();

        treedeets.Title = "Details";
        treedeets.PackStart(treeDeetsText, true);
        treedeets.AddAttribute(treeDeetsText, "text", 1);
        payloads.AppendColumn(treedeets);

        ListStore payloadListStore = new ListStore(typeof(string), typeof(string));

        payloads.Model = payloadListStore;

        payloads.WidthRequest  = 250;
        payloads.HeightRequest = 500;

        _treeViews.Add(payloads);

        split.PackStart(payloads, false, false, 10);
        VBox deetsAndButtons = new VBox();
        VBox deets           = new VBox();

        HBox     payloadComboContainer = new HBox();
        ComboBox payloadCombo          = ComboBox.NewText();

        payloadCombo.Changed     += OnPayloadChanged;
        payloadCombo.WidthRequest = 250;

        var ps = ((List <object>)_payloads ["modules"]).Where(s => ((string)s).StartsWith(msfPayloadFilter));

        if (negativeFilter != null)
        {
            ps = ps.Where(s => !((string)s).Contains(negativeFilter));
        }

        foreach (var payload in ps.OrderBy(s => s))
        {
            payloadCombo.AppendText(payload.ToString());
        }

        payloadComboContainer.PackStart(payloadCombo, false, false, 0);

        deetsAndButtons.PackStart(payloadComboContainer, false, false, 0);
        deetsAndButtons.PackStart(deets, false, false, 0);

        if (payloadDetails != null)
        {
            deets.PackStart(payloadDetails, false, false, 0);
        }

        _dynamicOptions.Add(deets);
        split.PackEnd(deetsAndButtons, true, true, 0);
        parent.AppendPage(split, new Label(friendlyName));
    }
예제 #11
0
        void HandleSelectionChanged(TreeModel model, TreePath[] selectedItems)
        {
            TreeIter iter;
            List<ProjectDescription> list;

            if (swallowSignals)
                return;

            if (ProjectsSelected != null) {
                list = new List<ProjectDescription> ();
                for (int i = 0; i < selectedItems.Length; i++) {
                    model.GetIterFromString (out iter, selectedItems [i].ToString ());
                    list.Add ((ProjectDescription)model.GetValue (iter, COL_PROJECT_DESCRIPTION));
                }
                ProjectsSelected (list);
            }
        }