Esempio n. 1
2
/**
 * ui_formgrid_get_form_data_set
 */
GdaDataModelIter *
ui_formgrid_get_form_data_set (UiFormGrid *formgrid)
{
	g_return_val_if_fail (UI_IS_FORMGRID (formgrid), NULL);
	g_return_val_if_fail (formgrid->priv, NULL);

	return gdaui_data_selector_get_data_set (GDAUI_DATA_SELECTOR (formgrid->priv->raw_form));
}
Esempio n. 2
1
static void
tested_operation_changed_cb (G_GNUC_UNUSED GdauiCombo *combo, DemoData *data)
{
	GdaServerProvider *prov = NULL;
	GdaServerOperationType type;
	GError *error = NULL;
	GdaDataModelIter *iter;
	const GValue *cvalue = NULL;

	if (data->op) {
		g_object_unref (data->op);
		data->op = NULL;
	}
	if (data->op_form) 
		gtk_widget_destroy (data->op_form);

	gtk_widget_set_sensitive (data->show_button, FALSE);
	gtk_widget_set_sensitive (data->sql_button, FALSE);

	iter = gdaui_data_selector_get_data_set (GDAUI_DATA_SELECTOR (data->op_combo));
	if (iter)
		cvalue = gda_data_model_iter_get_value_at (iter, 0);
	if (!cvalue || !gda_value_isa ((GValue *) cvalue, G_TYPE_INT)) {
		GtkWidget *label;

		label = gtk_label_new ("Select an operation to perform");
		gtk_container_add (GTK_CONTAINER (data->op_container), label);
		data->op_form = label;
		gtk_widget_show (data->op_form);
		return;
	}
	type = g_value_get_int ((GValue *) cvalue);
	
	prov = get_provider_obj (data);
	if (prov)
		data->op = gda_server_provider_create_operation (prov, NULL, type, NULL, &error);

	if (!data->op) {
		GtkWidget *label;
		gchar *str;

		str = g_strdup_printf ("Can't create GdaServerOperation widget: %s",
				       error && error->message ? error->message : "No detail");
		label = gtk_label_new (str);
		g_free (str);
		gtk_container_add (GTK_CONTAINER (data->op_container), label);
		data->op_form = label;
	} 
	else {
		GtkWidget *wid;

		wid = gdaui_server_operation_new (data->op);
		gtk_container_add (GTK_CONTAINER (data->op_container), wid);
		data->op_form = wid;
		gtk_widget_set_sensitive (data->show_button, TRUE);
		gtk_widget_set_sensitive (data->sql_button, TRUE);
	}
	gtk_widget_show (data->op_form);
}
Esempio n. 3
0
const GValue* ex_combo_get_current_row_value(GdauiCombo *combo, const guint n_column)
{
	if (gdaui_combo_is_null_selected(combo)) return NULL;

	const GValue *value;
	//If i reassign a new model to Combo, then gdaui_data_selector_get_data_set return wrong iter
	GdaDataModelIter *iter = gdaui_data_selector_get_data_set(GDAUI_DATA_SELECTOR(combo));
	if (!iter) return NULL;

	value = gda_data_model_iter_get_value_at(iter, n_column);

	return value;

/*
	//DIRTY HACK!

	GError *error = NULL;
	
	gint aindex = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));

	if (aindex == -1) return NULL;
	
	GdaDataModel *db_model = gdaui_data_selector_get_model(GDAUI_DATA_SELECTOR(combo));

	
	if (gtk_tree_model_iter_n_children(gtk_combo_box_get_model(GTK_COMBO_BOX(combo)), NULL ) != gda_data_model_get_n_rows(db_model))
		aindex--;


	value = gda_data_model_get_value_at(db_model, n_column, aindex, &error);
	if (error) return NULL;

	return value;
*/
}
Esempio n. 4
0
void ex_form_lookup_field (GdauiRawForm *form, gint n_col, GdaDataModel *model, gint model_col)
{
	GdaDataModelIter *iter;
	GdaHolder *holder;

	if (n_col == -1) return;

	iter = gdaui_data_selector_get_data_set(GDAUI_DATA_SELECTOR(form));
	holder = gda_data_model_iter_get_holder_for_field (iter, n_col);
	
	g_assert (gda_holder_set_source_model (holder, model, model_col, NULL));
}
Esempio n. 5
0
static void
selection_changed_cb (GdauiDataSelector *sel, UiFormGrid *formgrid)
{
	GdaDataModelIter *iter;
	GdauiDataSelector *tosel;
	gint row;
	if (sel == (GdauiDataSelector*) formgrid->priv->raw_grid)
		tosel = (GdauiDataSelector*) formgrid->priv->raw_form;
	else
		tosel = (GdauiDataSelector*) formgrid->priv->raw_grid;

	iter = gdaui_data_selector_get_data_set (sel);
	g_assert (iter);
	row = gda_data_model_iter_get_row (iter);
	/*g_print ("Moved %s to row %d\n", sel == (GdauiDataSelector*) formgrid->priv->raw_grid ? "grid" : "form", row);*/
	iter = gdaui_data_selector_get_data_set (tosel);
	if (iter) {
		g_signal_handlers_block_by_func (tosel, G_CALLBACK (selection_changed_cb), formgrid);
		gda_data_model_iter_move_to_row (iter, row >= 0 ? row : 0);
		g_signal_handlers_unblock_by_func (tosel, G_CALLBACK (selection_changed_cb), formgrid);
	}
}
Esempio n. 6
0
/**
 * gdaui_data_selector_set_column_visible:
 * @iface: an object which implements the #GdauiDataSelector interface
 * @column: a column number, starting at %0, or -1 to apply to all the columns
 * @visible: required visibility of the data in the @column column
 *
 * Shows or hides the data at column @column
 *
 * Since: 4.2
 */
void
gdaui_data_selector_set_column_visible (GdauiDataSelector *iface, gint column, gboolean visible)
{
	g_return_if_fail (GDAUI_IS_DATA_SELECTOR (iface));
	
	if (!GDAUI_DATA_SELECTOR_GET_IFACE (iface)->set_column_visible)
		return;

	if (column >= 0)
		(GDAUI_DATA_SELECTOR_GET_IFACE (iface)->set_column_visible) (iface, column, visible);
	else if (column == -1) {
		gint i, ncols;
		GdaDataModelIter *iter;
		iter = gdaui_data_selector_get_data_set (iface);
		if (!iter)
			return;
		ncols = g_slist_length (GDA_SET (iter)->holders);
		for (i = 0; i < ncols; i++)
			(GDAUI_DATA_SELECTOR_GET_IFACE (iface)->set_column_visible) (iface, i, visible);
	}
	else
		g_warning (_("Invalid column number %d"), column);
}
Esempio n. 7
0
GtkWidget *
do_form_pict (GtkWidget *do_widget)
{  
	if (!window) {
		GdaStatement *stmt;
		GtkWidget *vbox;
		GtkWidget *label;
		GdaDataModel *model;
		GtkWidget *form;
		GdaSet *data_set;
		GdaHolder *param;
		GValue *value;
		
		window = gtk_dialog_new_with_buttons ("Form with the 'picture' plugin",
						      GTK_WINDOW (do_widget),
						      0,
						      GTK_STOCK_CLOSE,
						      GTK_RESPONSE_NONE,
						      NULL);
		
		g_signal_connect (window, "response",
				  G_CALLBACK (gtk_widget_destroy), NULL);
		g_signal_connect (window, "destroy",
				  G_CALLBACK (gtk_widget_destroyed), &window);
		
		vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
		gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (window))),
				    vbox, TRUE, TRUE, 0);
		gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
		
		label = gtk_label_new ("The following GdauiForm widget displays data from the 'pictures' table.\n\n"
				       "The pictures are stored as BLOB inside the database and\n"
				       "are displayed using the 'picture' plugin (right click to \n"
				       "open a menu, or double click to load an image).");
		gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
		
		/* Create the demo widget */
		stmt = gda_sql_parser_parse_string (demo_parser, "SELECT id, pict FROM pictures", NULL, NULL);
		model = gda_connection_statement_execute_select (demo_cnc, stmt, NULL, NULL);
		g_object_unref (stmt);
		gda_data_select_compute_modification_statements (GDA_DATA_SELECT (model), NULL);
		form = gdaui_form_new (model);
		g_object_unref (model);
		g_object_set (G_OBJECT (form), "info-flags",
			      GDAUI_DATA_PROXY_INFO_CURRENT_ROW |
			      GDAUI_DATA_PROXY_INFO_ROW_MOVE_BUTTONS |
			      GDAUI_DATA_PROXY_INFO_ROW_MODIFY_BUTTONS, NULL);

		/* specify that we want to use the 'picture' plugin */
		data_set = GDA_SET (gdaui_data_selector_get_data_set (GDAUI_DATA_SELECTOR (form)));
		param = gda_set_get_holder (data_set, "pict");
		value = gda_value_new_from_string ("picture", G_TYPE_STRING);
		gda_holder_set_attribute_static (param, GDAUI_ATTRIBUTE_PLUGIN, value);
		gda_value_free (value);

		gtk_box_pack_start (GTK_BOX (vbox), form, TRUE, TRUE, 0);
	}

	gboolean visible;
	g_object_get (G_OBJECT (window), "visible", &visible, NULL);
	if (!visible)
		gtk_widget_show_all (window);
	else {
		gtk_widget_destroy (window);
		window = NULL;
	}

	return window;
}
Esempio n. 8
0
static void
form_grid_populate_popup_cb (GtkWidget *wid, GtkMenu *menu, UiFormGrid *formgrid)
{
	/* add actions to execute to menu */
	GdaDataModelIter *iter;
	TConnection *tcnc = NULL;

	tcnc = get_t_connection (formgrid);
	if (!tcnc)
		return;
	
	iter = gdaui_data_selector_get_data_set (GDAUI_DATA_SELECTOR (formgrid->priv->raw_grid));

	/* actions */
	GSList *actions_list, *list;
	actions_list = t_favorites_actions_get (t_connection_get_favorites (tcnc),
							tcnc, GDA_SET (iter));
	if (actions_list) {
		GtkWidget *mitem, *submenu;
		mitem = gtk_menu_item_new_with_label (_("Execute action"));
		gtk_widget_show (mitem);
		gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), mitem);
		
		submenu = gtk_menu_new ();
		gtk_menu_item_set_submenu (GTK_MENU_ITEM (mitem), submenu);
		for (list = actions_list; list; list = list->next) {
			TFavoritesAction *act = (TFavoritesAction*) list->data;
			mitem = gtk_menu_item_new_with_label (act->name);
			gtk_widget_show (mitem);
			gtk_menu_shell_append (GTK_MENU_SHELL (submenu), mitem);
			g_object_set_data_full (G_OBJECT (mitem), "action", act,
						(GDestroyNotify) t_favorites_action_free);
			g_signal_connect (mitem, "activate",
					  G_CALLBACK (execute_action_mitem_cb), formgrid);
		}
		g_slist_free (actions_list);
	}

#ifdef HAVE_LDAP
	/* LDAP specific */
	if (t_connection_is_ldap (tcnc)) {
		GdaHolder *dnh;
		dnh = gda_set_get_holder (GDA_SET (iter), "dn");
		if (dnh) {
			const GValue *cvalue;
			cvalue = gda_holder_get_value (GDA_HOLDER (dnh));
			if (!cvalue && (G_VALUE_TYPE (cvalue) != G_TYPE_STRING))
				dnh = NULL;
		}
		if (!dnh) {
			GSList *list;
			for (list = GDA_SET (iter)->holders; list; list = list->next) {
				const GValue *cvalue;
				cvalue = gda_holder_get_value (GDA_HOLDER (list->data));
				if (cvalue && (G_VALUE_TYPE (cvalue) == G_TYPE_STRING) &&
				    gda_ldap_is_dn (g_value_get_string (cvalue))) {
					dnh = GDA_HOLDER (list->data);
					break;
				}
			}
		}

		if (dnh) {
			const GValue *cvalue;
			cvalue = gda_holder_get_value (dnh);

			GtkWidget *mitem;
			mitem = gtk_menu_item_new_with_label (_("View LDAP entry's details"));
			gtk_widget_show (mitem);
			gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), mitem);
			g_object_set_data_full (G_OBJECT (mitem), "dn",
						g_value_dup_string (cvalue), g_free);
			g_signal_connect (mitem, "activate",
					  G_CALLBACK (ldap_view_dn_mitem_cb), formgrid);
		}
	}
#endif

	if (wid == formgrid->priv->raw_form) {
		GtkWidget *mitem;
		gboolean add_scale;
		g_object_get (G_OBJECT (formgrid->priv->overlay_form), "add-scale", &add_scale, NULL);
		mitem = gtk_check_menu_item_new_with_label (_("Zoom..."));
		gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mitem), add_scale);
		gtk_widget_show (mitem);
		gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), mitem);
		g_signal_connect (mitem, "toggled",
				  G_CALLBACK (zoom_form_mitem_cb), formgrid);
	}
	else if (wid == formgrid->priv->raw_grid) {
		GtkWidget *mitem;
		gboolean add_scale;
		g_object_get (G_OBJECT (formgrid->priv->overlay_grid), "add-scale", &add_scale, NULL);
		mitem = gtk_check_menu_item_new_with_label (_("Zoom..."));
		gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mitem), add_scale);
		gtk_widget_show (mitem);
		gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), mitem);
		g_signal_connect (mitem, "toggled",
				  G_CALLBACK (zoom_grid_mitem_cb), formgrid);
	}
}
Esempio n. 9
0
GtkWidget *
do_data_model_dir (GtkWidget *do_widget)
{
    if (!window) {
        GtkWidget *vbox;
        GtkWidget *label;
        GdaDataModel *model;
        GtkWidget *form, *grid, *nb;
        GdaSet *data_set;
        GdaHolder *param;
        gchar *path;
        GValue *value;

        window = gtk_dialog_new_with_buttons ("GdaDataModelDir data model",
                                              GTK_WINDOW (do_widget),
                                              0,
                                              GTK_STOCK_CLOSE,
                                              GTK_RESPONSE_NONE,
                                              NULL);

        g_signal_connect (window, "response",
                          G_CALLBACK (gtk_widget_destroy), NULL);
        g_signal_connect (window, "destroy",
                          G_CALLBACK (gtk_widget_destroyed), &window);

        vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
        gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (window))),
                            vbox, TRUE, TRUE, 0);
        gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);

        label = gtk_label_new ("The following GdauiForm widget displays data from a GdaDataModelDir "
                               "data model which lists the files contained in the selected directory.\n\n"
                               "Each file contents is then displayed using the 'picture' plugin \n"
                               "(right click to open a menu, or double click to load an image).");
        gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);

        /* GdaDataModelDir object */
        path = get_data_path ();
        model = gda_data_model_dir_new (path);
        g_free (path);

        /* Create the demo widget */
        nb = gtk_notebook_new ();
        gtk_box_pack_start (GTK_BOX (vbox), nb, TRUE, TRUE, 0);

        form = gdaui_form_new (model);
        gtk_notebook_append_page (GTK_NOTEBOOK (nb), form, gtk_label_new ("Form"));

        grid = gdaui_grid_new (model);
        gtk_notebook_append_page (GTK_NOTEBOOK (nb), grid, gtk_label_new ("Grid"));
        g_object_unref (model);

        /* specify that we want to use the 'picture' plugin */
        data_set = GDA_SET (gdaui_data_selector_get_data_set (GDAUI_DATA_SELECTOR (grid)));
        param = gda_set_get_holder (data_set, "data");

        value = gda_value_new_from_string ("picture", G_TYPE_STRING);
        gda_holder_set_attribute_static (param, GDAUI_ATTRIBUTE_PLUGIN, value);
        gdaui_data_proxy_column_show_actions (GDAUI_DATA_PROXY (grid), -1, TRUE);
        gda_value_free (value);
    }

    gboolean visible;
    g_object_get (G_OBJECT (window), "visible", &visible, NULL);
    if (!visible)
        gtk_widget_show_all (window);
    else {
        gtk_widget_destroy (window);
        window = NULL;
    }

    return window;
}