Ejemplo n.º 1
0
        private static void PlatformInit()
        {
            Linux  = true;
            _theme = IconTheme.Default;

            var iconMissing = _theme.LoadIcon("dialog-error", 16, 0);
            var file        = _theme.LoadIcon("text-x-generic", 16, 0);
            var fileMissing = file.Copy();

            iconMissing.Composite(fileMissing, 8, 8, 8, 8, 8, 8, 0.5, 0.5, Gdk.InterpType.Tiles, 255);
            var folder        = _theme.LoadIcon("folder", 16, 0);
            var folderMissing = folder.Copy();

            iconMissing.Composite(folderMissing, 8, 8, 8, 8, 8, 8, 0.5, 0.5, Gdk.InterpType.Tiles, 255);

            _files["."]    = ToEtoImage(file);
            _fileMissing   = ToEtoImage(fileMissing);
            _folder        = ToEtoImage(folder);
            _folderMissing = ToEtoImage(folderMissing);

            _xwtFiles["."]    = ToXwtImage(file);
            _xwtFileMissing   = ToXwtImage(fileMissing);
            _xwtFolder        = ToXwtImage(folder);
            _xwtFolderMissing = ToXwtImage(folderMissing);

            if (Gtk.Global.MajorVersion >= 3 && Gtk.Global.MinorVersion >= 16)
            {
                _app = new Application(null, GLib.ApplicationFlags.None);
                _app.Register(GLib.Cancellable.Current);

                UseHeaderBar = Gtk3Wrapper.gtk_application_prefers_app_menu(_app.Handle);
            }
        }
Ejemplo n.º 2
0
        private static void PlatformInit()
        {
            Linux  = true;
            _theme = IconTheme.Default;

            try
            {
                _iconMissing = _theme.LoadIcon("dialog-error", 16, 0);
            }
            catch
            {
                _iconMissing = new Gdk.Pixbuf(null, "TreeView.Missing.png");
            }

            if (Gtk.Global.MajorVersion >= 3 && Gtk.Global.MinorVersion >= 16)
            {
                _app = new Gtk.Application(null, GLib.ApplicationFlags.None);
                _app.Register(GLib.Cancellable.Current);

                UseHeaderBar = Gtk3Wrapper.gtk_application_prefers_app_menu(_app.Handle);
            }
        }
Ejemplo n.º 3
0
        public static void Load()
        {
            Style.Add <ApplicationHandler>("PipelineTool", h =>
            {
                Global.ApplicationHandle = h.Control.Handle;

                if (Gtk.Global.MajorVersion >= 3 && Gtk.Global.MinorVersion >= 16)
                {
                    Global.UseHeaderBar = Gtk3Wrapper.gtk_application_prefers_app_menu(h.Control.Handle);
                }

                if (Global.UseHeaderBar)
                {
                    Gtk3Wrapper.gtk_application_set_app_menu(h.Control.Handle, (new Gtk.Builder("MainWindow.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.Widget(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);

                _actionGroup = Gtk3Wrapper.gtk_accel_group_new();

                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);

                Gtk3Wrapper.gtk_window_add_accel_group(h.Control.Handle, _actionGroup);

                _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);

                _mainbutton = new Gtk.RadioButton("");
                RejectActive(builder.GetObject("build_button").Handle);
                RejectActive(builder.GetObject("rebuild_button").Handle);
                RejectActive(builder.GetObject("clean_button").Handle);

                _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;
                    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);
                };

                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);
                };
            });
        }