Ejemplo n.º 1
0
        protected virtual void OnUnfreezeUserButtonClicked(object sender, System.EventArgs e)
        {
            System.Collections.Generic.Dictionary <string, bool> ret = new System.Collections.Generic.Dictionary <string, bool>();

            foreach (Gtk.TreePath path in frozenUsersTreeview.Selection.GetSelectedRows())
            {
                Gtk.TreeIter iter = new Gtk.TreeIter();
                frozen_users_store.GetIter(out iter, path);
                string uid = (string)frozen_users_store.GetValue(iter, 0);
                ret[uid] = llum.Core.getCore().xmlrpc.unfreeze_user(uid);
            }

            bool   ok         = true;
            string error_list = "";

            foreach (System.Collections.Generic.KeyValuePair <string, bool> tmp in ret)
            {
                if (!tmp.Value)
                {
                    ok          = false;
                    error_list += " - " + tmp.Key + "\n";
                }
            }

            if (ok)
            {
                msgLabel.Markup = Mono.Unix.Catalog.GetString("Users have been unfrozen successfully");
            }
            else
            {
                msgLabel.Markup = Mono.Unix.Catalog.GetString("The following users couldn't get unfrozen:") + "\n" + error_list;
            }

            populate_available_users_treeview();
        }
Ejemplo n.º 2
0
        protected void attachSubTree(Gtk.TreeModel model, Gtk.TreeIter parent, params object[] elements)
        {
            Gtk.TreeStore store = model as Gtk.TreeStore;

            // remove the values if they were added before.
            Gtk.TreePath path = store.GetPath(parent);
            path.Down();
            Gtk.TreeIter iter;
            while (store.GetIter(out iter, path))
            {
                store.Remove(ref iter);
            }

            // Add the elements to the tree view.
            DirectoryInfo[] di = elements[0] as DirectoryInfo[];
            FileInfo[]      fi = elements[1] as FileInfo[];

            for (uint i = 0; i < di.Length; ++i)
            {
                store.AppendValues(parent, di[i].ToString());
            }

            for (uint i = 0; i < fi.Length; ++i)
            {
                store.AppendValues(parent, fi[i].ToString());
            }
        }
Ejemplo n.º 3
0
 void HandleRowDeleted(object o, Gtk.RowDeletedArgs args)
 {
     Gtk.TreeIter outIter;
     if (TreeStore.GetIter(out outIter, args.Path) && outIter.Equals(Iter))
     {
         UnregisterTreeAnimation(this);
     }
 }
Ejemplo n.º 4
0
        protected virtual void OnRemoveGroupButtonClicked(object sender, System.EventArgs e)
        {
            Gtk.TreePath[] path_array = belongTreeview.Selection.GetSelectedRows();
            System.Collections.Generic.List <string> ret_list = new System.Collections.Generic.List <string>();

            llum.Core core        = llum.Core.getCore();
            bool      error_found = false;

            if (path_array.Length > 0)
            {
                foreach (Gtk.TreePath path in path_array)
                {
                    Gtk.TreeIter iter = new Gtk.TreeIter();
                    belong_store.GetIter(out iter, path);

                    string ret = core.xmlrpc.remove_from_group(user.uid, Convert.ToString(belong_store.GetValue(iter, 0)));
                    ret_list.Add(Convert.ToString(belong_store.GetValue(iter, 0)) + ": " + ret + "\n");

                    if (ret == "true")
                    {
                        //available_store.AppendValues(belong_store.GetValue(iter,0));
                        user.groups.Remove(Convert.ToString(belong_store.GetValue(iter, 0)));
                        //belong_store.Remove(ref iter);
                    }
                    else
                    {
                        error_found = true;
                    }
                }

                if (!error_found)
                {
                    msgLabel.Markup = "<b>" + Mono.Unix.Catalog.GetString("Group modification successful") + "</b>";
                }
                else
                {
                    string msg = "<span foreground='red'> Error:\n";
                    foreach (string str in ret_list)
                    {
                        msg += str;
                    }

                    msg += "</span>";

                    msgLabel.Markup = msg;
                }

                populateTrees();
            }
        }
        void OnRowActivated(object sender, Gtk.RowActivatedArgs args)
        {
            Gtk.TreeIter iter;
            if (!store.GetIter(out iter, args.Path))
            {
                return;
            }

            SignalDescriptor sd = GetSignalDescriptor(iter);

            if (sd != null)
            {
                if (GetSignal(iter) == null)
                {
                    AddHandler(iter, GetHandlerName(sd.Name));
                }
                frontend.NotifySignalActivated();
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Attaches a submodel to the tree view's model.
        /// </summary>
        /// <param name='model'>
        /// The root model to be attached to.
        /// </param>
        /// <param name='parent'>[ref]
        /// The pointer where the elements to be attached to.
        /// </param>
        /// <param name='elements'>
        /// Elements.
        /// </param>
        protected void AttachSubTree(Gtk.TreeModel model, Gtk.TreeIter parent, object[] elements)
        {
            Debug.Assert(store != null, "TreeModel shouldn't be flat");

            // remove the values if they were added before.
            Gtk.TreePath path = store.GetPath(parent);
            path.Down();
            Gtk.TreeIter iter;
            while (store.GetIter(out iter, path))
            {
                store.Remove(ref iter);
            }

            // Add the elements to the tree view.
            for (uint i = 0; i < elements.Length; ++i)
            {
                store.AppendValues(parent, elements[i]);
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Gets a Gtk.TreeIter for the node.
        /// </summary>
        /// <param name="iter">Receives the iterator to the node within the Gtk.TreeStore.</param>
        /// <param name="treeStore">The tree store containing reference to this node.</param>
        /// <returns><c>true</c>, if iter was successfully retrieved, or this node is the root, <c>false</c> otherwise.</returns>
        /// <remarks>If this is the root node, <paramref name="iter"/> contains Gtk.TreeIter.Zero. Caller must check for this.</remarks>
        internal bool GetIterForItem(out Gtk.TreeIter iter, Gtk.TreeStore treeStore)
        {
            iter = Gtk.TreeIter.Zero;
            var path   = new Gtk.TreePath();
            var node   = Model;
            var parent = Parent;

            while (parent != null)
            {
                var index = parent.IndexOfChild(node);
                path.PrependIndex(index);
                node   = parent;
                parent = node.Parent;
            }

            var succeeded = (path.Depth == 0) || treeStore.GetIter(out iter, path);

            return(succeeded);
        }
Ejemplo n.º 8
0
        public static void Load()
        {
            Style.Add <FormHandler>("MainWindow", h =>
            {
                if (!Global.UseHeaderBar)
                {
                    return;
                }

                h.Menu    = null;
                h.ToolBar = null;

                var builder   = new Gtk.Builder(null, "MainWindow.glade", null);
                var headerBar = new Gtk.Widget(builder.GetObject("headerbar").Handle);
                var separator = new Gtk.Widget(builder.GetObject("separator1").Handle);

                popovermenu1 = new Gtk.Widget(builder.GetObject("popovermenu1").Handle);
                popovermenu2 = new Gtk.Widget(builder.GetObject("popovermenu2").Handle);

                Gtk3Wrapper.gtk_window_set_titlebar(h.Control.Handle, headerBar.Handle);
                Gtk3Wrapper.gtk_header_bar_set_show_close_button(headerBar.Handle, true);

                Connect(builder.GetObject("new_button").Handle, MainWindow.Instance.cmdNew);
                Connect(builder.GetObject("save_button").Handle, MainWindow.Instance.cmdSave);
                Connect(builder.GetObject("build_button").Handle, MainWindow.Instance.cmdBuild, false);
                Connect(builder.GetObject("rebuild_button").Handle, MainWindow.Instance.cmdRebuild, false);
                Connect(builder.GetObject("cancel_button").Handle, MainWindow.Instance.cmdCancelBuild, false);
                Connect(builder.GetObject("open_other_button").Handle, MainWindow.Instance.cmdOpen);
                Connect(builder.GetObject("import_button").Handle, MainWindow.Instance.cmdImport);
                Connect(builder.GetObject("saveas_button").Handle, MainWindow.Instance.cmdSaveAs);
                Connect(builder.GetObject("undo_button").Handle, MainWindow.Instance.cmdUndo);
                Connect(builder.GetObject("redo_button").Handle, MainWindow.Instance.cmdRedo);
                Connect(builder.GetObject("close_button").Handle, MainWindow.Instance.cmdClose);
                Connect(builder.GetObject("clean_button").Handle, MainWindow.Instance.cmdClean);
                Connect(builder.GetObject("help_button").Handle, MainWindow.Instance.cmdHelp);
                Connect(builder.GetObject("about_button").Handle, MainWindow.Instance.cmdAbout);
                Connect(builder.GetObject("exit_button").Handle, MainWindow.Instance.cmdExit);
                Connect(builder.GetObject("debugmode_button").Handle, MainWindow.Instance.cmdDebugMode);

                MainWindow.Instance.cmdBuild.EnabledChanged += (sender, e) =>
                                                               separator.Visible = MainWindow.Instance.cmdBuild.Enabled || MainWindow.Instance.cmdCancelBuild.Enabled;
                MainWindow.Instance.cmdCancelBuild.EnabledChanged += (sender, e) =>
                                                                     separator.Visible = MainWindow.Instance.cmdBuild.Enabled || MainWindow.Instance.cmdCancelBuild.Enabled;

                MainWindow.Instance.TitleChanged += delegate
                {
                    var title    = MainWindow.TitleBase;
                    var subtitle = "";

                    if (PipelineController.Instance.ProjectOpen)
                    {
                        title    = (PipelineController.Instance.ProjectDirty) ? "*" : "";
                        title   += Path.GetFileName(PipelineController.Instance.ProjectItem.OriginalPath);
                        subtitle = Path.GetDirectoryName(PipelineController.Instance.ProjectItem.OriginalPath);
                    }

                    h.Control.Title = title;
                    Gtk3Wrapper.gtk_header_bar_set_subtitle(headerBar.Handle, subtitle);
                };

                var treeview1    = new Gtk.TreeView(builder.GetObject("treeview1").Handle);
                var store        = new Gtk.TreeStore(typeof(string), typeof(string));
                var column       = new Gtk.TreeViewColumn();
                var textCell     = new Gtk.CellRendererText();
                var dataCell     = new Gtk.CellRendererText();
                dataCell.Visible = false;
                column.PackStart(textCell, false);
                column.PackStart(dataCell, false);
                treeview1.AppendColumn(column);
                column.AddAttribute(textCell, "markup", 0);
                column.AddAttribute(dataCell, "text", 1);
                treeview1.Model = store;

                MainWindow.Instance.RecentChanged += (sender, e) =>
                {
                    store.Clear();
                    var recentList = sender as List <string>;

                    foreach (var project in recentList)
                    {
                        store.InsertWithValues(0, "<b>" + Path.GetFileName(project) + "</b>\n" +
                                               Path.GetDirectoryName(project), project);
                    }
                };

                treeview1.RowActivated += (o, args) =>
                {
                    popovermenu2.Hide();

                    Gtk.TreeIter iter;
                    if (!store.GetIter(out iter, args.Path))
                    {
                        return;
                    }

                    var project = store.GetValue(iter, 1).ToString();
                    PipelineController.Instance.OpenProject(project);
                };

                h.Control.ShowAll();
            });

            Style.Add <DialogHandler>("HeaderBar", h =>
            {
                var title     = h.Title;
                var headerBar = Gtk3Wrapper.gtk_header_bar_new();
                Gtk3Wrapper.gtk_window_set_titlebar(h.Control.Handle, headerBar);
                h.Title = title;

                if (h.AbortButton.Text == "Close")
                {
                    Gtk3Wrapper.gtk_header_bar_set_show_close_button(headerBar, true);
                    return;
                }

                var defButton = (Gtk.Button)h.DefaultButton.ControlObject;
                defButton.StyleContext.AddClass("suggested-action");

                Gtk3Wrapper.gtk_header_bar_pack_end(headerBar, defButton.Handle);
                Gtk3Wrapper.gtk_header_bar_pack_start(headerBar, ((Gtk.Button)h.AbortButton.ControlObject).Handle);
            });

            Style.Add <LabelHandler>("Wrap", h => h.Control.MaxWidthChars = 55);

            Style.Add <ToolBarHandler>("ToolBar", h =>
            {
                h.Control.ToolbarStyle = Gtk.ToolbarStyle.Icons;
                h.Control.IconSize     = Gtk.IconSize.SmallToolbar;
            });

            Style.Add <TreeViewHandler>("Scroll", h =>
            {
                var treeView = h.Control.Child as Gtk.TreeView;

                Gtk.TreeIter lastIter, iter;

                if (treeView.Model.GetIterFirst(out iter))
                {
                    do
                    {
                        lastIter = iter;
                    }while (treeView.Model.IterNext(ref iter));

                    var path = treeView.Model.GetPath(lastIter);
                    treeView.ScrollToCell(path, null, false, 0, 0);
                }
            });

            Style.Add <DrawableHandler>("Stretch", h =>
            {
                var parent = h.Control.Parent.Parent.Parent.Parent.Parent.Parent;

                parent.SizeAllocated += delegate
                {
                    var al   = h.Control.Allocation;
                    al.Width = parent.AllocatedWidth - 2;
                    h.Control.SetAllocation(al);
                };
            });

            Style.Add <PixelLayoutHandler>("Stretch", h =>
            {
                var parent = h.Control.Parent.Parent.Parent.Parent.Parent;

                parent.SizeAllocated += delegate
                {
                    var al   = h.Control.Allocation;
                    al.Width = parent.AllocatedWidth;
                    h.Control.SetAllocation(al);
                };
            });

            Style.Add <TextBoxHandler>("OverrideSize", h =>
            {
                h.Control.WidthChars = 0;
            });

            Style.Add <ScrollableHandler>("BuildOutput", h =>
            {
                var child = ((((h.Control.Child as Gtk.Viewport).Child as Gtk.VBox).Children[0] as Gtk.HBox).Children[0] as Gtk.Alignment).Child;
                var ok    = false;

                h.Control.SizeAllocated += delegate
                {
                    // Set Width of the Drawable
                    var al   = child.Allocation;
                    al.Width = h.Control.AllocatedWidth - 2;
                    if (BuildOutput.ReqWidth > al.Width)
                    {
                        al.Width = BuildOutput.ReqWidth;
                    }
                    child.SetAllocation(al);

                    if (PipelineSettings.Default.AutoScrollBuildOutput)
                    {
                        // Scroll to bottom
                        if (BuildOutput.Count == -1)
                        {
                            ok = false;
                        }

                        if (!ok)
                        {
                            var adj   = h.Control.Vadjustment;
                            adj.Value = adj.Upper - adj.PageSize;

                            if (adj.Upper >= BuildOutput.Count && BuildOutput.Count != -1)
                            {
                                ok = true;
                            }
                        }
                    }
                };
            });
        }
Ejemplo n.º 9
0
        public static void Load()
        {
            Style.Add <ApplicationHandler>("PipelineTool", h =>
            {
                Global.Application = h.Control;

                if (Gtk.Global.MajorVersion >= 3 && Gtk.Global.MinorVersion >= 16)
                {
                    Global.UseHeaderBar = Global.Application.PrefersAppMenu();
                }

                if (Global.UseHeaderBar)
                {
                    Global.Application.AppMenu = new GLib.MenuModel((new Gtk.Builder("AppMenu.glade")).GetObject("appmenu").Handle);
                }
            });

            Style.Add <FormHandler>("MainWindow", h =>
            {
                if (!Global.UseHeaderBar)
                {
                    return;
                }

                var builder   = new Gtk.Builder("MainWindow.glade");
                var headerBar = new Gtk.HeaderBar(builder.GetObject("headerbar").Handle);

                h.Menu    = null;
                h.ToolBar = null;

                Connect("new", MainWindow.Instance.cmdNew);
                Connect("open", MainWindow.Instance.cmdOpen);
                Connect("save", MainWindow.Instance.cmdSave);
                Connect("saveas", MainWindow.Instance.cmdSaveAs);
                Connect("import", MainWindow.Instance.cmdImport);
                Connect("close", MainWindow.Instance.cmdClose);
                Connect("help", MainWindow.Instance.cmdHelp);
                Connect("about", MainWindow.Instance.cmdAbout);
                Connect("quit", MainWindow.Instance.cmdExit);
                Connect("undo", MainWindow.Instance.cmdUndo);
                Connect("redo", MainWindow.Instance.cmdRedo);
                Connect("build", MainWindow.Instance.cmdBuild);
                Connect("rebuild", MainWindow.Instance.cmdRebuild);
                Connect("clean", MainWindow.Instance.cmdClean);
                Connect("cancel", MainWindow.Instance.cmdCancelBuild);

                var widget      = new Gtk.ModelButton(builder.GetObject("button_debug").Handle);
                widget.Active   = MainWindow.Instance.cmdDebugMode.Checked;
                widget.Clicked += (e, sender) =>
                {
                    var newstate = !PipelineSettings.Default.DebugMode;

                    widget.Active = newstate;
                    PipelineSettings.Default.DebugMode = newstate;
                };

                _accelGroup = new Gtk.AccelGroup();

                Connect(MainWindow.Instance.cmdNew, Gdk.Key.N, Gdk.ModifierType.ControlMask);
                Connect(MainWindow.Instance.cmdOpen, Gdk.Key.O, Gdk.ModifierType.ControlMask);
                Connect(MainWindow.Instance.cmdSave, Gdk.Key.S, Gdk.ModifierType.ControlMask);
                Connect(MainWindow.Instance.cmdExit, Gdk.Key.Q, Gdk.ModifierType.ControlMask);
                Connect(MainWindow.Instance.cmdUndo, Gdk.Key.Z, Gdk.ModifierType.ControlMask);
                Connect(MainWindow.Instance.cmdRedo, Gdk.Key.Y, Gdk.ModifierType.ControlMask);
                Connect(MainWindow.Instance.cmdBuild, Gdk.Key.F6);
                Connect(MainWindow.Instance.cmdHelp, Gdk.Key.F1);

                h.Control.AddAccelGroup(_accelGroup);

                _popovermenu1 = new Gtk.Widget(builder.GetObject("popovermenu1").Handle);
                _popovermenu2 = new Gtk.Widget(builder.GetObject("popovermenu2").Handle);

                h.Control.Titlebar        = headerBar;
                headerBar.ShowCloseButton = true;

                _buttonbox = new Gtk.Widget(builder.GetObject("build_buttonbox").Handle);
                _cancelbox = new Gtk.Widget(builder.GetObject("cancel_button").Handle);
                _separator = new Gtk.Widget(builder.GetObject("separator1").Handle);
                MainWindow.Instance.cmdBuild.EnabledChanged       += (sender, e) => ReloadBuildbox();
                MainWindow.Instance.cmdCancelBuild.EnabledChanged += (sender, e) => ReloadBuildbox();

                MainWindow.Instance.TitleChanged += delegate
                {
                    var title    = MainWindow.TitleBase;
                    var subtitle = "";

                    if (PipelineController.Instance.ProjectOpen)
                    {
                        title    = (PipelineController.Instance.ProjectDirty) ? "*" : "";
                        title   += Path.GetFileName(PipelineController.Instance.ProjectItem.OriginalPath);
                        subtitle = Path.GetDirectoryName(PipelineController.Instance.ProjectItem.OriginalPath);
                    }

                    h.Control.Title    = title;
                    headerBar.Subtitle = subtitle;
                };

                var treeview1    = new Gtk.TreeView(builder.GetObject("treeview1").Handle);
                var store        = new Gtk.TreeStore(typeof(string), typeof(string));
                var column       = new Gtk.TreeViewColumn();
                var textCell     = new Gtk.CellRendererText();
                var dataCell     = new Gtk.CellRendererText();
                dataCell.Visible = false;
                column.PackStart(textCell, false);
                column.PackStart(dataCell, false);
                treeview1.AppendColumn(column);
                column.AddAttribute(textCell, "markup", 0);
                column.AddAttribute(dataCell, "text", 1);
                treeview1.Model = store;

                MainWindow.Instance.RecentChanged += (sender, e) =>
                {
                    store.Clear();
                    var recentList = sender as List <string>;

                    foreach (var project in recentList)
                    {
                        store.InsertWithValues(0, "<b>" + Path.GetFileName(project) + "</b>\n" +
                                               Path.GetDirectoryName(project), project);
                    }
                };

                treeview1.RowActivated += (o, args) =>
                {
                    _popovermenu2.Hide();

                    Gtk.TreeIter iter;
                    if (!store.GetIter(out iter, args.Path))
                    {
                        return;
                    }

                    var project = store.GetValue(iter, 1).ToString();
                    PipelineController.Instance.OpenProject(project);
                };

                headerBar.Show();
            });

            Style.Add <ButtonHandler>("Destuctive", h => h.Control.StyleContext.AddClass("destructive-action"));

            Style.Add <LabelHandler>("Wrap", h => h.Control.MaxWidthChars = 55);

            Style.Add <ToolBarHandler>("ToolBar", h =>
            {
                h.Control.ToolbarStyle = Gtk.ToolbarStyle.Icons;
                h.Control.IconSize     = Gtk.IconSize.SmallToolbar;
            });

            Style.Add <DrawableHandler>("Stretch", h =>
            {
                var parent = h.Control.Parent.Parent.Parent.Parent.Parent.Parent;

                parent.SizeAllocated += delegate
                {
                    var al   = h.Control.Allocation;
                    al.Width = parent.AllocatedWidth - 2;
                    h.Control.SetAllocation(al);
                };
            });

            Style.Add <PixelLayoutHandler>("Stretch", h =>
            {
                var parent = h.Control.Parent.Parent.Parent.Parent.Parent;

                parent.SizeAllocated += delegate
                {
                    var al   = h.Control.Allocation;
                    al.Width = parent.AllocatedWidth;
                    h.Control.SetAllocation(al);
                };
            });
        }
 void TreeviewTemplates_RowActivated(object o, Gtk.RowActivatedArgs args)
 {
     Gtk.TreeIter iter;
     store.GetIter(out iter, args.Path);
     headerText.Buffer.InsertAtCursor((string)store.GetValue(iter, 0));
 }
Ejemplo n.º 11
0
        protected virtual void OnAddUserButtonClicked(object sender, System.EventArgs e)
        {
            Gtk.TreeIter iter;

            Gtk.TreePath[] path_array = otherUsersTreeview.Selection.GetSelectedRows();

            llum.Core core = llum.Core.getCore();

            System.Collections.Generic.List <string> ret_list  = new System.Collections.Generic.List <string>();
            System.Collections.Generic.List <string> user_list = new System.Collections.Generic.List <string>();

            foreach (Gtk.TreePath path in path_array)
            {
                available_users_store.GetIter(out iter, path);
                bool ok = true;

                foreach (LdapGroup grp in group_list)
                {
                    if ((string)available_users_store.GetValue(iter, 0) == grp.gid)
                    {
                        ok = false;
                    }
                }
                if (ok)
                {
                    if (!opened_group.member_list.Contains((string)available_users_store.GetValue(iter, 0)))
                    {
                        //LDAP OPERATION HERE

                        string return_str = core.xmlrpc.add_to_group((string)available_users_store.GetValue(iter, 0), opened_group.gid);
                        ret_list.Add(return_str);

                        user_list.Add((string)available_users_store.GetValue(iter, 0));

                        /////////////////////
                        if (return_str == "true")
                        {
                            opened_group.member_list.Add((string)available_users_store.GetValue(iter, 0));
                        }
                    }
                }
            }
            populate_others_treeview();
            populate_users_treeview();

            string err         = "";
            bool   error_found = false;
            int    count       = 0;

            foreach (string str in ret_list)
            {
                if (!str.Contains("true"))
                {
                    error_found = true;


                    int    count2 = 0;
                    string user   = "";
                    foreach (string str2 in user_list)
                    {
                        if (count2 == count)
                        {
                            user = str2;
                            break;
                        }
                        count2++;
                    }
                    err += user + ": " + str + "\n";
                }
                count++;
            }

            if (!error_found)
            {
                msgLabel.Markup = "<b>" + Mono.Unix.Catalog.GetString("Users were added to this group successfully") + "</b>";
            }
            else
            {
                string msg = "<span foreground='red'>" + Mono.Unix.Catalog.GetString("The following errors were returned: ") + err + "</span>";

                msgLabel.Markup = msg;
            }
        }