[geany/geany-plugins] e5e72b: Merge pull request #42 from codebrainz/geniuspaste-stuff

Frank Lanitz git-noreply at xxxxx
Sun Jun 17 11:36:52 UTC 2012


Branch:      refs/heads/master
Author:      Frank Lanitz <frank at frank.uvena.de>
Committer:   Frank Lanitz <frank at frank.uvena.de>
Date:        Sun, 17 Jun 2012 11:36:52
Commit:      e5e72b98099d405a8c5ac6b3b676c5cbe7698ce2
             https://github.com/geany/geany-plugins/commit/e5e72b98099d405a8c5ac6b3b676c5cbe7698ce2

Log Message:
-----------
Merge pull request #42 from codebrainz/geniuspaste-stuff

Geniuspaste stuff


Modified Paths:
--------------
    geniuspaste/src/geniuspaste.c

Modified: geniuspaste/src/geniuspaste.c
130 files changed, 52 insertions(+), 78 deletions(-)
===================================================================
@@ -87,12 +87,6 @@ static gint indexof(const gchar * string, gchar c)
     return occ ? occ - string : -1;
 }
 
-static gint last_indexof(const gchar * string, gchar c)
-{
-    gchar * occ = strrchr(string, c);
-    return occ ? occ - string : -1;
-}
-
 static void load_settings(void)
 {
     GKeyFile *config = g_key_file_new();
@@ -149,20 +143,35 @@ static void save_settings(void)
     g_key_file_free(config);
 }
 
+static gchar *get_paste_text(GeanyDocument *doc, gsize *text_len)
+{
+    gsize len;
+    gchar *paste_text;
+
+    if (sci_has_selection(doc->editor->sci))
+    {
+        len = sci_get_selected_text_length(doc->editor->sci) + 1;
+        paste_text = sci_get_selection_contents(doc->editor->sci);
+    }
+    else
+    {
+        len = sci_get_length(doc->editor->sci) + 1;
+        paste_text = sci_get_contents(doc->editor->sci, len);
+    }
+
+    if (text_len)
+        *text_len = len;
+
+    return paste_text;
+}
+
 static void paste(GeanyDocument * doc, const gchar * website)
 {
     SoupSession *session = soup_session_async_new();
     SoupMessage *msg = NULL;
 
-    doc = document_get_current();
-
-    GeanyFiletype *ft = doc->file_type;
-    GError *error = NULL;
-
     gchar *f_content;
-    gchar *f_type = g_strdup(ft->name);
-    gchar *f_path = doc->real_path;
-    gchar *f_name = doc->file_name;
+    gchar const *f_type;
     gchar *f_title;
     gchar *p_url;
     gchar *formdata = NULL;
@@ -187,19 +196,26 @@ static void paste(GeanyDocument * doc, const gchar * website)
     gint occ_position;
     gint i;
     guint status;
-    gsize f_lenght;
-    gboolean result;
+    gsize f_length;
+
+    g_return_if_fail(doc && doc->is_valid);
+
+    f_type = doc->file_type->name;
+
+    if (doc->file_name == NULL)
+        f_title = document_get_basename_for_display(doc, -1);
+    else
+        f_title = g_path_get_basename(doc->file_name);
+
+    load_settings();
 
-    occ_position = last_indexof(f_name, G_DIR_SEPARATOR);
-    if(occ_position == -1)
+    f_content = get_paste_text(doc, &f_length);
+    if (f_content == NULL || f_content[0] == '\0')
     {
-        dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Unable to get the file name"));
+        dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Refusing to create blank paste"));
         return;
     }
 
-    f_title = f_name + occ_position + 1;
-    load_settings();
-
     switch (website_selected)
     {
 
@@ -213,14 +229,6 @@ static void paste(GeanyDocument * doc, const gchar * website)
                 f_type = DEFAULT_TYPE_CODEPAD;
         }
 
-        result = g_file_get_contents(f_path, &f_content, &f_lenght, &error);
-        if(result == FALSE)
-        {
-            dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Unable to get the the content of the file"));
-            g_error_free(error);
-            return;
-        }
-
         msg = soup_message_new("POST", website);
         formdata = soup_form_encode("lang", f_type, "code", f_content,
                                     "submit", "Submit", NULL);
@@ -229,14 +237,6 @@ static void paste(GeanyDocument * doc, const gchar * website)
 
     case PASTEBIN_COM:
 
-        result = g_file_get_contents(f_path, &f_content, &f_lenght, &error);
-        if(result == FALSE)
-        {
-            dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Unable to get the the content of the file"));
-            g_error_free(error);
-            return;
-        }
-
         msg = soup_message_new("POST", website);
         formdata = soup_form_encode("paste_code", f_content, "paste_format",
                                     f_type, "paste_name", f_title, NULL);
@@ -254,13 +254,6 @@ static void paste(GeanyDocument * doc, const gchar * website)
                 f_type = DEFAULT_TYPE_DPASTE;
         }
 
-        result = g_file_get_contents(f_path, &f_content, &f_lenght, &error);
-        if(result == FALSE) {
-            dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Unable to get the the content of the file"));
-            g_error_free(error);
-            return;
-        }
-
         msg = soup_message_new("POST", website);
         /* apparently dpaste.de detects automatically the syntax of the
          * pasted code so 'lexer' should be unneeded
@@ -272,14 +265,6 @@ static void paste(GeanyDocument * doc, const gchar * website)
 
     case SPRUNGE_US:
 
-        result = g_file_get_contents(f_path, &f_content, &f_lenght, &error);
-        if(result == FALSE)
-        {
-            dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Unable to get the the content of the file"));
-            g_error_free(error);
-            return;
-        }
-
         msg = soup_message_new("POST", website);
         formdata = soup_form_encode("sprunge", f_content, NULL);
 
@@ -287,14 +272,6 @@ static void paste(GeanyDocument * doc, const gchar * website)
 
     case PASTEBIN_GEANY_ORG:
 
-        result = g_file_get_contents(f_path, &f_content, &f_lenght, &error);
-        if(result == FALSE)
-        {
-            dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Unable to get the the content of the file"));
-            g_error_free(error);
-            return;
-        }
-
         msg = soup_message_new("POST", website);
         formdata = soup_form_encode("content", f_content, "author", author_name,
                                     "title", f_title, "lexer", f_type, NULL);
@@ -340,6 +317,7 @@ static void paste(GeanyDocument * doc, const gchar * website)
             {
                 dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Unable to paste the code on codepad.org\n"
                                     "Retry or select another pastebin."));
+                g_free(p_url);
                 return;
             }
 
@@ -358,12 +336,13 @@ static void paste(GeanyDocument * doc, const gchar * website)
              *
              * e.g. sprunge.us/xxxx?c
              */
+            gchar *ft_tmp = g_ascii_strdown(f_type, -1);
             p_url[strlen(p_url) - 1] = '\0';
-            f_type[0] = g_ascii_tolower(f_type[0]);
-            temp_body = g_strdup_printf("?%s", f_type);
+            temp_body = g_strdup_printf("?%s", ft_tmp);
             g_strlcat(p_url + 1, temp_body, -1);
-            p_url = g_strchomp(p_url);
+            p_url = g_strstrip(p_url);
             g_free(temp_body);
+            g_free(ft_tmp);
         }
 
         if (check_button_is_checked)
@@ -372,7 +351,14 @@ static void paste(GeanyDocument * doc, const gchar * website)
         }
         else
         {
-            dialogs_show_msgbox(GTK_MESSAGE_INFO, "%s", p_url);
+            GtkWidget *dlg = gtk_message_dialog_new(GTK_WINDOW(geany->main_widgets->window),
+                GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK,
+                _("Paste Successful"));
+            gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dlg),
+                _("Your paste can be found here:\n<a href=\"%s\" "
+                "title=\"Click to open the paste in your browser\">%s</a>"), p_url, p_url);
+            gtk_dialog_run(GTK_DIALOG(dlg));
+            gtk_widget_destroy(dlg);
         }
     }
     else
@@ -389,23 +375,11 @@ static void item_activate(GtkMenuItem * menuitem, gpointer gdata)
 {
     GeanyDocument *doc = document_get_current();
 
-    if(doc == NULL)
+    if(!DOC_VALID(doc))
     {
         dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("There are no opened documents. Open one and retry.\n"));
         return;
     }
-    else if(doc->file_name == NULL)
-    {
-        dialogs_show_save_as();
-    }
-    else if(doc->changed)
-    {
-        if(document_save_file(doc, FALSE) == FALSE)
-        {
-            dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Unable to save the current file"));
-            return;
-        }
-    }
 
     paste(doc, websites[website_selected]);
 }


@@ Diff output truncated at 100000 characters. @@


--------------
This E-Mail was brought to you by github_commit_mail.py (Source: TBD).



More information about the Plugins-Commits mailing list