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