Example #1
0
/**
   The user wants to insert a sreenshot.
 */
static void
on_screenshot_insert_menuitem_activate_cb (GtkWidget * screenshot_insert_menuitem,
					   PidginConversation *gtkconv) {
    PurplePlugin *plugin = purple_plugins_find_with_id (PLUGIN_ID);
   
  
    if (!strcmp (purple_prefs_get_string (PREF_SEND_TYPE), "img-ftp-http")) {
      PurpleConversation *conv = gtkconv->active_conv;
      
      /* Direct IM of image is allowed by current protocol */
      if (!(purple_conversation_get_features (conv) & PURPLE_CONNECTION_NO_IMAGES)) {
	    send_as_image (NULL, gtkconv);
      } else if (strcmp(purple_prefs_get_string (PREF_FTP_REMOTE_URL), "") && 
		 strcmp(purple_prefs_get_string (PREF_FTP_USERNAME), "") && 
		 strcmp(purple_prefs_get_string (PREF_FTP_PASSWORD), "")) {
	    send_as_ftp_link (NULL, gtkconv);
      } else if (strcmp (purple_prefs_get_string (PREF_UPLOAD_TO), HOST_DISABLED)) {
	    send_as_link (NULL, gtkconv);
      } else {
	    purple_notify_error (plugin, PLUGIN_NAME, PLUGIN_ERROR,
                                 PLUGIN_CONFIGURE_ERROR);
            plugin_stop (plugin);
      }
    }
}
Example #2
0
static void
send_as_link (PidginWindow * win,
                                  PidginConversation * _gtkconv) {
    PurplePlugin *plugin;

    plugin = purple_plugins_find_with_id (PLUGIN_ID);

    if (PLUGIN (locked))
        return;                 /* Just return, don't fail. */
    else {
        PidginConversation *gtkconv;

        PLUGIN (locked) = TRUE;
        PLUGIN (send_as) = SEND_AS_HTTP_LINK;

        if (win != NULL)
            gtkconv =
                PIDGIN_CONVERSATION
                (pidgin_conv_window_get_active_conversation (win));
        else
            gtkconv = _gtkconv;

        if (!strcmp (purple_prefs_get_string (PREF_UPLOAD_TO), HOST_DISABLED)) {
            purple_notify_error (plugin, PLUGIN_NAME, PLUGIN_ERROR,
                                 PLUGIN_HOST_DISABLED_ERROR);
            plugin_stop (plugin);
            return;
        }
        REMEMBER_ACCOUNT (gtkconv);

        PLUGIN (conv_features) = gtkconv->active_conv->features;
        freeze_desktop (plugin, FALSE);
    }
}
Example #3
0
static void
delete_plugin(gpointer data, gpointer udata)
{
    ENTER;
    plugin_stop((plugin_instance *)data);
    plugin_put((plugin_instance *)data);
    RET();
}
Example #4
0
static
    void
on_countdown_dialog_response_cb (PurplePlugin * plugin, gint response_id) {

    g_assert (plugin != NULL && plugin->extra != NULL);

    switch (response_id) {
    case GTK_RESPONSE_ACCEPT:
        {
            if (purple_timeout_remove (PLUGIN (timeout_source))) {
                PLUGIN (timeout_source) = 0;
                /* delete_infobar (plugin); */

                gtk_widget_destroy (PLUGIN (countdown_dialog));
                PLUGIN (countdown_dialog) = NULL;

                PLUGIN (timeout_source) =
                    purple_timeout_add
                    (MSEC_TIMEOUT_VAL, (GSourceFunc) timeout_freeze_screen,
                     plugin);

            }
            break;
        }
    case GTK_RESPONSE_REJECT:
    case GTK_RESPONSE_DELETE_EVENT:
        {

            if (purple_timeout_remove (PLUGIN (timeout_source))) {
                PLUGIN (timeout_source) = 0;
                gtk_widget_destroy (PLUGIN (countdown_dialog));
                PLUGIN (countdown_dialog) = NULL;
                plugin_stop (plugin);
            }
            break;
        }
    }

}
static gboolean
insert_ftp_link_cb (PurplePlugin * plugin) {
    g_assert (plugin != NULL && plugin->extra != NULL);

    /* still uploading... */
    if (PLUGIN (libcurl_thread) != NULL) {
        GtkProgressBar *progress_bar =
            g_object_get_data (G_OBJECT (PLUGIN (uploading_dialog)),
                               "progress-bar");

        g_assert (progress_bar != NULL);

        if (PLUGIN (read_size) == 0)
            gtk_progress_bar_pulse (progress_bar);
        else {

            gchar *str = NULL;
            gdouble val = PLUGIN (read_size) / (gdouble) PLUGIN (total_size);

            str = g_strdup_printf ("%d%%", (gint) (val * 100));
            gtk_progress_bar_set_text (progress_bar, str);
            g_free (str);
            gtk_progress_bar_set_fraction (progress_bar, val);

        }
        return TRUE;
    }
    else {
        PLUGIN (timeout_cb_handle) = 0;
        gtk_widget_destroy (PLUGIN (uploading_dialog));
        PLUGIN (uploading_dialog) = NULL;

        /* an error occured */
        if (PLUGIN (error) != NULL) {
            NotifyUploadError ("%s", PLUGIN (error)->message);
            g_error_free (PLUGIN (error));
            PLUGIN (error) = NULL;
        }
        else {
            gchar *remote_url;
            gchar *basename;

            basename = g_path_get_basename (PLUGIN (capture_path_filename));

            if (strcmp (purple_prefs_get_string (PREF_FTP_WEB_ADDR), ""))
                /* not only a ftp server, but also a html server */
                remote_url = g_strdup_printf ("%s/%s",
                                              purple_prefs_get_string
                                              (PREF_FTP_WEB_ADDR), basename);
            else
                remote_url = g_strdup_printf ("%s/%s",
                                              purple_prefs_get_string
                                              (PREF_FTP_REMOTE_URL),
                                              basename);

            real_insert_link (plugin, remote_url);
            g_free (remote_url);
            g_free (basename);
        }
    }
    plugin_stop (plugin);
    return FALSE;
}