예제 #1
0
        void exportAMF_Click(object sender, EventArgs mouseEvent)
        {
            UiThread.RunOnIdle((state) =>
            {
                SaveFileDialogParams saveParams = new SaveFileDialogParams("Save as AMF|*.amf", initialDirectory: documentsPath);
                saveParams.Title             = "MatterControl: Export File";
                saveParams.ActionButtonLabel = "Export";
                saveParams.FileName          = printItemWrapper.Name;

                Close();
                FileDialog.SaveFileDialog(saveParams, onExportAmfFileSelected);
            });
        }
예제 #2
0
        private void exportSTL_Click(object sender, EventArgs mouseEvent)
        {
            UiThread.RunOnIdle(() =>
            {
                SaveFileDialogParams saveParams = new SaveFileDialogParams("Save as STL|*.stl");
                saveParams.Title             = "MatterControl: Export File";
                saveParams.ActionButtonLabel = "Export";
                saveParams.FileName          = printItemWrapper.Name;

                Close();
                FileDialog.SaveFileDialog(saveParams, onExportStlFileSelected);
            });
        }
 private void outputScad_Click(object sender, EventArgs e)
 {
     if (previousRender != null)
     {
         SaveFileDialogParams saveParams = new SaveFileDialogParams("Text files (*.scad)|*.scad");
         FileDialog.SaveFileDialog(saveParams, (streamToSaveTo) =>
         {
             if (streamToSaveTo != null)
             {
                 OpenSCadOutput.Save(previousRender, streamToSaveTo.FileName);
             }
         });
     }
 }
 private void OutputScad_Click(object sender, EventArgs e)
 {
     if (rootUnion != null)
     {
         SaveFileDialogParams saveParams = new SaveFileDialogParams("Text files (*.scad)|*.scad");
         FileDialog.SaveFileDialog(saveParams, (streamToSaveTo) =>
         {
             if (streamToSaveTo != null)
             {
                 OpenSCadOutput.Save(rootUnion, streamToSaveTo.FileName);//"c:/output.scad")
             }
         });
     }
 }
예제 #5
0
        string IFileDialogs.SaveFileDialog(SaveFileDialogParams p)
        {
            var dlg = new NSSavePanel();

            dlg.Title = p.Title ?? "Save";
            if (p.SuggestedFileName != null)
            {
                dlg.NameFieldStringValue = p.SuggestedFileName;
            }
            if (dlg.RunModal() == 1)
            {
                return(dlg.Url.Path);
            }
            return(null);
        }
예제 #6
0
        void DoExportSTL_Click(object state)
        {
            SaveFileDialogParams saveParams = new SaveFileDialogParams("Save as STL|*.stl");

            saveParams.Title             = "MatterControl: Export File";
            saveParams.ActionButtonLabel = "Export";

            System.IO.Stream streamToSaveTo = FileDialog.SaveFileDialog(ref saveParams);
            if (streamToSaveTo != null)
            {
                streamToSaveTo.Close();
                Close();
                File.Copy(printQueueItem.printItem.FileLocation, saveParams.FileName, true);
                ShowFileIfRequested(saveParams.FileName);
            }
        }
        public override bool SaveFileDialog(SaveFileDialogParams saveParams, Action <SaveFileDialogParams> callback)
        {
            WidgetForWindowsFormsAbstract.MainWindowsFormsWindow.ShowingSystemDialog = true;

            Gtk.FileChooserDialog fc =
                new Gtk.FileChooserDialog(saveParams.Title,
                                          null,
                                          FileChooserAction.Save,
                                          "Cancel", ResponseType.Cancel,
                                          "Save", ResponseType.Accept);

            Gtk.FileFilter filter = new Gtk.FileFilter();
            filter.Name = saveParams.Filter.Split('|')[0];
            string[] extensions = saveParams.Filter.Split('|')[1].Split(';');
            foreach (string e in extensions)
            {
                filter.AddPattern(e.ToLower());
            }
            fc.AddFilter(filter);

            //Set default filename and add file extension
            fc.CurrentName = saveParams.FileName + extensions[0].TrimStart('*');
            fc.SetCurrentFolder(saveParams.InitialDirectory);

            Gtk.Application.Init();

            if (fc.Run() == (int)ResponseType.Accept)
            {
                saveParams.FileName = fc.Filename;
                UiThread.RunOnIdle(() =>
                {
                    callback(saveParams);
                });
            }

            fc.Destroy();
            while (Gtk.Application.EventsPending())
            {
                Gtk.Main.Iteration();
            }

            WidgetForWindowsFormsAbstract.MainWindowsFormsWindow.ShowingSystemDialog = false;

            return(true);
        }
예제 #8
0
        void createPatrsSheetsButton_Click(object sender, MouseEventArgs mouseEvent)
        {
            List <PrintItem> parts = PrintQueueControl.Instance.CreateReadOnlyPartList();

            SaveFileDialogParams saveParams = new SaveFileDialogParams("Save Parts Sheet|*.pdf");

            System.IO.Stream streamToSaveTo = FileDialog.SaveFileDialog(ref saveParams);
            if (streamToSaveTo != null)
            {
                string partFileName = saveParams.FileName;

                if (!partFileName.StartsWith("" + Path.DirectorySeparatorChar))
                {
                    partFileName = Path.DirectorySeparatorChar + partFileName;
                }

                PartsSheet currentPartsInQueue = new PartsSheet(parts, partFileName);
                currentPartsInQueue.SaveSheets();
            }
        }
예제 #9
0
		private void onExportLogFileSelected(SaveFileDialogParams saveParams)
		{
			if (saveParams.FileName != null)
			{
				string filePathToSave = saveParams.FileName;
				if (filePathToSave != null && filePathToSave != "")
				{
					try
					{
						textScrollWidget.WriteToFile(filePathToSave);
					}
					catch(UnauthorizedAccessException e)
					{
						PrinterOutputCache.Instance.PrinterLines.Add("");
						PrinterOutputCache.Instance.PrinterLines.Add(writeFaildeWaring);
						PrinterOutputCache.Instance.PrinterLines.Add(cantAccessPath.FormatWith(filePathToSave));
						PrinterOutputCache.Instance.PrinterLines.Add("");
					}
				}
			}
		}
예제 #10
0
 private void SaveStl(SaveFileDialogParams saveParams)
 {
     try
     {
         if (!string.IsNullOrEmpty(saveParams.FileName))
         {
             string filePathToSave = saveParams.FileName;
             if (filePathToSave != null && filePathToSave != "")
             {
                 string extension = Path.GetExtension(filePathToSave);
                 if (extension == "")
                 {
                     File.Delete(filePathToSave);
                     filePathToSave += ".stl";
                 }
                 if (Path.GetExtension(printItemWrapper.FileLocation).ToUpper() == Path.GetExtension(filePathToSave).ToUpper())
                 {
                     File.Copy(printItemWrapper.FileLocation, filePathToSave, true);
                 }
                 else
                 {
                     List <MeshGroup> meshGroups = MeshFileIo.Load(printItemWrapper.FileLocation);
                     if (!MeshFileIo.Save(meshGroups, filePathToSave))
                     {
                         UiThread.RunOnIdle(() => {
                             StyledMessageBox.ShowMessageBox(null, "AMF to STL conversion failed", "Couldn't save file".Localize());
                         });
                     }
                 }
                 ShowFileIfRequested(filePathToSave);
             }
         }
     }
     catch (Exception e)
     {
         UiThread.RunOnIdle(() => {
             StyledMessageBox.ShowMessageBox(null, e.Message, "Couldn't save file".Localize());
         });
     }
 }
        public override bool SaveFileDialog(SaveFileDialogParams saveParams, Action <SaveFileDialogParams> callback)
        {
            WidgetForWindowsFormsAbstract.MainWindowsFormsWindow.ShowingSystemDialog = true;
            SaveFileDialogParams SaveFileDialogDialogParams = saveParams;

            SaveFileDialog saveFileDialog1 = new SaveFileDialog();

            saveFileDialog1.InitialDirectory = SaveFileDialogDialogParams.InitialDirectory;
            saveFileDialog1.Filter           = saveParams.Filter;
            saveFileDialog1.FilterIndex      = saveParams.FilterIndex;
            saveFileDialog1.RestoreDirectory = true;
            saveFileDialog1.AddExtension     = true;
            saveFileDialog1.FileName         = saveParams.FileName;

            saveFileDialog1.Title           = saveParams.Title;
            saveFileDialog1.ShowHelp        = false;
            saveFileDialog1.OverwritePrompt = true;
            saveFileDialog1.CheckPathExists = true;
            saveFileDialog1.SupportMultiDottedExtensions = true;
            saveFileDialog1.ValidateNames = false;

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                SaveFileDialogDialogParams.FileName = saveFileDialog1.FileName;
            }
            else
            {
                SaveFileDialogDialogParams.FileName = null;
            }

            WidgetForWindowsFormsAbstract.MainWindowsFormsWindow.ShowingSystemDialog = false;

            UiThread.RunOnIdle(() =>
            {
                callback(saveParams);
            });

            return(true);
        }
예제 #12
0
        void onExportGcodeFileSelected(SaveFileDialogParams saveParams)
        {
            if (saveParams.FileName != null)
            {
                gcodePathAndFilenameToSave = saveParams.FileName;
                string extension = Path.GetExtension(gcodePathAndFilenameToSave);
                if (extension == "")
                {
                    File.Delete(gcodePathAndFilenameToSave);
                    gcodePathAndFilenameToSave += ".gcode";
                }

                string sourceExtension = Path.GetExtension(printItemWrapper.FileLocation).ToUpper();
                if (MeshFileIo.ValidFileExtensions().Contains(sourceExtension))
                {
                    SlicingQueue.Instance.QueuePartForSlicing(printItemWrapper);
                    printItemWrapper.SlicingDone.RegisterEvent(sliceItem_Done, ref unregisterEvents);
                }
                else if (partIsGCode)
                {
                    SaveGCodeToNewLocation(printItemWrapper.FileLocation, gcodePathAndFilenameToSave);
                }
            }
        }
        void DoExportGCode_Click(object state)
        {
            SaveFileDialogParams saveParams = new SaveFileDialogParams("Export GCode|*.gcode", title: "Export GCode");

            saveParams.Title             = "MatterControl: Export File";
            saveParams.ActionButtonLabel = "Export";

            System.IO.Stream streamToSaveTo = FileDialog.SaveFileDialog(ref saveParams);
            if (streamToSaveTo != null)
            {
                streamToSaveTo.Close();


                string filePathToSave = saveParams.FileName;
                string extension      = GetExtension(filePathToSave);

                if (extension == "")
                {
                    File.Delete(filePathToSave);
                    filePathToSave += ".gcode";
                }

                if (System.IO.Path.GetExtension(printQueueItem.printItem.FileLocation).ToUpper() == ".STL")
                {
                    pathAndFilenameToSave = saveParams.FileName;
                    Close();
                    SlicingQueue.Instance.QueuePartForSlicing(printQueueItem.printItem);
                    printQueueItem.printItem.Done += new EventHandler(sliceItem_Done);
                }
                else if (partIsGCode)
                {
                    Close();
                    SaveGCodeToNewLocation(printQueueItem.printItem.FileLocation, saveParams.FileName);
                }
            }
        }
예제 #14
0
 private async void onExportStlFileSelected(SaveFileDialogParams saveParams)
 {
     await Task.Run(() => SaveStl(saveParams));
 }
        //Opens Save file dialog and outputs current queue as a project
        public void SaveAs()
        {
            SaveFileDialogParams saveParams = new SaveFileDialogParams("Save Project|*.zip");

            FileDialog.SaveFileDialog(saveParams, onSaveFileSelected);
        }
예제 #16
0
        public void CreateWindowContent()
        {
            this.RemoveAllChildren();
            TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory();
            FlowLayoutWidget       topToBottom            = new FlowLayoutWidget(FlowDirection.TopToBottom);

            topToBottom.Padding = new BorderDouble(3, 0, 3, 5);
            topToBottom.AnchorAll();

            // Creates Header
            FlowLayoutWidget headerRow = new FlowLayoutWidget(FlowDirection.LeftToRight);

            headerRow.HAnchor = HAnchor.ParentLeftRight;
            headerRow.Margin  = new BorderDouble(0, 3, 0, 0);
            headerRow.Padding = new BorderDouble(0, 3, 0, 3);
            BackgroundColor   = ActiveTheme.Instance.PrimaryBackgroundColor;

            //Creates Text and adds into header
            {
                TextWidget elementHeader = new TextWidget("File export options:".Localize(), pointSize: 14);
                elementHeader.TextColor = ActiveTheme.Instance.PrimaryTextColor;
                elementHeader.HAnchor   = HAnchor.ParentLeftRight;
                elementHeader.VAnchor   = Agg.UI.VAnchor.ParentBottom;

                headerRow.AddChild(elementHeader);
                topToBottom.AddChild(headerRow);
            }

            // Creates container in the middle of window
            FlowLayoutWidget middleRowContainer = new FlowLayoutWidget(FlowDirection.TopToBottom);

            {
                middleRowContainer.HAnchor         = HAnchor.ParentLeftRight;
                middleRowContainer.VAnchor         = VAnchor.ParentBottomTop;
                middleRowContainer.Padding         = new BorderDouble(5);
                middleRowContainer.BackgroundColor = ActiveTheme.Instance.SecondaryBackgroundColor;
            }

            if (!partIsGCode)
            {
                string exportStlText     = LocalizedString.Get("Export as");
                string exportStlTextFull = string.Format("{0} STL", exportStlText);

                Button exportAsStlButton = textImageButtonFactory.Generate(exportStlTextFull);
                exportAsStlButton.HAnchor = HAnchor.ParentLeft;
                exportAsStlButton.Cursor  = Cursors.Hand;
                exportAsStlButton.Click  += new EventHandler(exportSTL_Click);
                middleRowContainer.AddChild(exportAsStlButton);
            }

            if (!partIsGCode)
            {
                string exportAmfText     = LocalizedString.Get("Export as");
                string exportAmfTextFull = string.Format("{0} AMF", exportAmfText);

                Button exportAsAmfButton = textImageButtonFactory.Generate(exportAmfTextFull);
                exportAsAmfButton.HAnchor = HAnchor.ParentLeft;
                exportAsAmfButton.Cursor  = Cursors.Hand;
                exportAsAmfButton.Click  += new EventHandler(exportAMF_Click);
                middleRowContainer.AddChild(exportAsAmfButton);
            }

            bool showExportGCodeButton = ActivePrinterProfile.Instance.ActivePrinter != null || partIsGCode;

            if (showExportGCodeButton)
            {
                string exportGCodeText     = LocalizedString.Get("Export as");
                string exportGCodeTextFull = string.Format("{0} GCode", exportGCodeText);
                Button exportGCode         = textImageButtonFactory.Generate(exportGCodeTextFull);
                exportGCode.Name    = "Export as GCode Button";
                exportGCode.HAnchor = HAnchor.ParentLeft;
                exportGCode.Cursor  = Cursors.Hand;
                exportGCode.Click  += new EventHandler((object sender, EventArgs e) =>
                {
                    UiThread.RunOnIdle(ExportGCode_Click);
                });
                middleRowContainer.AddChild(exportGCode);

                PluginFinder <ExportGcodePlugin> exportPluginFinder = new PluginFinder <ExportGcodePlugin>();

                foreach (ExportGcodePlugin plugin in exportPluginFinder.Plugins)
                {
                    //Create export button for each Plugin found

                    string exportButtonText = plugin.getButtonText().Localize();
                    Button exportButton     = textImageButtonFactory.Generate(exportButtonText);
                    exportButton.HAnchor = HAnchor.ParentLeft;
                    exportButton.Cursor  = Cursors.Hand;
                    exportButton.Click  += new EventHandler((object sender, EventArgs e) =>
                    {
                        SaveFileDialogParams saveParams = new SaveFileDialogParams(plugin.getExtensionFilter(), title: plugin.getButtonText());
                        saveParams.Title             = "MatterControl: Export File";
                        saveParams.ActionButtonLabel = "Export";
                        FileDialog.SaveFileDialog(saveParams, delegate(SaveFileDialogParams saveParam)
                        {
                            string extension = Path.GetExtension(saveParam.FileName);
                            if (extension == "")
                            {
                                saveParam.FileName += plugin.getFileExtension();
                            }

                            if (partIsGCode)
                            {
                                Close();
                                plugin.generate(printItemWrapper.FileLocation, saveParam.FileName);
                            }
                            else
                            {
                                Close();
                                SlicingQueue.Instance.QueuePartForSlicing(printItemWrapper);
                                printItemWrapper.SlicingDone += new EventHandler((object slicingCompleteSender, EventArgs slicingEventArgs) =>
                                {
                                    PrintItemWrapper sliceItem = (PrintItemWrapper)slicingCompleteSender;
                                    if (File.Exists(sliceItem.GetGCodePathAndFileName()))
                                    {
                                        plugin.generate(sliceItem.GetGCodePathAndFileName(), saveParam.FileName);
                                    }
                                }); //End SlicingDone Event handler
                            }
                        });         //End SaveFileDialog delegate
                    });             //End Click Event handler
                    middleRowContainer.AddChild(exportButton);
                }

                //bool showExportX3GButton = ActivePrinterProfile.Instance.ActivePrinter.DriverType == "X3G";
                bool showExportX3GButton = false;
                if (showExportX3GButton)
                {
                    string exportAsX3GText = "Export as X3G".Localize();
                    Button exportAsX3G     = textImageButtonFactory.Generate(exportAsX3GText);
                    exportAsX3G.HAnchor = HAnchor.ParentLeft;
                    exportAsX3G.Cursor  = Cursors.Hand;
                    exportAsX3G.Click  += new EventHandler((object sender, EventArgs e) =>
                    {
                        UiThread.RunOnIdle(ExportX3G_Click);
                    });
                    middleRowContainer.AddChild(exportAsX3G);
                }
            }

            middleRowContainer.AddChild(new VerticalSpacer());

            // If print leveling is enabled then add in a check box 'Apply Leveling During Export' and default checked.
            if (showExportGCodeButton && ActivePrinterProfile.Instance.DoPrintLeveling)
            {
                applyLeveling         = new CheckBox(LocalizedString.Get(applyLevelingDuringExportString), ActiveTheme.Instance.PrimaryTextColor, 10);
                applyLeveling.Checked = true;
                applyLeveling.HAnchor = HAnchor.ParentLeft;
                applyLeveling.Cursor  = Cursors.Hand;
                //applyLeveling.Margin = new BorderDouble(top: 10);
                middleRowContainer.AddChild(applyLeveling);
            }

            // TODO: make this work on the mac and then delete this if
            if (OsInformation.OperatingSystem == OSType.Windows ||
                OsInformation.OperatingSystem == OSType.X11)
            {
                showInFolderAfterSave         = new CheckBox(LocalizedString.Get("Show file in folder after save"), ActiveTheme.Instance.PrimaryTextColor, 10);
                showInFolderAfterSave.HAnchor = HAnchor.ParentLeft;
                showInFolderAfterSave.Cursor  = Cursors.Hand;
                //showInFolderAfterSave.Margin = new BorderDouble(top: 10);
                middleRowContainer.AddChild(showInFolderAfterSave);
            }

            if (!showExportGCodeButton)
            {
                string     noGCodeMessageTextBeg  = LocalizedString.Get("Note");
                string     noGCodeMessageTextEnd  = LocalizedString.Get("To enable GCode export, select a printer profile.");
                string     noGCodeMessageTextFull = string.Format("{0}: {1}", noGCodeMessageTextBeg, noGCodeMessageTextEnd);
                TextWidget noGCodeMessage         = new TextWidget(noGCodeMessageTextFull, textColor: ActiveTheme.Instance.PrimaryTextColor, pointSize: 10);
                noGCodeMessage.HAnchor = HAnchor.ParentLeft;
                middleRowContainer.AddChild(noGCodeMessage);
            }

            //Creates button container on the bottom of window
            FlowLayoutWidget buttonRow = new FlowLayoutWidget(FlowDirection.LeftToRight);
            {
                BackgroundColor   = ActiveTheme.Instance.PrimaryBackgroundColor;
                buttonRow.HAnchor = HAnchor.ParentLeftRight;
                buttonRow.Padding = new BorderDouble(0, 3);
            }

            Button cancelButton = textImageButtonFactory.Generate("Cancel");

            cancelButton.Name   = "Export Item Window Cancel Button";
            cancelButton.Cursor = Cursors.Hand;
            cancelButton.Click += (sender, e) =>
            {
                CloseOnIdle();
            };

            buttonRow.AddChild(new HorizontalSpacer());
            buttonRow.AddChild(cancelButton);
            topToBottom.AddChild(middleRowContainer);
            topToBottom.AddChild(buttonRow);

            this.AddChild(topToBottom);
        }