#include <config.h>
#endif
+#include <sql-parser/gda-sql-parser.h>
+
#include "allegato.h"
static void solipa_allegato_class_init (SolipaAllegatoClass *class);
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);
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,
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)