Exemplo n.º 1
0
/**
 * table_relations_new
 *
 * Returns: a new #GtkWidget
 */
GtkWidget *
table_relations_new (TableInfo *tinfo)
{
	TableRelations *trels;

	g_return_val_if_fail (IS_TABLE_INFO (tinfo), NULL);

	trels = TABLE_RELATIONS (g_object_new (TABLE_RELATIONS_TYPE, NULL));

	trels->priv->tinfo = tinfo;
	trels->priv->tcnc = g_object_ref (table_info_get_connection (tinfo));
	g_signal_connect (trels->priv->tcnc, "meta-changed",
			  G_CALLBACK (meta_changed_cb), trels);
	
	/*
	 * Relations
	 */
	trels->priv->canvas = browser_canvas_db_relations_new (NULL);
	gtk_box_pack_start (GTK_BOX (trels), trels->priv->canvas, TRUE, TRUE, 0);
	gtk_widget_show (GTK_WIDGET (trels));

	/*
	 * initial update
	 */
	GdaMetaStruct *mstruct;
	mstruct = t_connection_get_meta_struct (trels->priv->tcnc);
	if (mstruct)
		meta_changed_cb (trels->priv->tcnc, mstruct, trels);

	return (GtkWidget*) trels;
}
Exemplo n.º 2
0
/**
 * relations_diagram_new
 *
 * Returns: a new #GtkWidget
 */
GtkWidget *
relations_diagram_new (TConnection *tcnc)
{
    RelationsDiagram *diagram;

    g_return_val_if_fail (T_IS_CONNECTION (tcnc), NULL);

    diagram = RELATIONS_DIAGRAM (g_object_new (RELATIONS_DIAGRAM_TYPE, NULL));

    diagram->priv->tcnc = g_object_ref (tcnc);
    g_signal_connect (diagram->priv->tcnc, "meta-changed",
                      G_CALLBACK (meta_changed_cb), diagram);
    g_signal_connect (tcnc, "favorites-changed",
                      G_CALLBACK (favorites_changed_cb), diagram);


    /* header */
    GtkWidget *hbox, *wid;
    hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
    gtk_box_pack_start (GTK_BOX (diagram), hbox, FALSE, FALSE, 0);

    GtkWidget *label;
    gchar *str;
    str = g_strdup_printf ("<b>%s</b>\n%s", _("Relations diagram"), _("Unsaved"));
    label = gdaui_bar_new (str);
    g_free (str);
    gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
    diagram->priv->header = GDAUI_BAR (label);

    wid = gdaui_bar_add_button_from_icon_name (GDAUI_BAR (label), "document-save");
    diagram->priv->save_button = wid;

    g_signal_connect (wid, "clicked",
                      G_CALLBACK (save_clicked_cb), diagram);

    gtk_widget_show_all (hbox);

    /* main contents */
    wid = browser_canvas_db_relations_new (NULL);
    diagram->priv->canvas = wid;
    gtk_box_pack_start (GTK_BOX (diagram), wid, TRUE, TRUE, 0);
    gtk_widget_show_all (wid);

    GdaMetaStruct *mstruct;
    mstruct = t_connection_get_meta_struct (diagram->priv->tcnc);
    if (mstruct)
        meta_changed_cb (diagram->priv->tcnc, mstruct, diagram);

    return (GtkWidget*) diagram;
}
Exemplo n.º 3
0
/**
 * table_preferences_new
 *
 * Returns: a new #GtkWidget
 */
GtkWidget *
table_preferences_new (TableInfo *tinfo)
{
	TablePreferences *tpref;

	g_return_val_if_fail (IS_TABLE_INFO (tinfo), NULL);

	tpref = TABLE_PREFERENCES (g_object_new (TABLE_PREFERENCES_TYPE, NULL));

	tpref->priv->tinfo = tinfo;
	tpref->priv->bcnc = g_object_ref (table_info_get_connection (tinfo));
	g_signal_connect (tpref->priv->bcnc, "meta-changed",
			  G_CALLBACK (meta_changed_cb), tpref);
	g_signal_connect (tpref->priv->bcnc, "table-column-pref-changed",
			  G_CALLBACK (table_column_pref_changed_cb), tpref);
	
	/* top vbox */
	GtkWidget *top_vbox;
	top_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
	gtk_box_pack_start (GTK_BOX (tpref), top_vbox, TRUE, TRUE, 0);

	/* Field's display properties */
	GtkWidget *grid;

	grid = gtk_grid_new ();
	gtk_box_pack_start (GTK_BOX (top_vbox), grid, TRUE, TRUE, 0);
	gtk_grid_set_row_spacing (GTK_GRID (grid), 6);
	gtk_grid_set_column_spacing (GTK_GRID (grid), 6);
	gtk_container_set_border_width (GTK_CONTAINER (grid), 6);

	/* left column */
	GtkWidget *label;
	gchar *str;
	label = gtk_label_new ("");
	str = g_strdup_printf ("<b>%s:</b>", _("Table's fields"));
	gtk_label_set_markup (GTK_LABEL (label), str);
	g_free (str);
	gtk_misc_set_alignment (GTK_MISC (label), 0., -1);
	gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1);

	GtkWidget *sw, *treeview;
	sw = gtk_scrolled_window_new (NULL, NULL);
	gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
					     GTK_SHADOW_ETCHED_IN);
	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
					GTK_POLICY_NEVER,
					GTK_POLICY_AUTOMATIC);
	gtk_grid_attach (GTK_GRID (grid), sw, 0, 1, 1, 1);

	tpref->priv->columns_store = gtk_list_store_new (NUM_COLUMNS,
							 G_TYPE_POINTER, G_TYPE_GTYPE,
							 G_TYPE_STRING);
	treeview = browser_make_tree_view (GTK_TREE_MODEL (tpref->priv->columns_store));
	tpref->priv->columns_treeview = GTK_TREE_VIEW (treeview);
	gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE);
	gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (treeview), TRUE);
	gtk_container_add (GTK_CONTAINER (sw), treeview);

	/* treeview's columns */
	GtkTreeViewColumn *col;
	GtkCellRenderer *cell;
	cell = gtk_cell_renderer_text_new ();
	col = gtk_tree_view_column_new ();
	gtk_tree_view_column_pack_start (col, cell, TRUE);
	gtk_tree_view_column_set_cell_data_func (col, cell,
						 (GtkTreeCellDataFunc) cell_name_data_func, NULL, NULL);
	gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), col);
	
	/* selection handling */
	GtkTreeSelection *select;
	select = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
	gtk_tree_selection_set_mode (select, GTK_SELECTION_SINGLE);
	g_signal_connect (G_OBJECT (select), "changed",
			  G_CALLBACK (selection_changed_cb), tpref);


	/* right column */
	label = gtk_label_new ("");
	str = g_strdup_printf ("<b>%s:</b>", _("Field's display preferences"));
	gtk_label_set_markup (GTK_LABEL (label), str);
	g_free (str);
	gtk_misc_set_alignment (GTK_MISC (label), 0., -1);
	gtk_grid_attach (GTK_GRID (grid), label, 1, 0, 1, 1);

	tpref->priv->field_props = create_column_properties (tpref);
	gtk_grid_attach (GTK_GRID (grid), tpref->priv->field_props, 1, 1, 1, 1);

	/* show all */
	gtk_widget_show_all (top_vbox);

	/*
	 * initial update
	 */
	GdaMetaStruct *mstruct;
	mstruct = browser_connection_get_meta_struct (tpref->priv->bcnc);
	if (mstruct)
		meta_changed_cb (tpref->priv->bcnc, mstruct, tpref);
	selection_changed_cb (select, tpref);

	g_signal_connect (tpref->priv->columns_store, "row-changed",
			  G_CALLBACK (columns_model_row_changed_cb), tpref);

	return (GtkWidget*) tpref;
}