Exemple #1
0
static void
params_form_changed_cb (GdauiBasicForm *form, G_GNUC_UNUSED GdaHolder *param,
			G_GNUC_UNUSED gboolean is_user_modif, QueryConsolePage *tconsole)
{
	/* if all params are valid => authorize the execute button */
	GtkWidget *button;

	button = g_object_get_data (G_OBJECT (tconsole->priv->params_popup), "exec");
	gtk_widget_set_sensitive (button,
				  gdaui_basic_form_is_valid (form));
}
/*
 * _gdaui_provider_spec_editor_is_valid
 * @spec: a #GdauiProviderSpecEditor widget
 * 
 * Tells if the current information displayed in @spec respects the
 * provider's specifications (about non NULL values for example)
 *
 * Returns:
 */
gboolean
_gdaui_provider_spec_editor_is_valid (GdauiProviderSpecEditor *spec)
{
	g_return_val_if_fail (GDAUI_IS_PROVIDER_SPEC_EDITOR (spec), FALSE);
	g_return_val_if_fail (spec->priv, FALSE);

	switch (spec->priv->type) {
	case PROVIDER_FORM: 
		g_assert (spec->priv->form);
		return gdaui_basic_form_is_valid (GDAUI_BASIC_FORM (spec->priv->form));
	default:
		return FALSE;
	}
}
/*
 * _gdaui_provider_auth_editor_is_valid
 * @auth: a #GdauiProviderAuthEditor widget
 * 
 * Tells if the current information displayed in @auth reauthts the
 * provider's authifications (about non NULL values for example)
 *
 * Returns:
 */
gboolean
_gdaui_provider_auth_editor_is_valid (GdauiProviderAuthEditor *auth)
{
	g_return_val_if_fail (GDAUI_IS_PROVIDER_AUTH_EDITOR (auth), FALSE);
	g_return_val_if_fail (auth->priv, FALSE);

	if (!auth->priv->pinfo)
		return FALSE;

	if (auth->priv->auth_needed) {
		g_assert (auth->priv->auth_widget);
		return gdaui_basic_form_is_valid (GDAUI_BASIC_FORM (auth->priv->auth_widget));
	}
	else
		return TRUE;
}
Exemple #4
0
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);
}