From: Andrea Zagli Date: Sun, 30 Jan 2011 11:09:14 +0000 (+0100) Subject: Aggiunte funzioni SolipaAllegato::get*. X-Git-Tag: Pre_EvolutionDataServer_2.32~6 X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=cb56eda9eaae80cb63065733009a78a62640120b;p=solipa%2Flibsolipa Aggiunte funzioni SolipaAllegato::get*. Aggiunta funzione SolipaAllegato::salva_in_db. --- diff --git a/configure.ac b/configure.ac index c3ccf3c..efc2c4d 100644 --- a/configure.ac +++ b/configure.ac @@ -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]) diff --git a/src/allegato.c b/src/allegato.c index a150d7b..a99298f 100644 --- a/src/allegato.c +++ b/src/allegato.c @@ -20,6 +20,8 @@ #include #endif +#include + #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) diff --git a/src/allegato.h b/src/allegato.h index e61b45b..46a7621 100644 --- a/src/allegato.h +++ b/src/allegato.h @@ -22,6 +22,8 @@ #include #include +#include + #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