Пример #1
0
        private void Build()
        {
            this.Title = "Spritefont Editor";
            this.Width = 600;
            this.Height = 480;
            this.Icon = Xwt.Drawing.Image.FromResource("Resources.icon.png");

            menu1 = new Menu ();

            MenuItem fileMenuItem = new MenuItem ("File");
            Menu fileMenu = new Menu ();

            menuitem_new = new MenuItem ("New");
            fileMenu.Items.Add (menuitem_new);

            menuitem_open = new MenuItem ("Open");
            fileMenu.Items.Add (menuitem_open);

            fileMenu.Items.Add(new SeparatorMenuItem());

            menuitem_save = new MenuItem ("Save");
            fileMenu.Items.Add (menuitem_save);

            menuitem_saveas = new MenuItem ("Save As");
            fileMenu.Items.Add (menuitem_saveas);

            fileMenu.Items.Add(new SeparatorMenuItem());

            menuitem_exit = new MenuItem ("Exit");
            fileMenu.Items.Add (menuitem_exit);

            fileMenuItem.SubMenu = fileMenu;
            menu1.Items.Add (fileMenuItem);

            if (Settings.SuportedPlatformToolkits.Length > 1)
            {
                menuitem_toolkit = new MenuItem("Toolkit");
                var toolKitMenu = new Menu();

                foreach (var t in Settings.SuportedPlatformToolkits)
                {
                    var m = new RadioButtonMenuItem(t.ToString());
                    m.Checked = (t == Settings.GetToolkit());
                    m.Clicked += ToolKitClicked;
                    m.Tag = t;
                    toolKitMenu.Items.Add(m);
                }

                menuitem_toolkit.SubMenu = toolKitMenu;
                menu1.Items.Add(menuitem_toolkit);
            }

            this.MainMenu = menu1;

            sfwidget1 = new SFWidget();
            this.Content = sfwidget1;
            this.Padding = 0;

            this.menuitem_new.Clicked += NewClicked;
            this.menuitem_open.Clicked += OpenClicked;
            this.menuitem_save.Clicked += SaveClicked;
            this.menuitem_saveas.Clicked += (sender, e) => SaveAs();
            this.menuitem_exit.Clicked += (sender, e) => Application.Exit();
        }
Пример #2
0
        protected override void OnButtonPressed(ButtonEventArgs args)
        {
            base.OnButtonPressed(args);

            if (scanCollection == null) {
                return;
            }

            switch (args.Button) {
            case PointerButton.Left:
                if (args.MultiplePress >= 2) {
                    TreePosition selected = SelectedRow;
                    if (selected != null) {
                        string scanName = (DataSource as TreeStore).GetNavigatorAt(selected)
                            .GetValue(isFiltered ? nameColFilter : nameCol);
                        Image thumbnail = (DataSource as TreeStore).GetNavigatorAt(selected)
                            .GetValue(isFiltered ? thumbnailColFilter : thumbnailCol);
                        BaseScan scan = scanCollection.Find(((BaseScan obj) => obj.Name == scanName));

                        if (scan != null) {
                            MetadataDialog metaDialog = new MetadataDialog(scan, thumbnail);
                            Command r = metaDialog.Run();

                            if (r != null && r.Id == Command.Apply.Id) {
                                metaDialog.Save();
                            }

                            metaDialog.Dispose();

                        }
                    }
                }
                break;
            case PointerButton.Right:
                contextMenuFibertype.Items.Clear();

                TreeStore currentStore = DataSource as TreeStore;
                string currentFiberType;
                if (SelectedRow != null && currentStore != null) {
                    TreeNavigator row = currentStore.GetNavigatorAt(SelectedRow);

                    string name = row.GetValue(isFiltered ? nameColFilter : nameCol);
                    currentFiberType = scanCollection.Find(o => o.Name == name).FiberType;

                    foreach (string typeName in fiberTypeNodes.Keys) {
                        RadioButtonMenuItem radioButton = new RadioButtonMenuItem(typeName);
                        if (typeName == currentFiberType) {
                            radioButton.Checked = true;
                        }

                        radioButton.Clicked += delegate(object sender, EventArgs e) {
                            RadioButtonMenuItem r = sender as RadioButtonMenuItem;
                            if (r == null) {
                                return;
                            }

                            List<BaseScan> foundScan = new List<BaseScan>();
                            foreach (TreePosition x in SelectedRows) {
                                if (r != null) {
                                    string n = currentStore.GetNavigatorAt(x)
                                        .GetValue(isFiltered ? nameColFilter : nameCol);
                                    BaseScan found = scanCollection.Find(o => o.Name == n);
                                    if (found != null) {
                                        foundScan.Add(found);
                                    }
                                }
                            }

                            foreach (BaseScan found in foundScan) {
                                found.FiberType = r.Label;
                            }
                        };

                        contextMenuFibertype.Items.Add(radioButton);
                    }

                    // other fibertype
                    MenuItem otherFibertype = new MenuItem { Label = "Other..." };
                    contextMenuFibertype.Items.Add(new SeparatorMenuItem());
                    contextMenuFibertype.Items.Add(otherFibertype);
                    otherFibertype.Clicked += delegate {
                        Dialog d = new Dialog();
                        d.Title = "Change fiber type to...";
                        d.Buttons.Add(new DialogButton(Command.Apply));
                        d.Buttons.Add(new DialogButton(Command.Cancel));

                        TextEntry newFiberType = new TextEntry { PlaceholderText = "Fiber type name" };
                        d.Content = newFiberType;

                        Command ret = d.Run();
                        if (ret != null && ret.Id == Command.Apply.Id) {
                            List<BaseScan> foundScan = new List<BaseScan>();
                            foreach (TreePosition x in SelectedRows) {
                                string n = currentStore.GetNavigatorAt(x)
                                        .GetValue(isFiltered ? nameColFilter : nameCol);
                                BaseScan found = scanCollection.Find(o => o.Name == n);
                                if (found != null) {
                                    foundScan.Add(found);
                                }
                            }

                            foreach (BaseScan found in foundScan) {
                                found.FiberType = newFiberType.Text;
                            }
                        }

                        d.Dispose();
                    };

                    contextMenu.Popup();
                }
                break;
            }
        }
Пример #3
0
        /// <summary>
        /// Initializes the user inferface
        /// </summary>
        private void InitializeUI()
        {
            // restore last window size and location
            Location = new Point(
                Settings.Default.WindowLocationX,
                Settings.Default.WindowLocationY
            );

            Size = new Size(
                Settings.Default.WindowSizeWidth,
                Settings.Default.WindowSizeHeight
            );

            // set window preference
            Title = "BAIMP";

            // file menu
            var fileMenu = new MenuItem("_File");
            fileMenu.SubMenu = new Menu();

            MenuItem menuNew = new MenuItem("_New...");
            menuNew.Clicked += (object sender, EventArgs e) => project.NewDialog();
            fileMenu.SubMenu.Items.Add(menuNew);

            MenuItem menuOpen = new MenuItem("_Open...");
            menuOpen.Clicked += delegate {
                if (!project.OpenDialog() && !string.IsNullOrEmpty(project.ErrorMessage)) {
                    MessageDialog.ShowMessage ("Error while opening the file", project.ErrorMessage);
                    project.ErrorMessage = null;
                }
            };
            fileMenu.SubMenu.Items.Add(menuOpen);

            if (Settings.Default.LastOpenedProjects != null) {
                MenuItem menuLastOpened = new MenuItem("Recently opened");
                menuLastOpened.SubMenu = new Menu();
                fileMenu.SubMenu.Items.Add(menuLastOpened);

                for (int i = Settings.Default.LastOpenedProjects.Count-1; i >= 0; i--) {
                    string path = Settings.Default.LastOpenedProjects[i];

                    MenuItem menuLastOpenedi = new MenuItem(path);
                    menuLastOpenedi.Clicked += delegate(object sender, EventArgs e) {
                        if (!project.Open(path) && !string.IsNullOrEmpty(project.ErrorMessage)) {
                            MessageDialog.ShowMessage ("Error while opening the file", project.ErrorMessage);
                            project.ErrorMessage = null;
                        }
                    };

                    menuLastOpened.SubMenu.Items.Add(menuLastOpenedi);
                }
            }

            fileMenu.SubMenu.Items.Add(new SeparatorMenuItem());

            MenuItem menuImport = new MenuItem("_Import...");
            menuImport.Clicked += (object sender, EventArgs e) => project.ImportDialog();
            fileMenu.SubMenu.Items.Add(menuImport);

            MenuItem menuSave = new MenuItem("_Save");
            menuSave.Clicked += (object sender, EventArgs e) => SaveAll();
            fileMenu.SubMenu.Items.Add(menuSave);

            fileMenu.SubMenu.Items.Add(new SeparatorMenuItem());

            MenuItem menuClose = new MenuItem("_Exit");
            menuClose.Clicked += (object sender, EventArgs e) => Close();
            fileMenu.SubMenu.Items.Add(menuClose);

            // View menu
            MenuItem viewMenu = new MenuItem("_View");
            viewMenu.SubMenu = new Menu();
            RadioButtonMenuItemGroup viewRadioGroup = new RadioButtonMenuItemGroup();
            RadioButtonMenuItem menuViewOverview = new RadioButtonMenuItem("Overview");
            menuViewOverview.Checked = true;
            menuViewOverview.Group = viewRadioGroup;
            viewMenu.SubMenu.Items.Add(menuViewOverview);

            RadioButtonMenuItem menuViewPipeline = new RadioButtonMenuItem("Pipeline");
            menuViewPipeline.Group = menuViewOverview.Group;
            viewMenu.SubMenu.Items.Add(menuViewPipeline);

            menuViewOverview.Clicked += delegate {
                splitMain_Status.Remove(pipelineShelf);
                splitScan_Pipeline.Panel2.Content = pipelineShelf;
                splitMain_Status.PackStart(splitScan_Pipeline, true, true);
            };
            menuViewPipeline.Clicked += delegate {
                splitScan_Pipeline.Panel2.Content = null;
                splitMain_Status.Remove(splitScan_Pipeline);
                splitMain_Status.PackStart(pipelineShelf, true, true);
            };

            // Edit menu
            MenuItem editMenu = new MenuItem("_Edit");
            editMenu.SubMenu = new Menu();
            MenuItem menuWorksheetRename = new MenuItem("_Rename worksheet...");
            editMenu.SubMenu.Items.Add(menuWorksheetRename);
            menuWorksheetRename.Clicked += (object sender, EventArgs e) => pipelineController.RenameCurrentWorksheetDialog();

            // Pipeline menu
            MenuItem pipelineMenu = new MenuItem("_Pipeline");
            pipelineMenu.SubMenu = new Menu();

            MenuItem menuExecute = new MenuItem("_Execute");
            menuExecute.Clicked += (object sender, EventArgs e) => pipelineController.CurrentPipeline.Execute(project);
            pipelineMenu.SubMenu.Items.Add(menuExecute);

            pipelineMenu.SubMenu.Items.Add(new SeparatorMenuItem());

            MenuItem menuExport = new MenuItem("Export");
            menuExport.SubMenu = new Menu();
            pipelineMenu.SubMenu.Items.Add(menuExport);

            Type exporterType = typeof(BaseExporter);
            IEnumerable<Type> exporter = AppDomain.CurrentDomain.GetAssemblies()
                .SelectMany(s => s.GetTypes())
                .Where(t => t.BaseType == exporterType);

            foreach (Type export in exporter) {
                MenuItem ni = new MenuItem(string.Format("As {0}...", export.Name));
                ni.Tag = export.Name;
                menuExport.SubMenu.Items.Add(ni);
                var lExport = export;
                ni.Clicked += delegate(object sender, EventArgs e) {
                    MenuItem s = sender as MenuItem;

                    if (s != null) {
                        if (exporterList.ContainsKey(s.Tag.ToString())) {
                            exporterList[s.Tag.ToString()].ShowDialog(pipelineController.CurrentPipeline.Nodes);
                        } else {
                            BaseExporter instance =
                                Activator.CreateInstance(lExport, pipelineController.CurrentPipeline.PipelineName) as BaseExporter;
                            if (instance != null) {
                                exporterList[s.Tag.ToString()] = instance;
                                instance.ShowDialog(pipelineController.CurrentPipeline.Nodes);
                            }
                        }
                    }
                };
            }

            // Extras menu
            MenuItem extrasMenu = new MenuItem("E_xtras");
            extrasMenu.SubMenu = new Menu();
            MenuItem menuResetAllMasks = new MenuItem("_Reset all masks");
            menuResetAllMasks.Clicked += delegate {
                foreach (BaseScan scan in project.scanCollection) {
                    scan.Mask.ResetMask();
                }
            };
            MenuItem menuExportLog = new MenuItem("Export _logs");
            menuExportLog.Clicked += delegate {
                SaveFileDialog d = new SaveFileDialog("Export logs");
                if (d.Run()) {
                    string filename = d.FileName;
                    if (!string.IsNullOrEmpty(filename)) {
                        System.IO.File.WriteAllText(filename, Log.ToText());
                    }
                }
                d.Dispose();
            };

            extrasMenu.SubMenu.Items.Add(menuResetAllMasks);
            extrasMenu.SubMenu.Items.Add(menuExportLog);

            // main menu
            Menu menu = new Menu();
            menu.Items.Add(fileMenu);
            menu.Items.Add(viewMenu);
            menu.Items.Add(editMenu);
            menu.Items.Add(pipelineMenu);
            menu.Items.Add(extrasMenu);
            MainMenu = menu;

            // initialize preview widget
            preview = new Preview();

            // load tree view with all available files
            fileTree = new FileTreeView();
            VBox splitFileTreeSearch_FileTree = new VBox();
            splitFileTreeSearch_FileTree.PackStart(new FileTreeFilter(fileTree));
            splitFileTreeSearch_FileTree.PackStart(fileTree, true);

            // load pipeline controller
            pipelineShelf = new VBox();
            pipelineController = new PipelineController(project, pipelineShelf);

            splitFiletree_Preview = new HPaned();
            splitFiletree_Preview.Panel1.Content = splitFileTreeSearch_FileTree;
            splitFiletree_Preview.Panel1.Shrink = true;
            fileTree.HorizontalScrollPolicy = ScrollPolicy.Never;
            splitFiletree_Preview.Panel2.Content = preview;
            splitFiletree_Preview.Panel2.Resize = true;

            splitController_Preview = new VBox();
            //splitController_Preview.PackStart(controllbarShelf, false, false);
            splitController_Preview.PackEnd(splitFiletree_Preview, true, true);

            splitScan_Pipeline = new VPaned();
            splitScan_Pipeline.Panel1.Content = splitController_Preview;
            splitScan_Pipeline.Panel2.Content = pipelineShelf;
            splitScan_Pipeline.Panel2.Resize = true;

            splitMain_Status = new VBox();
            splitMain_Status.PackStart(splitScan_Pipeline, true, true);
            splitMain_Status.PackEnd(new StatusBar());

            Content = splitMain_Status;
        }