Наследование: Gtk.FileChooserDialog
Пример #1
0
        void ExportButtonClicked(object sender, EventArgs args)
        {
            String             sanitized_title = ExportAllApplicationAddin.SanitizeNoteTitle(Note.Title);
            ExportToHtmlDialog dialog          = new ExportToHtmlDialog(sanitized_title + ".html");
            int    response    = dialog.Run();
            string output_path = dialog.Filename;

            if (response != (int)Gtk.ResponseType.Ok)
            {
                dialog.Destroy();
                return;
            }

            Logger.Debug("Exporting Note '{0}' to '{1}'...", Note.Title, output_path);

            StreamWriter writer        = null;
            string       error_message = null;

            try {
                try {
                    // FIXME: Warn about file existing.  Allow overwrite.
                    File.Delete(output_path);
                } catch {
                }

                writer = new StreamWriter(output_path);
                WriteHTMLForNote(writer, Note, dialog.ExportLinked, dialog.ExportLinkedAll);

                // Save the dialog preferences now that the note has
                // successfully been exported
                dialog.SavePreferences();
                dialog.Destroy();
                dialog = null;

                try {
                    Uri output_uri = new Uri(output_path);
                    Services.NativeApplication.OpenUrl(output_uri.AbsoluteUri,
                                                       Note.Window.Screen);
                } catch (Exception ex) {
                    Logger.Error("Could not open exported note in a web browser: {0}",
                                 ex);

                    string detail = String.Format(
                        Catalog.GetString("Your note was exported to \"{0}\"."),
                        output_path);

                    // Let the user know the note was saved successfully
                    // even though showing the note in a web browser failed.
                    HIGMessageDialog msg_dialog =
                        new HIGMessageDialog(
                            Window,
                            Gtk.DialogFlags.DestroyWithParent,
                            Gtk.MessageType.Info,
                            Gtk.ButtonsType.Ok,
                            Catalog.GetString("Note exported successfully"),
                            detail);
                    msg_dialog.Run();
                    msg_dialog.Destroy();
                }
            } catch (UnauthorizedAccessException) {
                error_message = Catalog.GetString("Access denied.");
            } catch (DirectoryNotFoundException) {
                error_message = Catalog.GetString("Folder does not exist.");
            } catch (Exception e) {
                Logger.Error("Could not export: {0}", e);

                error_message = e.Message;
            } finally {
                if (writer != null)
                {
                    writer.Close();
                }
            }

            if (error_message != null)
            {
                Logger.Error("Could not export: {0}", error_message);

                string msg = String.Format(
                    Catalog.GetString("Could not save the file \"{0}\""),
                    output_path);

                HIGMessageDialog msg_dialog =
                    new HIGMessageDialog(
                        dialog,
                        Gtk.DialogFlags.DestroyWithParent,
                        Gtk.MessageType.Error,
                        Gtk.ButtonsType.Ok,
                        msg,
                        error_message);
                msg_dialog.Run();
                msg_dialog.Destroy();
            }

            if (dialog != null)
            {
                dialog.Destroy();
            }
        }
		void ExportButtonClicked (object sender, EventArgs args)
		{
                        String sanitized_title = ExportAllApplicationAddin.SanitizeNoteTitle (Note.Title);
			ExportToHtmlDialog dialog = new ExportToHtmlDialog (sanitized_title + ".html");
			int response = dialog.Run();
			string output_path = dialog.Filename;

			if (response != (int) Gtk.ResponseType.Ok) {
				dialog.Destroy ();
				return;
			}

			Logger.Debug ("Exporting Note '{0}' to '{1}'...", Note.Title, output_path);

			StreamWriter writer = null;
			string error_message = null;

			try {
				try {
					// FIXME: Warn about file existing.  Allow overwrite.
					File.Delete (output_path);
				} catch {
			}

			writer = new StreamWriter (output_path);
				WriteHTMLForNote (writer, Note, dialog.ExportLinked, dialog.ExportLinkedAll);

				// Save the dialog preferences now that the note has
				// successfully been exported
				dialog.SavePreferences ();
				dialog.Destroy ();
				dialog = null;

				try {
					Uri output_uri = new Uri (output_path);
					Services.NativeApplication.OpenUrl (output_uri.AbsoluteUri,
					                                    Note.Window.Screen);
				} catch (Exception ex) {
					Logger.Error ("Could not open exported note in a web browser: {0}",
					            ex);

					string detail = String.Format (
					                        Catalog.GetString ("Your note was exported to \"{0}\"."),
					                        output_path);

					// Let the user know the note was saved successfully
					// even though showing the note in a web browser failed.
					HIGMessageDialog msg_dialog =
					        new HIGMessageDialog (
					        Window,
					        Gtk.DialogFlags.DestroyWithParent,
					        Gtk.MessageType.Info,
					        Gtk.ButtonsType.Ok,
					        Catalog.GetString ("Note exported successfully"),
					        detail);
					msg_dialog.Run ();
					msg_dialog.Destroy ();
				}
			} catch (UnauthorizedAccessException) {
				error_message = Catalog.GetString ("Access denied.");
			} catch (DirectoryNotFoundException) {
				error_message = Catalog.GetString ("Folder does not exist.");
			} catch (Exception e) {
				Logger.Error ("Could not export: {0}", e);

				error_message = e.Message;
			} finally {
				if (writer != null)
					writer.Close ();
			}

			if (error_message != null)
			{
				Logger.Error ("Could not export: {0}", error_message);

				string msg = String.Format (
				                     Catalog.GetString ("Could not save the file \"{0}\""),
				                     output_path);

				HIGMessageDialog msg_dialog =
				        new HIGMessageDialog (
				        dialog,
				        Gtk.DialogFlags.DestroyWithParent,
				        Gtk.MessageType.Error,
				        Gtk.ButtonsType.Ok,
				        msg,
				        error_message);
				msg_dialog.Run ();
				msg_dialog.Destroy ();
			}

			if (dialog != null)
				dialog.Destroy ();
		}