static void sql_indent_clicked_cb (G_GNUC_UNUSED GtkButton *button, QueryConsolePage *tconsole) { gchar *sql; GdaBatch *batch; if (!tconsole->priv->parser) tconsole->priv->parser = t_connection_create_parser (tconsole->priv->tcnc); sql = query_editor_get_all_text (tconsole->priv->editor); batch = gda_sql_parser_parse_string_as_batch (tconsole->priv->parser, sql, NULL, NULL); g_free (sql); if (batch) { GString *string; const GSList *stmt_list, *list; stmt_list = gda_batch_get_statements (batch); string = g_string_new (""); for (list = stmt_list; list; list = list->next) { sql = t_connection_render_pretty_sql (tconsole->priv->tcnc, GDA_STATEMENT (list->data)); if (!sql) sql = gda_statement_to_sql (GDA_STATEMENT (list->data), NULL, NULL); if (list != stmt_list) g_string_append (string, "\n\n"); g_string_append_printf (string, "%s;\n", sql); g_free (sql); } g_object_unref (batch); query_editor_set_text (tconsole->priv->editor, string->str); g_string_free (string, TRUE); } }
static void sql_favorite_new_mitem_cb (G_GNUC_UNUSED GtkMenuItem *mitem, QueryConsolePage *tconsole) { TFavorites *tfav; TFavoritesAttributes fav; GError *error = NULL; GdaSet *set; GtkWidget *dlg, *form; gint response; const GValue *cvalue; set = gda_set_new_inline (1, _("Favorite's name"), G_TYPE_STRING, _("Unnamed query")); dlg = gdaui_basic_form_new_in_dialog (set, (GtkWindow*) gtk_widget_get_toplevel (GTK_WIDGET (tconsole)), _("Name of the favorite to create"), _("Enter the name of the favorite to create")); form = g_object_get_data (G_OBJECT (dlg), "form"); g_signal_connect (form, "activated", G_CALLBACK (fav_form_name_activated_cb), dlg); response = gtk_dialog_run (GTK_DIALOG (dlg)); if (response == GTK_RESPONSE_REJECT) { g_object_unref (set); gtk_widget_destroy (dlg); return; } memset (&fav, 0, sizeof (fav)); fav.id = -1; fav.type = T_FAVORITES_QUERIES; fav.contents = query_editor_get_all_text (tconsole->priv->editor); cvalue = gda_set_get_holder_value (set, _("Favorite's name")); fav.name = (gchar*) g_value_get_string (cvalue); tfav = t_connection_get_favorites (tconsole->priv->tcnc); if (! t_favorites_add (tfav, 0, &fav, ORDER_KEY_QUERIES, G_MAXINT, &error)) { ui_show_error ((GtkWindow*) gtk_widget_get_toplevel ((GtkWidget*) tconsole), _("Could not add favorite: %s"), error && error->message ? error->message : _("No detail")); if (error) g_error_free (error); } else tconsole->priv->fav_id = fav.id; g_free (fav.contents); g_object_unref (set); gtk_widget_destroy (dlg); }
static void sql_favorite_modify_mitem_cb (G_GNUC_UNUSED GtkMenuItem *mitem, QueryConsolePage *tconsole) { TFavorites *tfav; TFavoritesAttributes fav; GError *error = NULL; memset (&fav, 0, sizeof (fav)); fav.id = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (mitem), "favid")); fav.type = T_FAVORITES_QUERIES; fav.contents = query_editor_get_all_text (tconsole->priv->editor); fav.name = g_object_get_data (G_OBJECT (mitem), "favname"); tfav = t_connection_get_favorites (tconsole->priv->tcnc); if (! t_favorites_add (tfav, 0, &fav, ORDER_KEY_QUERIES, G_MAXINT, &error)) { ui_show_error ((GtkWindow*) gtk_widget_get_toplevel ((GtkWidget*) tconsole), _("Could not add favorite: %s"), error && error->message ? error->message : _("No detail")); if (error) g_error_free (error); } g_free (fav.contents); }
static gboolean prop_save_timeout (QueryFavoriteSelector *tsel) { TFavorites *bfav; TFavoritesAttributes fav; GError *error = NULL; gboolean allok, actiondel = TRUE; bfav = t_connection_get_favorites (tsel->priv->tcnc); memset (&fav, 0, sizeof (TFavoritesAttributes)); fav.id = tsel->priv->properties_id; fav.type = T_FAVORITES_QUERIES; fav.name = (gchar*) gtk_entry_get_text (GTK_ENTRY (tsel->priv->properties_name)); fav.descr = NULL; fav.contents = query_editor_get_all_text (QUERY_EDITOR (tsel->priv->properties_text)); allok = t_favorites_add (bfav, 0, &fav, ORDER_KEY_QUERIES, tsel->priv->properties_position, &error); if (! allok) { ui_show_error ((GtkWindow*) gtk_widget_get_toplevel ((GtkWidget*) tsel), _("Could not add favorite: %s"), error && error->message ? error->message : _("No detail")); if (error) g_error_free (error); } g_free (fav.contents); if (allok && (fav.id >= 0)) { gboolean is_action; gint qid = fav.id; is_action = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tsel->priv->properties_action)); if (is_action) { fav.id = -1; fav.type = T_FAVORITES_ACTIONS; fav.name = (gchar*) gtk_entry_get_text (GTK_ENTRY (tsel->priv->properties_name)); fav.descr = NULL; fav.contents = g_strdup_printf ("QUERY%d", qid); allok = t_favorites_add (bfav, 0, &fav, -1, tsel->priv->properties_position, &error); if (! allok) { ui_show_error ((GtkWindow*) gtk_widget_get_toplevel ((GtkWidget*) tsel), _("Could not add action: %s"), error && error->message ? error->message : _("No detail")); if (error) g_error_free (error); } else actiondel = FALSE; /*g_print ("ACTION_ADDED %d: %s\n", fav.id, fav.contents);*/ g_free (fav.contents); } } if (actiondel && (tsel->priv->properties_id >= 0)) { /* remove action */ gint id; gchar *tmp; tmp = g_strdup_printf ("QUERY%d", tsel->priv->properties_id); id = t_favorites_find (bfav, 0, tmp, &fav, NULL); if (id >= 0) { t_favorites_delete (bfav, 0, &fav, NULL); /*g_print ("ACTION_DELETED %d: %s\n", fav.id, tmp);*/ } g_free (tmp); } tsel->priv->prop_save_timeout = 0; return FALSE; /* remove timeout */ }
static void sql_execute_clicked_cb (G_GNUC_UNUSED GtkButton *button, QueryConsolePage *tconsole) { gchar *sql; if (tconsole->priv->params_popup) gtk_widget_hide (tconsole->priv->params_popup); /* compute parameters if necessary */ if (tconsole->priv->params_compute_id > 0) { g_source_remove (tconsole->priv->params_compute_id); tconsole->priv->params_compute_id = 0; compute_params (tconsole); } if (tconsole->priv->params) { if (! gdaui_basic_form_is_valid (GDAUI_BASIC_FORM (tconsole->priv->params_form))) { GtkWidget *form, *cont; if (! tconsole->priv->params_popup) { tconsole->priv->params_popup = popup_container_new_with_func (popup_container_position_func); g_object_set_data (G_OBJECT (tconsole->priv->params_popup), "console", tconsole); GtkWidget *vbox, *label, *bbox, *button; gchar *str; vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_add (GTK_CONTAINER (tconsole->priv->params_popup), vbox); gtk_container_set_border_width (GTK_CONTAINER (tconsole->priv->params_popup), 10); label = gtk_label_new (""); str = g_strdup_printf ("<b>%s</b>:\n<small>%s</small>", _("Invalid variable's contents"), _("assign values to the following variables")); gtk_label_set_markup (GTK_LABEL (label), str); g_free (str); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); cont = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start (GTK_BOX (vbox), cont, FALSE, FALSE, 10); g_object_set_data (G_OBJECT (tconsole->priv->params_popup), "cont", cont); bbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL); gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, FALSE, 10); gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END); button = gtk_button_new_from_icon_name ("system-run-symbolic", GTK_ICON_SIZE_BUTTON); gtk_box_pack_start (GTK_BOX (bbox), button, TRUE, TRUE, 0); g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_hide), tconsole->priv->params_popup); g_signal_connect (button, "clicked", G_CALLBACK (sql_execute_clicked_cb), tconsole); gtk_widget_set_sensitive (button, FALSE); g_object_set_data (G_OBJECT (tconsole->priv->params_popup), "exec", button); button = gtk_button_new_with_mnemonic (_("_Cancel")); gtk_box_pack_start (GTK_BOX (bbox), button, TRUE, TRUE, 0); g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_hide), tconsole->priv->params_popup); } else { form = g_object_get_data (G_OBJECT (tconsole->priv->params_popup), "form"); if (form) gtk_widget_destroy (form); } cont = g_object_get_data (G_OBJECT (tconsole->priv->params_popup), "cont"); form = gdaui_basic_form_new (tconsole->priv->params); g_object_set ((GObject*) form, "show-actions", TRUE, NULL); g_signal_connect (form, "holder-changed", G_CALLBACK (params_form_changed_cb), tconsole); g_signal_connect (form, "activated", G_CALLBACK (sql_execute_clicked_cb), tconsole); gtk_box_pack_start (GTK_BOX (cont), form, TRUE, TRUE, 0); g_object_set_data (G_OBJECT (tconsole->priv->params_popup), "form", form); gtk_widget_show_all (tconsole->priv->params_popup); return; } } sql = query_editor_get_all_text (tconsole->priv->editor); actually_execute (tconsole, sql, tconsole->priv->params, TRUE); g_free (sql); }
static gboolean compute_params (QueryConsolePage *tconsole) { gchar *sql; GdaBatch *batch; if (tconsole->priv->params) { t_connection_keep_variables (tconsole->priv->tcnc, tconsole->priv->params); g_object_unref (tconsole->priv->params); } tconsole->priv->params = NULL; if (tconsole->priv->params_form) { gtk_widget_destroy (tconsole->priv->params_form); tconsole->priv->params_form = NULL; } if (!tconsole->priv->parser) tconsole->priv->parser = t_connection_create_parser (tconsole->priv->tcnc); sql = query_editor_get_all_text (tconsole->priv->editor); batch = gda_sql_parser_parse_string_as_batch (tconsole->priv->parser, sql, NULL, NULL); g_free (sql); if (batch) { GError *error = NULL; gboolean show_variables = FALSE; if (gda_batch_get_parameters (batch, &(tconsole->priv->params), &error)) { if (tconsole->priv->params) { t_connection_define_ui_plugins_for_batch (tconsole->priv->tcnc, batch, tconsole->priv->params); show_variables = TRUE; tconsole->priv->params_form = gdaui_basic_form_new (tconsole->priv->params); g_object_set ((GObject*) tconsole->priv->params_form, "show-actions", TRUE, NULL); g_signal_connect (tconsole->priv->params_form, "activated", G_CALLBACK (params_form_activated_cb), tconsole); } else { tconsole->priv->params_form = gtk_label_new (""); gtk_label_set_markup (GTK_LABEL (tconsole->priv->params_form), VARIABLES_HELP); } } else { show_variables = TRUE; tconsole->priv->params_form = gtk_label_new (""); gtk_label_set_markup (GTK_LABEL (tconsole->priv->params_form), VARIABLES_HELP); } gtk_container_add (GTK_CONTAINER (tconsole->priv->params_form_box), tconsole->priv->params_form); gtk_widget_show (tconsole->priv->params_form); g_object_unref (batch); t_connection_load_variables (tconsole->priv->tcnc, tconsole->priv->params); if (tconsole->priv->params && show_variables && gda_set_is_valid (tconsole->priv->params, NULL)) show_variables = FALSE; if (show_variables && !gtk_toggle_button_get_active (tconsole->priv->params_toggle)) gtk_toggle_button_set_active (tconsole->priv->params_toggle, TRUE); } else { tconsole->priv->params_form = gtk_label_new (""); gtk_label_set_markup (GTK_LABEL (tconsole->priv->params_form), VARIABLES_HELP); gtk_container_add (GTK_CONTAINER (tconsole->priv->params_form_box), tconsole->priv->params_form); gtk_widget_show (tconsole->priv->params_form); } /* remove timeout */ tconsole->priv->params_compute_id = 0; return FALSE; }