From 640de197cb3ae2f1e1e77eb3eb6e52627b90cdf2 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Wed, 23 Nov 2011 18:44:40 +0100 Subject: [PATCH] In GdaExQueryEditor now every field's type is a GdaExQueryEditorIWidget. Removed GtkDateEntry dependency. --- .anjuta_sym_db.db | Bin 222208 -> 244736 bytes configure.ac | 3 +- po/it.po | 90 +++++++------ src/Makefile.am | 6 +- src/queryeditor.c | 282 ++++++++++++----------------------------- src/queryeditorentry.c | 141 +++++++++++++++++++++ src/queryeditorentry.h | 60 +++++++++ 7 files changed, 339 insertions(+), 243 deletions(-) create mode 100644 src/queryeditorentry.c create mode 100644 src/queryeditorentry.h diff --git a/.anjuta_sym_db.db b/.anjuta_sym_db.db index 9be886ba38a0c31ee3dd8d11a4eac47841e2935b..722ad464cd0571eafa373a7d5401a81db0bd230d 100644 GIT binary patch delta 36597 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 H=(_(8oIQgV delta 19739 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 4 gio-2.0 >= 2.24 - gtk+-2.0 >= 2.20 - libgtkdateentry >= 0.0.4]) + gtk+-2.0 >= 2.20]) AC_SUBST(GDAEX_CFLAGS) AC_SUBST(GDAEX_LIBS) diff --git a/po/it.po b/po/it.po index 9327600..255b8fe 100644 --- a/po/it.po +++ b/po/it.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libgdaex 0.4.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-10-24 17:40+0200\n" +"POT-Creation-Date: 2011-11-23 18:27+0100\n" "PO-Revision-Date: 2011-10-24 17:44+0200\n" "Last-Translator: Andrea Zagli \n" "Language-Team: Italian \n" @@ -39,8 +39,8 @@ msgstr "Errore nella creazione della connessione al database: %s" #: ../src/gdaex.c:2295 ../src/gdaex.c:2405 ../src/gdaex.c:2452 #: ../src/gdaex.c:2470 ../src/gdaex.c:2523 ../src/gdaex.c:2582 #: ../src/gdaex.c:2635 ../src/gdaex.c:2923 ../src/gdaex.c:2941 -#: ../src/queryeditor.c:323 ../src/queryeditor.c:1224 -#: ../src/queryeditor.c:1236 +#: ../src/queryeditor.c:350 ../src/queryeditor.c:1260 +#: ../src/queryeditor.c:1272 msgid "no details" msgstr "nessun dettaglio" @@ -226,159 +226,167 @@ msgstr "Errore nella creazione dell'espressione regolare: %s" msgid "Error on regex replacing: %s" msgstr "Errore nell'espressione regolare di sostituzione: %s" -#: ../src/queryeditor.c:322 +#: ../src/queryeditor.c:349 #, c-format msgid "Error on gui initialization: %s." msgstr "Errore nell'inizializzazione dell'interfaccia grafica: %s." -#: ../src/queryeditor.c:554 ../src/queryeditor.c:637 ../src/queryeditor.c:645 +#: ../src/queryeditor.c:581 ../src/queryeditor.c:673 ../src/queryeditor.c:681 #, c-format msgid "Table «%s» doesn't exists." msgstr "La tabella «%s» non esiste." -#: ../src/queryeditor.c:563 ../src/queryeditor.c:571 +#: ../src/queryeditor.c:590 ../src/queryeditor.c:598 msgid "No field added: the field must have a name." msgstr "Nessun campo aggiunto: il campo deve avere un nome." -#: ../src/queryeditor.c:681 +#: ../src/queryeditor.c:717 msgid "Relation not created: no field added to the relation." msgstr "Relazione non creata: nesuun campo aggiunto alla relazione." -#: ../src/queryeditor.c:1146 ../src/queryeditor.c:1539 +#: ../src/queryeditor.c:1182 ../src/queryeditor.c:1575 #, c-format msgid "Where type «%d» not valid." msgstr "Tipo where «%d» non valido." -#: ../src/queryeditor.c:1223 +#: ../src/queryeditor.c:1259 #, c-format msgid "Unable to create GdaStatement: %s." msgstr "Impossibile creare l'oggetto GdaStatement: %s." -#: ../src/queryeditor.c:1235 +#: ../src/queryeditor.c:1271 #, c-format msgid "Unable to create sql: %s." msgstr "Impossibile creare l'sql: %s." -#: ../src/queryeditor.c:1474 +#: ../src/queryeditor.c:1510 #, c-format msgid "Link type «%d» not valid." msgstr "Tipo collegamento «%d» non valido." -#: ../src/queryeditor.c:1634 +#: ../src/queryeditor.c:1670 #, c-format msgid "Table «%s» not found." msgstr "Tabella «%s» non trovata." -#: ../src/queryeditor.c:1642 +#: ../src/queryeditor.c:1678 #, c-format msgid "Field «%s» not found in table «%s»." msgstr "Campo «%s» non trovato nella tabella «%s»." -#: ../src/queryeditor.c:2081 +#: ../src/queryeditor.c:1865 ../src/queryeditor.c:2725 +msgid "ASC" +msgstr "ASC" + +#: ../src/queryeditor.c:1866 ../src/queryeditor.c:2729 +msgid "DESC" +msgstr "DISC" + +#: ../src/queryeditor.c:2117 msgid "Are you sure you want to remove the selected field?" msgstr "Eliminare il campo selezionato?" -#: ../src/queryeditor.c:2102 ../src/queryeditor.c:2198 -#: ../src/queryeditor.c:2841 ../src/queryeditor.c:3012 -#: ../src/queryeditor.c:3557 +#: ../src/queryeditor.c:2138 ../src/queryeditor.c:2234 +#: ../src/queryeditor.c:2803 ../src/queryeditor.c:2974 +#: ../src/queryeditor.c:3441 msgid "You must select a field before." msgstr "Occorre prima selezione un campo." -#: ../src/queryeditor.c:2260 +#: ../src/queryeditor.c:2296 msgid "Equal" msgstr "uguale a" -#: ../src/queryeditor.c:2264 +#: ../src/queryeditor.c:2300 msgid "Starts with" msgstr "inizia per" -#: ../src/queryeditor.c:2268 +#: ../src/queryeditor.c:2304 msgid "Contains" msgstr "contiene" -#: ../src/queryeditor.c:2272 +#: ../src/queryeditor.c:2308 msgid "Ends with" msgstr "finisce con" -#: ../src/queryeditor.c:2276 +#: ../src/queryeditor.c:2312 msgid "Case-insensitive starts with" msgstr "inizia per (no maiuscole/minuscole)" -#: ../src/queryeditor.c:2280 +#: ../src/queryeditor.c:2316 msgid "Case-insensitive contains" msgstr "contiene (no maiuscole/minuscole)" -#: ../src/queryeditor.c:2284 +#: ../src/queryeditor.c:2320 msgid "Case-insensitive ends with" msgstr "finisce con (no maiuscole/minuscole)" -#: ../src/queryeditor.c:2288 +#: ../src/queryeditor.c:2324 msgid "Greater" msgstr "maggiore di" -#: ../src/queryeditor.c:2292 +#: ../src/queryeditor.c:2328 msgid "Greater or equal" msgstr "maggiore di o uguale a" -#: ../src/queryeditor.c:2296 +#: ../src/queryeditor.c:2332 msgid "Lesser" msgstr "minore di" -#: ../src/queryeditor.c:2300 +#: ../src/queryeditor.c:2336 msgid "Lesser or equal" msgstr "minore di o uguale a" -#: ../src/queryeditor.c:2304 +#: ../src/queryeditor.c:2340 msgid "Between" msgstr "compreso tra" -#: ../src/queryeditor.c:2308 +#: ../src/queryeditor.c:2344 msgid "Is NULL" msgstr "è NULL" -#: ../src/queryeditor.c:2325 +#: ../src/queryeditor.c:2361 msgid "And" msgstr "e" -#: ../src/queryeditor.c:2329 +#: ../src/queryeditor.c:2365 msgid "Or" msgstr "o" -#: ../src/queryeditor.c:2643 +#: ../src/queryeditor.c:2631 msgid "You must select a link's type before." msgstr "Occorre selezionare prima un tipo di collegamento." -#: ../src/queryeditor.c:2665 +#: ../src/queryeditor.c:2653 msgid "You must select a condition's type before." msgstr "Occorre selezionare prima un tipo di condizione." #. if it is the first condition, "link" isn't visibile -#: ../src/queryeditor.c:3144 ../data/libgdaex/gui/libgdaex.ui.h:6 +#: ../src/queryeditor.c:3106 ../data/libgdaex/gui/libgdaex.ui.h:6 msgid "Link" msgstr "Collegamento" -#: ../src/queryeditor.c:3148 ../data/libgdaex/gui/libgdaex.ui.h:7 +#: ../src/queryeditor.c:3110 ../data/libgdaex/gui/libgdaex.ui.h:7 msgid "Not" msgstr "Non" -#: ../src/queryeditor.c:3151 ../data/libgdaex/gui/libgdaex.ui.h:2 +#: ../src/queryeditor.c:3113 ../data/libgdaex/gui/libgdaex.ui.h:2 msgid "Condition" msgstr "Condizione" -#: ../src/queryeditor.c:3154 +#: ../src/queryeditor.c:3116 msgid "Value" msgstr "Valore" -#: ../src/queryeditor.c:3399 +#: ../src/queryeditor.c:3319 #, c-format msgid "Field's type «%d» not valid." msgstr "Il tipo campo «%d» non è valido." -#: ../src/queryeditor.c:3649 +#: ../src/queryeditor.c:3533 msgid "Ascending" msgstr "ascendente" -#: ../src/queryeditor.c:3652 +#: ../src/queryeditor.c:3536 msgid "Descending" msgstr "discendente" diff --git a/src/Makefile.am b/src/Makefile.am index 8f2d818..9baa50e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -14,7 +14,8 @@ libgdaex_la_SOURCES = gdaex.c \ grid.c \ gridcolumn.c \ queryeditor.c \ - queryeditor_widget_interface.c + queryeditor_widget_interface.c \ + queryeditorentry.c libgdaex_la_LDFLAGS = -no-undefined @@ -23,6 +24,7 @@ libgdaex_include_HEADERS = libgdaex.h \ grid.h \ gridcolumn.h \ queryeditor.h \ - queryeditor_widget_interface.h + queryeditor_widget_interface.h \ + queryeditorentry.h libgdaex_includedir = $(includedir)/libgdaex diff --git a/src/queryeditor.c b/src/queryeditor.c index 75f5a96..af2191c 100644 --- a/src/queryeditor.c +++ b/src/queryeditor.c @@ -25,9 +25,8 @@ #include -#include - #include "queryeditor.h" +#include "queryeditorentry.h" typedef struct { @@ -160,6 +159,9 @@ static void gdaex_query_editor_on_sel_order_changed (GtkTreeSelection *treeselec #define GDAEX_QUERY_EDITOR_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TYPE_GDAEX_QUERY_EDITOR, GdaExQueryEditorPrivate)) +typedef GtkWidget *(* GtkDateEntryNew) (void); +typedef void (* GtkDateEntrySetTimeVisible) (gpointer gtkdateentry, gboolean visible); + typedef struct _GdaExQueryEditorPrivate GdaExQueryEditorPrivate; struct _GdaExQueryEditorPrivate { @@ -200,10 +202,12 @@ struct _GdaExQueryEditorPrivate GtkWidget *cb_link_type; GtkWidget *not; GtkWidget *cb_where_type; - GtkWidget *lbl_txt1; - GtkWidget *txt1; - GtkWidget *lbl_txt2; - GtkWidget *txt2; + GtkWidget *lbl_txt_alias; + GtkWidget *txt_alias; + GtkWidget *lbl_from; + GtkWidget *txt_from; + GtkWidget *lbl_to; + GtkWidget *txt_to; GtkWidget *opt_asc; GtkWidget *opt_desc; @@ -585,6 +589,39 @@ gdaex_query_editor_table_add_field (GdaExQueryEditor *qe, } } + if (!GDAEX_QUERY_EDITOR_IS_IWIDGET (_field->iwidget_from)) + { + _field->iwidget_from = GDAEX_QUERY_EDITOR_IWIDGET (gdaex_query_editor_entry_new ()); + if (_field->type == GDAEX_QE_FIELD_TYPE_DATE) + { + gtk_entry_set_max_length (GTK_ENTRY (_field->iwidget_from), 10); + } + else if (_field->type == GDAEX_QE_FIELD_TYPE_DATETIME) + { + gtk_entry_set_max_length (GTK_ENTRY (_field->iwidget_from), 19); + } + else if (_field->type == GDAEX_QE_FIELD_TYPE_TIME) + { + gtk_entry_set_max_length (GTK_ENTRY (_field->iwidget_from), 8); + } + } + if (!GDAEX_QUERY_EDITOR_IS_IWIDGET (_field->iwidget_to)) + { + _field->iwidget_to = GDAEX_QUERY_EDITOR_IWIDGET (gdaex_query_editor_entry_new ()); + if (_field->type == GDAEX_QE_FIELD_TYPE_DATE) + { + gtk_entry_set_max_length (GTK_ENTRY (_field->iwidget_to), 10); + } + else if (_field->type == GDAEX_QE_FIELD_TYPE_DATETIME) + { + gtk_entry_set_max_length (GTK_ENTRY (_field->iwidget_to), 19); + } + else if (_field->type == GDAEX_QE_FIELD_TYPE_TIME) + { + gtk_entry_set_max_length (GTK_ENTRY (_field->iwidget_to), 8); + } + } + g_hash_table_insert (table->fields, _field->name, _field); ret = TRUE; @@ -1825,8 +1862,8 @@ gdaex_query_editor_load_choices_from_xml (GdaExQueryEditor *qe, xmlNode *root, gchar *asc_desc; asc_desc = xmlGetProp (node_field, "asc_desc"); - if (g_strcmp0 (asc_desc, "ASC") == 0 - || g_strcmp0 (asc_desc, "DESC") == 0) + if (g_strcmp0 (asc_desc, _("ASC")) == 0 + || g_strcmp0 (asc_desc, _("DESC")) == 0) { gtk_list_store_append (priv->lstore_order, &iter); gtk_list_store_set (priv->lstore_order, &iter, @@ -2466,74 +2503,26 @@ gdaex_query_editor_on_cb_where_type_changed (GtkComboBox *widget, 0, &where_type, -1); - gtk_widget_set_visible (priv->lbl_txt1, where_type != GDAEX_QE_WHERE_TYPE_IS_NULL); - gtk_widget_set_visible (priv->txt1, where_type != GDAEX_QE_WHERE_TYPE_IS_NULL); + gtk_widget_set_visible (priv->lbl_from, where_type != GDAEX_QE_WHERE_TYPE_IS_NULL); + gtk_widget_set_visible (priv->txt_from, where_type != GDAEX_QE_WHERE_TYPE_IS_NULL); if (where_type == GDAEX_QE_WHERE_TYPE_IS_NULL) { - if (GTK_IS_DATE_ENTRY (priv->txt1)) - { - gtk_date_entry_set_date_gdatetime (GTK_DATE_ENTRY (priv->txt1), NULL); - } - else if (GDAEX_QUERY_EDITOR_IS_IWIDGET (priv->txt1)) - { - gdaex_query_editor_iwidget_set_value (GDAEX_QUERY_EDITOR_IWIDGET (priv->txt1), ""); - } - else - { - gtk_entry_set_text (GTK_ENTRY (priv->txt1), ""); - } + gdaex_query_editor_iwidget_set_value (GDAEX_QUERY_EDITOR_IWIDGET (priv->txt_from), ""); } - gtk_widget_set_visible (priv->lbl_txt2, where_type == GDAEX_QE_WHERE_TYPE_BETWEEN); - gtk_widget_set_visible (priv->txt2, where_type == GDAEX_QE_WHERE_TYPE_BETWEEN); + gtk_widget_set_visible (priv->lbl_to, where_type == GDAEX_QE_WHERE_TYPE_BETWEEN); + gtk_widget_set_visible (priv->txt_to, where_type == GDAEX_QE_WHERE_TYPE_BETWEEN); if (where_type != GDAEX_QE_WHERE_TYPE_BETWEEN) { - if (GTK_IS_DATE_ENTRY (priv->txt2)) - { - gtk_date_entry_set_date_gdatetime (GTK_DATE_ENTRY (priv->txt2), NULL); - } - else if (GDAEX_QUERY_EDITOR_IS_IWIDGET (priv->txt2)) - { - gdaex_query_editor_iwidget_set_value (GDAEX_QUERY_EDITOR_IWIDGET (priv->txt2), ""); - } - else - { - gtk_entry_set_text (GTK_ENTRY (priv->txt2), ""); - } + gdaex_query_editor_iwidget_set_value (GDAEX_QUERY_EDITOR_IWIDGET (priv->txt_to), ""); gtk_table_set_row_spacing (GTK_TABLE (priv->tbl), 1, 0); } else { - if (GTK_IS_DATE_ENTRY (priv->txt1)) - { - gtk_date_entry_set_date_gdatetime (GTK_DATE_ENTRY (priv->txt1), - g_date_time_new_now_local ()); - } - else if (GDAEX_QUERY_EDITOR_IS_IWIDGET (priv->txt1)) - { - gdaex_query_editor_iwidget_set_value (GDAEX_QUERY_EDITOR_IWIDGET (priv->txt1), ""); - } - else - { - gtk_entry_set_text (GTK_ENTRY (priv->txt1), ""); - } - - if (GTK_IS_DATE_ENTRY (priv->txt2)) - { - gtk_date_entry_set_date_gdatetime (GTK_DATE_ENTRY (priv->txt2), - g_date_time_new_now_local ()); - } - else if (GDAEX_QUERY_EDITOR_IS_IWIDGET (priv->txt2)) - { - gdaex_query_editor_iwidget_set_value (GDAEX_QUERY_EDITOR_IWIDGET (priv->txt2), ""); - } - else - { - gtk_entry_set_text (GTK_ENTRY (priv->txt2), ""); - } - + gdaex_query_editor_iwidget_set_value (GDAEX_QUERY_EDITOR_IWIDGET (priv->txt_from), ""); + gdaex_query_editor_iwidget_set_value (GDAEX_QUERY_EDITOR_IWIDGET (priv->txt_to), ""); gtk_table_set_row_spacing (GTK_TABLE (priv->tbl), 1, 5); } } @@ -2595,7 +2584,7 @@ gdaex_query_editor_on_btn_save_clicked (GtkButton *button, case GDAEX_QE_PAGE_SHOW: if (gtk_tree_selection_get_selected (priv->sel_show, NULL, &iter)) { - val1 = (gchar *)gtk_entry_get_text (GTK_ENTRY (priv->txt1)); + val1 = (gchar *)gtk_entry_get_text (GTK_ENTRY (priv->txt_alias)); if (val1 == NULL) { val1 = g_strdup (""); @@ -2671,21 +2660,8 @@ gdaex_query_editor_on_btn_save_clicked (GtkButton *button, 0, &where_type, -1); - if (GTK_IS_DATE_ENTRY (priv->txt1)) - { - val1 = (gchar *)gtk_date_entry_get_strf (GTK_DATE_ENTRY (priv->txt1), gtk_date_entry_is_time_visible (GTK_DATE_ENTRY (priv->txt1)) ? "dmYHMS" : "dmY", NULL, NULL); - val1_sql = (gchar *)gtk_date_entry_get_sql (GTK_DATE_ENTRY (priv->txt1)); - } - else if (GDAEX_QUERY_EDITOR_IS_IWIDGET (priv->txt1)) - { - val1 = (gchar *)gdaex_query_editor_iwidget_get_value (GDAEX_QUERY_EDITOR_IWIDGET (priv->txt1)); - val1_sql = (gchar *)gdaex_query_editor_iwidget_get_value_sql (GDAEX_QUERY_EDITOR_IWIDGET (priv->txt1)); - } - else - { - val1 = (gchar *)gtk_entry_get_text (GTK_ENTRY (priv->txt1)); - val1_sql = (gchar *)gtk_entry_get_text (GTK_ENTRY (priv->txt1)); - } + val1 = (gchar *)gdaex_query_editor_iwidget_get_value (GDAEX_QUERY_EDITOR_IWIDGET (priv->txt_from)); + val1_sql = (gchar *)gdaex_query_editor_iwidget_get_value_sql (GDAEX_QUERY_EDITOR_IWIDGET (priv->txt_from)); if (val1 == NULL) { val1 = g_strdup (""); @@ -2703,21 +2679,8 @@ gdaex_query_editor_on_btn_save_clicked (GtkButton *button, val1_sql = g_strdup (val1_sql); } - if (GTK_IS_DATE_ENTRY (priv->txt2)) - { - val2 = (gchar *)gtk_date_entry_get_strf (GTK_DATE_ENTRY (priv->txt2), gtk_date_entry_is_time_visible (GTK_DATE_ENTRY (priv->txt2)) ? "dmYHMS" : "dmY", NULL, NULL); - val2_sql = (gchar *)gtk_date_entry_get_sql (GTK_DATE_ENTRY (priv->txt2)); - } - else if (GDAEX_QUERY_EDITOR_IS_IWIDGET (priv->txt2)) - { - val2 = (gchar *)gdaex_query_editor_iwidget_get_value (GDAEX_QUERY_EDITOR_IWIDGET (priv->txt2)); - val2_sql = (gchar *)gdaex_query_editor_iwidget_get_value_sql (GDAEX_QUERY_EDITOR_IWIDGET (priv->txt2)); - } - else - { - val2 = (gchar *)gtk_entry_get_text (GTK_ENTRY (priv->txt2)); - val2_sql = (gchar *)gtk_entry_get_text (GTK_ENTRY (priv->txt2)); - } + val2 = (gchar *)gdaex_query_editor_iwidget_get_value (GDAEX_QUERY_EDITOR_IWIDGET (priv->txt_to)); + val2_sql = (gchar *)gdaex_query_editor_iwidget_get_value_sql (GDAEX_QUERY_EDITOR_IWIDGET (priv->txt_to)); if (val2 == NULL) { val2 = g_strdup (""); @@ -2759,11 +2722,11 @@ gdaex_query_editor_on_btn_save_clicked (GtkButton *button, { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->opt_asc))) { - asc_desc = g_strdup ("ASC"); + asc_desc = g_strdup (_("ASC")); } else { - asc_desc = g_strdup ("DESC"); + asc_desc = g_strdup (_("DESC")); } gtk_list_store_set (priv->lstore_order, &iter, @@ -2948,9 +2911,9 @@ gdaex_query_editor_on_sel_show_changed (GtkTreeSelection *treeselection, lbl = gtk_label_new (g_strconcat (table->name_visible, " - ", field->name_visible, NULL)); gtk_table_attach (GTK_TABLE (tbl), lbl, 0, 1, 1, 2, 0, 0, 0, 0); - priv->txt1 = gtk_entry_new (); - gtk_entry_set_text (GTK_ENTRY (priv->txt1), alias == NULL ? "" : alias); - gtk_table_attach (GTK_TABLE (tbl), priv->txt1, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0); + priv->txt_alias = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (priv->txt_alias), alias == NULL ? "" : alias); + gtk_table_attach (GTK_TABLE (tbl), priv->txt_alias, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0); } gtk_box_pack_start (GTK_BOX (priv->vbx_values), priv->hbox_show, FALSE, FALSE, 0); @@ -3127,8 +3090,8 @@ gdaex_query_editor_on_sel_where_changed (GtkTreeSelection *treeselection, if (GTK_IS_HBOX (priv->hbox_where)) { gtk_combo_box_set_active_iter (GTK_COMBO_BOX (priv->cb_link_type), NULL); - gtk_container_remove (GTK_CONTAINER (priv->tbl), GTK_WIDGET (priv->txt1)); - gtk_container_remove (GTK_CONTAINER (priv->tbl), GTK_WIDGET (priv->txt2)); + gtk_container_remove (GTK_CONTAINER (priv->tbl), GTK_WIDGET (priv->txt_from)); + gtk_container_remove (GTK_CONTAINER (priv->tbl), GTK_WIDGET (priv->txt_to)); } else { @@ -3150,8 +3113,8 @@ gdaex_query_editor_on_sel_where_changed (GtkTreeSelection *treeselection, lbl = gtk_label_new (_("Condition")); gtk_table_attach (GTK_TABLE (priv->tbl), lbl, 3, 4, 0, 1, GTK_FILL, 0, 0, 0); - priv->lbl_txt1 = gtk_label_new (_("Value")); - gtk_table_attach (GTK_TABLE (priv->tbl), priv->lbl_txt1, 4, 5, 0, 1, GTK_EXPAND | GTK_FILL, 0, 0, 0); + priv->lbl_from = gtk_label_new (_("Value")); + gtk_table_attach (GTK_TABLE (priv->tbl), priv->lbl_from, 4, 5, 0, 1, GTK_EXPAND | GTK_FILL, 0, 0, 0); /* link */ priv->cb_link_type = gtk_combo_box_new_with_model (GTK_TREE_MODEL (priv->lstore_link_type)); @@ -3193,9 +3156,9 @@ gdaex_query_editor_on_sel_where_changed (GtkTreeSelection *treeselection, g_signal_connect (G_OBJECT (priv->cb_where_type), "changed", G_CALLBACK (gdaex_query_editor_on_cb_where_type_changed), user_data); - priv->lbl_txt2 = gtk_label_new ("and"); - gtk_misc_set_alignment (GTK_MISC (priv->lbl_txt2), 1.0, 0.5); - gtk_table_attach (GTK_TABLE (priv->tbl), priv->lbl_txt2, 3, 4, 2, 3, GTK_FILL, 0, 0, 0); + priv->lbl_to = gtk_label_new ("and"); + gtk_misc_set_alignment (GTK_MISC (priv->lbl_to), 1.0, 0.5); + gtk_table_attach (GTK_TABLE (priv->tbl), priv->lbl_to, 3, 4, 2, 3, GTK_FILL, 0, 0, 0); } /* if it is the first condition, "link" isn't visibile */ @@ -3340,67 +3303,27 @@ gdaex_query_editor_on_sel_where_changed (GtkTreeSelection *treeselection, switch (field->type) { - /* TODO for now are all equals */ case GDAEX_QE_FIELD_TYPE_TEXT: - priv->txt1 = gtk_entry_new (); - priv->txt2 = gtk_entry_new (); - break; - case GDAEX_QE_FIELD_TYPE_INTEGER: - if (GDAEX_QUERY_EDITOR_IS_IWIDGET (field->iwidget_from)) - { - priv->txt1 = GTK_WIDGET (field->iwidget_from); - g_object_ref (priv->txt1); - } - else - { - priv->txt1 = gtk_entry_new (); - } - - if (GDAEX_QUERY_EDITOR_IS_IWIDGET (field->iwidget_to)) - { - priv->txt2 = GTK_WIDGET (field->iwidget_to); - g_object_ref (priv->txt2); - } - else - { - priv->txt2 = gtk_entry_new (); - } - break; - case GDAEX_QE_FIELD_TYPE_DOUBLE: - priv->txt1 = gtk_entry_new (); - priv->txt2 = gtk_entry_new (); - break; - case GDAEX_QE_FIELD_TYPE_DATE: - priv->txt1 = gtk_date_entry_new (NULL, NULL, TRUE); - gtk_date_entry_set_time_visible (GTK_DATE_ENTRY (priv->txt1), FALSE); - priv->txt2 = gtk_date_entry_new (NULL, NULL, TRUE); - gtk_date_entry_set_time_visible (GTK_DATE_ENTRY (priv->txt2), FALSE); - break; - case GDAEX_QE_FIELD_TYPE_DATETIME: - priv->txt1 = gtk_date_entry_new (NULL, NULL, TRUE); - gtk_date_entry_set_time_separator (GTK_DATE_ENTRY (priv->txt1), "."); - priv->txt2 = gtk_date_entry_new (NULL, NULL, TRUE); - gtk_date_entry_set_time_separator (GTK_DATE_ENTRY (priv->txt2), "."); - break; - case GDAEX_QE_FIELD_TYPE_TIME: - priv->txt1 = gtk_entry_new (); - gtk_entry_set_max_length (GTK_ENTRY (priv->txt1), 8); - priv->txt2 = gtk_entry_new (); - gtk_entry_set_max_length (GTK_ENTRY (priv->txt2), 8); + priv->txt_from = GTK_WIDGET (field->iwidget_from); + g_object_ref (G_OBJECT (field->iwidget_from)); + priv->txt_to = GTK_WIDGET (field->iwidget_to); + g_object_ref (G_OBJECT (field->iwidget_to)); break; default: + priv->txt_from = NULL; + priv->txt_to = NULL; g_warning (_("Field's type «%d» not valid."), field->type); break; }; - gtk_table_attach (GTK_TABLE (priv->tbl), priv->txt1, 4, 5, 1, 2, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0, 0); - gtk_table_attach (GTK_TABLE (priv->tbl), priv->txt2, 4, 5, 2, 3, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0, 0); + gtk_table_attach (GTK_TABLE (priv->tbl), priv->txt_from, 4, 5, 1, 2, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0, 0); + gtk_table_attach (GTK_TABLE (priv->tbl), priv->txt_to, 4, 5, 2, 3, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0, 0); gtk_box_pack_start (GTK_BOX (priv->vbx_values), priv->hbox_where, FALSE, FALSE, 0); @@ -3433,70 +3356,33 @@ gdaex_query_editor_on_sel_where_changed (GtkTreeSelection *treeselection, switch (field->type) { - /* TODO for now are all equals */ case GDAEX_QE_FIELD_TYPE_TEXT: - gtk_entry_set_text (GTK_ENTRY (priv->txt1), from == NULL ? "" : from); - gtk_entry_set_text (GTK_ENTRY (priv->txt2), to == NULL ? "" : to); - break; - case GDAEX_QE_FIELD_TYPE_INTEGER: - if (GDAEX_QUERY_EDITOR_IS_IWIDGET (field->iwidget_from)) - { - gdaex_query_editor_iwidget_set_value (field->iwidget_from, from_sql == NULL ? "0" : from_sql); - } - else - { - gtk_entry_set_text (GTK_ENTRY (priv->txt1), from == NULL ? "" : from); - } - - if (GDAEX_QUERY_EDITOR_IS_IWIDGET (field->iwidget_to)) - { - gdaex_query_editor_iwidget_set_value (field->iwidget_to, to_sql == NULL ? "0" : to_sql); - } - else - { - gtk_entry_set_text (GTK_ENTRY (priv->txt2), to == NULL ? "" : to); - } - break; - case GDAEX_QE_FIELD_TYPE_DOUBLE: - gtk_entry_set_text (GTK_ENTRY (priv->txt1), from == NULL ? "" : from); - gtk_entry_set_text (GTK_ENTRY (priv->txt2), to == NULL ? "" : to); - break; - case GDAEX_QE_FIELD_TYPE_DATE: - gtk_date_entry_set_date_strf (GTK_DATE_ENTRY (priv->txt1), from_sql == NULL ? g_date_time_format (g_date_time_new_now_local (), "%Y-%m-%d") : from_sql, "Ymd"); - gtk_date_entry_set_date_strf (GTK_DATE_ENTRY (priv->txt2), to_sql == NULL ? g_date_time_format (g_date_time_new_now_local (), "%Y-%m-%d") : to_sql, "Ymd"); - break; - case GDAEX_QE_FIELD_TYPE_DATETIME: - gtk_date_entry_set_date_strf (GTK_DATE_ENTRY (priv->txt1), from_sql == NULL ? g_date_time_format (g_date_time_new_now_local (), "%Y-%m-%d %H.%M.%S") : from_sql, "YmdHMS"); - gtk_date_entry_set_date_strf (GTK_DATE_ENTRY (priv->txt2), to_sql == NULL ? g_date_time_format (g_date_time_new_now_local (), "%Y-%m-%d %H.%M.%S") : to_sql, "YmdHMS"); - break; - case GDAEX_QE_FIELD_TYPE_TIME: - gtk_entry_set_text (GTK_ENTRY (priv->txt1), from == NULL ? "" : from); - gtk_entry_set_text (GTK_ENTRY (priv->txt2), to == NULL ? "" : to); + gdaex_query_editor_iwidget_set_value (field->iwidget_from, from_sql == NULL ? "" : from_sql); + gdaex_query_editor_iwidget_set_value (field->iwidget_to, to_sql == NULL ? "" : to_sql); break; default: - g_warning ("Field's type «%d» not valid.", field->type); break; }; gtk_widget_show_all (priv->vbx_values); gtk_widget_show (priv->vbx_values_container); - gtk_widget_set_visible (priv->lbl_txt1, where_type != GDAEX_QE_WHERE_TYPE_IS_NULL); - gtk_widget_set_visible (priv->txt1, where_type != GDAEX_QE_WHERE_TYPE_IS_NULL); + gtk_widget_set_visible (priv->lbl_from, where_type != GDAEX_QE_WHERE_TYPE_IS_NULL); + gtk_widget_set_visible (priv->txt_from, where_type != GDAEX_QE_WHERE_TYPE_IS_NULL); if (where_type == GDAEX_QE_WHERE_TYPE_IS_NULL) { gtk_table_set_col_spacing (GTK_TABLE (priv->tbl), 3, 0); } - gtk_widget_set_visible (priv->lbl_txt2, where_type == GDAEX_QE_WHERE_TYPE_BETWEEN); - gtk_widget_set_visible (priv->txt2, where_type == GDAEX_QE_WHERE_TYPE_BETWEEN); + gtk_widget_set_visible (priv->lbl_to, where_type == GDAEX_QE_WHERE_TYPE_BETWEEN); + gtk_widget_set_visible (priv->txt_to, where_type == GDAEX_QE_WHERE_TYPE_BETWEEN); if (where_type == 0) { diff --git a/src/queryeditorentry.c b/src/queryeditorentry.c new file mode 100644 index 0000000..fceb7f4 --- /dev/null +++ b/src/queryeditorentry.c @@ -0,0 +1,141 @@ +/* + * Copyright (C) 2011 Andrea Zagli + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H + #include "config.h" +#endif + +#include "libgdaex.h" + +#include "queryeditorentry.h" + +static void gdaex_query_editor_entry_class_init (GdaExQueryEditorEntryClass *klass); +static void gdaex_query_editor_entry_init (GdaExQueryEditorEntry *masked_entry); + +static void gdaex_query_editor_entry_gdaex_query_editor_iwidget_interface_init (GdaExQueryEditorIWidgetIface *iface); + +static void gdaex_query_editor_entry_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec); +static void gdaex_query_editor_entry_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec); + +static const gchar *gdaex_query_editor_entry_get_value (GdaExQueryEditorIWidget *iwidget); +static const gchar *gdaex_query_editor_entry_get_value_sql (GdaExQueryEditorIWidget *iwidget); +static void gdaex_query_editor_entry_set_value (GdaExQueryEditorIWidget *iwidget, const gchar *value); + +#define GDAEX_QUERY_EDITOR_ENTRY_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_MASKED_ENTRY, GdaExQueryEditorEntryPrivate)) + +typedef struct _GdaExQueryEditorEntryPrivate GdaExQueryEditorEntryPrivate; +struct _GdaExQueryEditorEntryPrivate + { + gpointer foo; + }; + +G_DEFINE_TYPE_WITH_CODE (GdaExQueryEditorEntry, gdaex_query_editor_entry, GTK_TYPE_ENTRY, + G_IMPLEMENT_INTERFACE (GDAEX_QUERY_EDITOR_TYPE_IWIDGET, + gdaex_query_editor_entry_gdaex_query_editor_iwidget_interface_init)); + +static void +gdaex_query_editor_entry_class_init (GdaExQueryEditorEntryClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (object_class, sizeof (GdaExQueryEditorEntryPrivate)); + + object_class->set_property = gdaex_query_editor_entry_set_property; + object_class->get_property = gdaex_query_editor_entry_get_property; +} + +static void +gdaex_query_editor_entry_init (GdaExQueryEditorEntry *masked_entry) +{ + GdaExQueryEditorEntryPrivate *priv = GDAEX_QUERY_EDITOR_ENTRY_GET_PRIVATE (masked_entry); +} + +static void +gdaex_query_editor_entry_gdaex_query_editor_iwidget_interface_init (GdaExQueryEditorIWidgetIface *iface) +{ + iface->get_value = gdaex_query_editor_entry_get_value; + iface->get_value_sql = gdaex_query_editor_entry_get_value_sql; + iface->set_value = gdaex_query_editor_entry_set_value; +} + +/** + * gdaex_query_editor_entry_new: + * + * Creates a new #GdaExQueryEditorEntry widget. + * + * Returns: the newly created #GdaExQueryEditorEntry widget. + */ +GtkWidget* +gdaex_query_editor_entry_new () +{ + return GTK_WIDGET (g_object_new (gdaex_query_editor_entry_get_type (), NULL)); +} + +static void +gdaex_query_editor_entry_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) +{ + GdaExQueryEditorEntry *masked_entry = GDAEX_QUERY_EDITOR_ENTRY (object); + GdaExQueryEditorEntryPrivate *priv = GDAEX_QUERY_EDITOR_ENTRY_GET_PRIVATE (masked_entry); + + switch (property_id) + { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +gdaex_query_editor_entry_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) +{ + GdaExQueryEditorEntry *masked_entry = GDAEX_QUERY_EDITOR_ENTRY (object); + GdaExQueryEditorEntryPrivate *priv = GDAEX_QUERY_EDITOR_ENTRY_GET_PRIVATE (masked_entry); + + switch (property_id) + { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static const gchar +*gdaex_query_editor_entry_get_value (GdaExQueryEditorIWidget *iwidget) +{ + return gtk_entry_get_text (GTK_ENTRY (iwidget)); +} + +static const gchar +*gdaex_query_editor_entry_get_value_sql (GdaExQueryEditorIWidget *iwidget) +{ + return gtk_entry_get_text (GTK_ENTRY (iwidget)); +} + +static void +gdaex_query_editor_entry_set_value (GdaExQueryEditorIWidget *iwidget, + const gchar *value) +{ + gtk_entry_set_text (GTK_ENTRY (iwidget), value); +} diff --git a/src/queryeditorentry.h b/src/queryeditorentry.h new file mode 100644 index 0000000..01fc784 --- /dev/null +++ b/src/queryeditorentry.h @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2011 Andrea Zagli + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GDAEX_QUERY_EDITOR_ENTRY_H__ +#define __GDAEX_QUERY_EDITOR_ENTRY_H__ + +#include + + +G_BEGIN_DECLS + + +#define GTK_TYPE_MASKED_ENTRY (gdaex_query_editor_entry_get_type ()) +#define GDAEX_QUERY_EDITOR_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_MASKED_ENTRY, GdaExQueryEditorEntry)) +#define GDAEX_QUERY_EDITOR_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_MASKED_ENTRY, GdaExQueryEditorEntryClass)) +#define GTK_IS_MASKED_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_MASKED_ENTRY)) +#define GTK_IS_MASKED_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_MASKED_ENTRY)) +#define GDAEX_QUERY_EDITOR_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_MASKED_ENTRY, GdaExQueryEditorEntryClass)) + + +typedef struct _GdaExQueryEditorEntry GdaExQueryEditorEntry; +typedef struct _GdaExQueryEditorEntryClass GdaExQueryEditorEntryClass; + + +struct _GdaExQueryEditorEntry +{ + GtkEntry entry; +}; + +struct _GdaExQueryEditorEntryClass +{ + GtkEntryClass parent_class; +}; + + +GType gdaex_query_editor_entry_get_type (void) G_GNUC_CONST; + +GtkWidget *gdaex_query_editor_entry_new (void); + + +G_END_DECLS + + +#endif /* __GDAEX_QUERY_EDITOR_ENTRY_H__ */ -- 2.49.0