]> saetta.ns0.it Git - solipa/libsolipa/commitdiff
Aggiunte funzioni SolipaAllegato::get*.
authorAndrea Zagli <azagli@libero.it>
Sun, 30 Jan 2011 11:09:14 +0000 (12:09 +0100)
committerAndrea Zagli <azagli@libero.it>
Sun, 30 Jan 2011 11:09:14 +0000 (12:09 +0100)
Aggiunta funzione SolipaAllegato::salva_in_db.

configure.ac
src/allegato.c
src/allegato.h

index c3ccf3c351346cda7b669cda5fa3b904cab0fd42..efc2c4d30af68565f5b699151f5a37c663214034 100644 (file)
@@ -2,7 +2,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.65)
-AC_INIT([libsolipa], [0.0.1], [azagli@libero.it])
+AC_INIT([libsolipa], [0.0.2], [azagli@libero.it])
 AC_CONFIG_SRCDIR([src/solipa.c])
 AC_CONFIG_HEADER([config.h])
 
index a150d7bcc67950d8f68c4ff3d216474878b0d9e0..a99298f317751a1458f3704f76c0a4bed3c41153 100644 (file)
@@ -20,6 +20,8 @@
        #include <config.h>
 #endif
 
+#include <sql-parser/gda-sql-parser.h>
+
 #include "allegato.h"
 
 static void solipa_allegato_class_init (SolipaAllegatoClass *class);
@@ -41,8 +43,6 @@ static void solipa_allegato_on_file_pulisci (GtkEntry *entry,
 static void solipa_allegato_on_btn_file_clicked (GtkButton *button,
                                     gpointer user_data);
 
-static void solipa_allegato_apri_allegato (GtkWindow *transient, const gchar *filename);
-
 static void solipa_allegato_on_btn_apri_clicked (GtkButton *button,
                                     gpointer user_data);
 
@@ -152,6 +152,176 @@ GtkWidget
        return priv->widget;
 }
 
+void
+solipa_allegato_con_salva_in_db (SolipaAllegato *solipa_allegato, gboolean con_salva_in_db)
+{
+       SolipaAllegatoPrivate *priv;
+
+       g_return_if_fail (IS_SOLIPA_ALLEGATO (solipa_allegato));
+
+       gtk_widget_set_visible (GTK_WIDGET (gtk_builder_get_object (priv->gtkbuilder, "label143")), con_salva_in_db);
+       gtk_widget_set_visible (priv->chk_salva_nel_db, con_salva_in_db);
+}
+
+const gchar
+*solipa_allegato_get_percorso (SolipaAllegato *solipa_allegato)
+{
+       SolipaAllegatoPrivate *priv;
+
+       g_return_val_if_fail (IS_SOLIPA_ALLEGATO (solipa_allegato), NULL);
+
+       priv = SOLIPA_ALLEGATO_GET_PRIVATE (solipa_allegato);
+
+       return gtk_entry_get_text (GTK_ENTRY (priv->txt_percorso));
+}
+
+const gchar
+*solipa_allegato_get_data (SolipaAllegato *solipa_allegato)
+{
+       SolipaAllegatoPrivate *priv;
+
+       g_return_val_if_fail (IS_SOLIPA_ALLEGATO (solipa_allegato), NULL);
+
+       priv = SOLIPA_ALLEGATO_GET_PRIVATE (solipa_allegato);
+
+       return gtk_entry_get_text (GTK_ENTRY (priv->txt_data));
+}
+
+guint
+solipa_allegato_get_dimensione (SolipaAllegato *solipa_allegato)
+{
+       SolipaAllegatoPrivate *priv;
+
+       g_return_val_if_fail (IS_SOLIPA_ALLEGATO (solipa_allegato), 0);
+
+       priv = SOLIPA_ALLEGATO_GET_PRIVATE (solipa_allegato);
+
+       return strtol (gtk_entry_get_text (GTK_ENTRY (priv->txt_dimensione)), NULL, 10);
+}
+
+gboolean
+solipa_allegato_get_salva_in_db (SolipaAllegato *solipa_allegato)
+{
+       SolipaAllegatoPrivate *priv;
+
+       g_return_val_if_fail (IS_SOLIPA_ALLEGATO (solipa_allegato), FALSE);
+
+       priv = SOLIPA_ALLEGATO_GET_PRIVATE (solipa_allegato);
+
+       if (!gtk_widget_get_visible (priv->chk_salva_nel_db))
+               {
+                       return FALSE;
+               }
+       else
+               {
+                       return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->chk_salva_nel_db));
+               }
+}
+
+void
+solipa_allegato_apri_allegato (GtkWindow *transient, const gchar *filename)
+{
+       GtkWidget *dialog;
+       GFile *gfile;
+       GAppInfo *gappinfo;
+       GError *error;
+       GList *lfiles;
+
+       gfile = g_file_new_for_commandline_arg (filename);
+       if (gfile == NULL)
+               {
+                       dialog = gtk_message_dialog_new (transient,
+                                                        GTK_DIALOG_DESTROY_WITH_PARENT,
+                                                        GTK_MESSAGE_WARNING,
+                                                        GTK_BUTTONS_OK,
+                                                        "Impossibile aprire l'allegato selezionato.");
+                       gtk_dialog_run (GTK_DIALOG (dialog));
+                       return;
+               }
+
+       error = NULL;
+       gappinfo = g_file_query_default_handler (gfile, NULL, &error);
+       if (gappinfo == NULL)
+               {
+                       dialog = gtk_message_dialog_new (transient,
+                                                        GTK_DIALOG_DESTROY_WITH_PARENT,
+                                                        GTK_MESSAGE_WARNING,
+                                                        GTK_BUTTONS_OK,
+                                                        "Impossibile aprire l'allegato selezionato: %s.",
+                                                        (error != NULL & error->message != NULL ? error->message : "nessun dettaglio"));
+                       gtk_dialog_run (GTK_DIALOG (dialog));
+                       return;
+               }
+
+       lfiles = NULL;
+       lfiles = g_list_append (lfiles, (gpointer)gfile);
+
+       error = NULL;
+       if (!g_app_info_launch (gappinfo, lfiles, NULL, &error))
+               {
+                       dialog = gtk_message_dialog_new (transient,
+                                                        GTK_DIALOG_DESTROY_WITH_PARENT,
+                                                        GTK_MESSAGE_WARNING,
+                                                        GTK_BUTTONS_OK,
+                                                        "Impossibile aprire l'allegato selezionato: %s.",
+                                                        (error != NULL & error->message != NULL ? error->message : "nessun dettaglio"));
+                       gtk_dialog_run (GTK_DIALOG (dialog));
+               }
+}
+
+gboolean
+solipa_allegato_salva_in_db (GdaConnection *gda_con, const gchar *sql,
+                             const gchar *blob_field_name, const gchar *percorso)
+{
+       GdaSqlParser *parser;
+       GdaStatement *stmt;
+       GError *error;
+       GdaSet *plist;
+       GdaHolder *param;
+       GValue *value;
+       GObject *exec_res;
+
+       g_return_val_if_fail (GDA_IS_CONNECTION (gda_con), FALSE);
+
+       parser = gda_connection_create_parser (gda_con);
+
+       error = NULL;
+       stmt = gda_sql_parser_parse_string (parser, sql, NULL, &error);
+       if (stmt == NULL || error != NULL)
+               {
+                       g_warning ("Errore nell'analisi della stringa sql: %s.",
+                                  error != NULL && error->message != NULL ? error->message : "nessun dettaglio");
+                       return FALSE;
+               }
+       gda_statement_get_parameters (stmt, &plist, NULL);
+
+       param = gda_set_get_holder (plist, blob_field_name);
+       value = gda_value_new_blob_from_file (percorso);
+       error = NULL;
+       if (!gda_holder_set_value (param, value, &error))
+               {
+                       /* TODO error */
+                       g_warning ("Errore nell'impostare il blob: %s.",
+                                  error != NULL && error->message != NULL ? error->message : "nessun dettaglio");
+                       return FALSE;
+               }
+       else
+               {
+                       error = NULL;
+                       exec_res = gda_connection_statement_execute (gda_con, stmt, plist, GDA_STATEMENT_MODEL_RANDOM_ACCESS, NULL, &error);
+                       if (!exec_res)
+                               {
+                                       /* TODO error */
+                                       g_warning ("Errore nell'esecuzione dello statement di aggiornamento del blob: %s.",
+                                                  error != NULL && error->message != NULL ? error->message : "nessun dettaglio");
+                                       return FALSE;
+                               }
+               }
+       gda_value_free (value);
+
+       return TRUE;
+}
+
 /* PRIVATE */
 static void
 solipa_allegato_set_property (GObject *object,
@@ -259,57 +429,6 @@ solipa_allegato_on_btn_file_clicked (GtkButton *button,
        gtk_widget_destroy (dialog);
 }
 
-static void
-solipa_allegato_apri_allegato (GtkWindow *transient, const gchar *filename)
-{
-       GtkWidget *dialog;
-       GFile *gfile;
-       GAppInfo *gappinfo;
-       GError *error;
-       GList *lfiles;
-
-       gfile = g_file_new_for_commandline_arg (filename);
-       if (gfile == NULL)
-               {
-                       dialog = gtk_message_dialog_new (transient,
-                                                        GTK_DIALOG_DESTROY_WITH_PARENT,
-                                                        GTK_MESSAGE_WARNING,
-                                                        GTK_BUTTONS_OK,
-                                                        "Impossibile aprire l'allegato selezionato.");
-                       gtk_dialog_run (GTK_DIALOG (dialog));
-                       return;
-               }
-
-       error = NULL;
-       gappinfo = g_file_query_default_handler (gfile, NULL, &error);
-       if (gappinfo == NULL)
-               {
-                       dialog = gtk_message_dialog_new (transient,
-                                                        GTK_DIALOG_DESTROY_WITH_PARENT,
-                                                        GTK_MESSAGE_WARNING,
-                                                        GTK_BUTTONS_OK,
-                                                        "Impossibile aprire l'allegato selezionato: %s.",
-                                                        (error != NULL & error->message != NULL ? error->message : "nessun dettaglio"));
-                       gtk_dialog_run (GTK_DIALOG (dialog));
-                       return;
-               }
-
-       lfiles = NULL;
-       lfiles = g_list_append (lfiles, (gpointer)gfile);
-
-       error = NULL;
-       if (!g_app_info_launch (gappinfo, lfiles, NULL, &error))
-               {
-                       dialog = gtk_message_dialog_new (transient,
-                                                        GTK_DIALOG_DESTROY_WITH_PARENT,
-                                                        GTK_MESSAGE_WARNING,
-                                                        GTK_BUTTONS_OK,
-                                                        "Impossibile aprire l'allegato selezionato: %s.",
-                                                        (error != NULL & error->message != NULL ? error->message : "nessun dettaglio"));
-                       gtk_dialog_run (GTK_DIALOG (dialog));
-               }
-}
-
 static void
 solipa_allegato_on_btn_apri_clicked (GtkButton *button,
                         gpointer user_data)
index e61b45bcc1dd650b76c9ab367045f4cf5b41e74f..46a7621d4affe09101f1185aaad332bbf83f6905 100644 (file)
@@ -22,6 +22,8 @@
 #include <glib.h>
 #include <glib-object.h>
 
+#include <libgda/libgda.h>
+
 #include "solipa.h"
 
 
@@ -55,6 +57,18 @@ SolipaAllegato *solipa_allegato_new (Solipa *solipa);
 
 GtkWidget *solipa_allegato_get_widget (SolipaAllegato *solipa_allegato);
 
+void solipa_allegato_con_salva_in_db (SolipaAllegato *solipa_allegato, gboolean con_salva_in_db);
+
+const gchar *solipa_allegato_get_percorso (SolipaAllegato *solipa_allegato);
+const gchar *solipa_allegato_get_data (SolipaAllegato *solipa_allegato);
+guint solipa_allegato_get_dimensione (SolipaAllegato *solipa_allegato);
+gboolean solipa_allegato_get_salva_in_db (SolipaAllegato *solipa_allegato);
+
+void solipa_allegato_apri_allegato (GtkWindow *transient, const gchar *filename);
+
+gboolean solipa_allegato_salva_in_db (GdaConnection *gda_con, const gchar *sql,
+                                      const gchar *blob_field_name, const gchar *percorso);
+
 
 G_END_DECLS