[Github-comments] [geany/geany-plugins] Markdown: Allow exporting Markdown as HTML (#502)

Colomban Wendling notifications at xxxxx
Sat Nov 12 09:30:32 UTC 2016


b4n commented on this pull request.



> @@ -240,3 +250,47 @@ on_view_pos_notify(GObject *obj, GParamSpec *pspec, MarkdownViewer *viewer)
 
   update_markdown_viewer(viewer);
 }
+
+static void on_export_as_html_activate(GtkMenuItem *item, MarkdownViewer *viewer)
+{
+  GtkWidget *dialog;
+  GtkFileFilter *filter;
+
+  g_return_if_fail(DOC_VALID(document_get_current()));
+
+  dialog = gtk_file_chooser_dialog_new(_("Save HTML File As"),
+    GTK_WINDOW(geany_data->main_widgets->window), GTK_FILE_CHOOSER_ACTION_SAVE,
+    GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+    GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
+    NULL);
+  gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE);
+  gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), FALSE);

I think multi-selection is disabled by default, and probably irrelevant for save too :)

> +
+static void on_export_as_html_activate(GtkMenuItem *item, MarkdownViewer *viewer)
+{
+  GtkWidget *dialog;
+  GtkFileFilter *filter;
+
+  g_return_if_fail(DOC_VALID(document_get_current()));
+
+  dialog = gtk_file_chooser_dialog_new(_("Save HTML File As"),
+    GTK_WINDOW(geany_data->main_widgets->window), GTK_FILE_CHOOSER_ACTION_SAVE,
+    GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+    GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
+    NULL);
+  gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE);
+  gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), FALSE);
+  gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), "index.html");

Maybe rather use `basename(DOC_FILENAME(doc)) + ".html"`?

> +
+  g_return_if_fail(DOC_VALID(document_get_current()));
+
+  dialog = gtk_file_chooser_dialog_new(_("Save HTML File As"),
+    GTK_WINDOW(geany_data->main_widgets->window), GTK_FILE_CHOOSER_ACTION_SAVE,
+    GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+    GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
+    NULL);
+  gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE);
+  gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), FALSE);
+  gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), "index.html");
+
+  filter = gtk_file_filter_new();
+  gtk_file_filter_set_name(filter, _("HTML Files"));
+  gtk_file_filter_add_pattern(filter, "*.html");
+  gtk_file_filter_add_pattern(filter, "*.htm");

maybe rather use `gtk_file_filter_add_mime_type(filter, "text/html");`?

> +  gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
+
+  filter = gtk_file_filter_new();
+  gtk_file_filter_set_name(filter, _("All Files"));
+  gtk_file_filter_add_pattern(filter, "*");
+  gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
+
+  if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
+    gchar *fn = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
+    gchar *html = markdown_viewer_get_html(viewer);
+    GError *error = NULL;
+    if (! g_file_set_contents(fn, html, -1, &error)) {
+      dialogs_show_msgbox(GTK_MESSAGE_ERROR,
+        _("Failed to export Markdown HTML to file '%s': %s"),
+        fn, error->message);
+      g_error_free(error);

maybe re-show the save dialog in case of error?  I guess the most likely reason of failure is permission issue/invalid path, so I imagine the general action would be trying again.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany-plugins/pull/502#pullrequestreview-8295647
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.geany.org/pipermail/github-comments/attachments/20161112/2f1b5ce3/attachment.html>


More information about the Github-comments mailing list