LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (http://www.linuxquestions.org/questions/programming-9/)
-   -   how to create a table using gtk? (http://www.linuxquestions.org/questions/programming-9/how-to-create-a-table-using-gtk-720323/)

gktandc 04-19-2009 11:58 PM

how to create a table using gtk?
 
1 Attachment(s)
At first, I'm sorry for my poor English.

I want to create a table to display the data in a mysql's table.
The "Dev Help" tells that the GtkTreeView can make it. I tried it, but I runned into a problem. I donnot know how to add items to the list.

I used this
Code:

void add_to_list(GtkWidget *list, const gchar *str, int COL) {
    GtkListStore *store;
    GtkTreeIter iter;

    store = GTK_LIST_STORE(gtk_tree_view_get_model
            (GTK_TREE_VIEW(list)));


    gtk_list_store_append(store, &iter);

    gtk_list_store_set(store, &iter, COL, str, -1);

}

then i got this ( in the attachment)

I looked up the 'Dev Help' again, and I got this method
Code:

gtk_list_store_set_valuesv
But it need a GValue...

I need your help...

Any help will be apreciated.

kike_coello 04-22-2009 06:54 PM

Hello, maybe try this, i found this example that seems to be similar to your problem:

[code]

#include <gtk/gtk.h>
enum
{
BUY_IT = 0,
QUANTITY,
PRODUCT,
COLUMNS
};

typedef struct
{
gboolean buy;
gint quantity;
gchar *product;
} GroceryItem;

const GroceryItem list[] =
{
{ TRUE, 1, "Paper Towels" },
{ TRUE, 2, "Bread" },
{ FALSE, 1, "Butter" },
{ TRUE, 1, "Milk" },
{ FALSE, 3, "Chips" },
{ TRUE, 4, "Soda" },
{ FALSE, 0, NULL }
};

static void setup_tree_view (GtkWidget*);
int main (int argc,

char *argv[])
{
GtkWidget *window, *treeview, *scrolled_win;
GtkListStore *store;
GtkTreeIter iter;
guint i = 0;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Grocery List");
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
gtk_widget_set_size_request (window, 250, 175);
treeview = gtk_tree_view_new ();
setup_tree_view (treeview);
/* Create a new tree model with three columns, as string, gint and guint. */
store = gtk_list_store_new (COLUMNS, G_TYPE_BOOLEAN, G_TYPE_INT, G_TYPE_STRING);
/* Add all of the products to the GtkListStore. */
while (list[i].product != NULL)
{
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter, BUY_IT, list[i].buy,
QUANTITY, list[i].quantity, PRODUCT, list[i].product, -1);
i++;
}

/* Add the tree model to the tree view and unreference it so that the model will
* be destroyed along with the tree view. */
gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), GTK_TREE_MODEL (store));
g_object_unref (store);
scrolled_win = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_container_add (GTK_CONTAINER (scrolled_win), treeview);
gtk_container_add (GTK_CONTAINER (window), scrolled_win);
gtk_widget_show_all (window);
gtk_main ();

return 0;
}

/* Add three columns to the GtkTreeView. All three of the columns will be
* displayed as text, although one is a gboolean value and another is
* an integer. */
static void setup_tree_view (GtkWidget *treeview)
{
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
/* Create a new GtkCellRendererText, add it to the tree view column and
* append the column to the tree view. */
renderer = gtk_cell_renderer_text_new ();
column = gtk_tree_view_column_new_with_attributes
("Buy", renderer, "text", BUY_IT, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
renderer = gtk_cell_renderer_text_new ();
column = gtk_tree_view_column_new_with_attributes
("Count", renderer, "text", QUANTITY, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
renderer = gtk_cell_renderer_text_new ();
column = gtk_tree_view_column_new_with_attributes
("Product", renderer, "text", PRODUCT, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
}

[\code]

kike_coello 04-22-2009 06:58 PM

I'm sorry, I don't know how to post code.

gktandc 04-23-2009 12:36 AM

Quote:

Originally Posted by kike_coello (Post 3517767)
I'm sorry, I don't know how to post code.

Thank you!
Great job!
I can copy it to my netbeans...
good code.

thanks.

jisjis 04-23-2009 06:28 AM

Quote:

Originally Posted by kike_coello (Post 3517764)
Hello, maybe try this, i found this example that seems to be similar to your problem:

[code]

#include <gtk/gtk.h>
enum
{
BUY_IT = 0,
QUANTITY,
PRODUCT,
COLUMNS
};

typedef struct
{
gboolean buy;
gint quantity;
gchar *product;
} GroceryItem;

const GroceryItem list[] =
{
{ TRUE, 1, "Paper Towels" },
{ TRUE, 2, "Bread" },
{ FALSE, 1, "Butter" },
{ TRUE, 1, "Milk" },
{ FALSE, 3, "Chips" },
{ TRUE, 4, "Soda" },
{ FALSE, 0, NULL }
};

static void setup_tree_view (GtkWidget*);
int main (int argc,

char *argv[])
{
GtkWidget *window, *treeview, *scrolled_win;
GtkListStore *store;
GtkTreeIter iter;
guint i = 0;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Grocery List");
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
gtk_widget_set_size_request (window, 250, 175);
treeview = gtk_tree_view_new ();
setup_tree_view (treeview);
/* Create a new tree model with three columns, as string, gint and guint. */
store = gtk_list_store_new (COLUMNS, G_TYPE_BOOLEAN, G_TYPE_INT, G_TYPE_STRING);
/* Add all of the products to the GtkListStore. */
while (list[i].product != NULL)
{
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter, BUY_IT, list[i].buy,
QUANTITY, list[i].quantity, PRODUCT, list[i].product, -1);
i++;
}

/* Add the tree model to the tree view and unreference it so that the model will
* be destroyed along with the tree view. */
gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), GTK_TREE_MODEL (store));
g_object_unref (store);
scrolled_win = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_container_add (GTK_CONTAINER (scrolled_win), treeview);
gtk_container_add (GTK_CONTAINER (window), scrolled_win);
gtk_widget_show_all (window);
gtk_main ();

return 0;
}

/* Add three columns to the GtkTreeView. All three of the columns will be
* displayed as text, although one is a gboolean value and another is
* an integer. */
static void setup_tree_view (GtkWidget *treeview)
{
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
/* Create a new GtkCellRendererText, add it to the tree view column and
* append the column to the tree view. */
renderer = gtk_cell_renderer_text_new ();
column = gtk_tree_view_column_new_with_attributes
("Buy", renderer, "text", BUY_IT, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
renderer = gtk_cell_renderer_text_new ();
column = gtk_tree_view_column_new_with_attributes
("Count", renderer, "text", QUANTITY, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
renderer = gtk_cell_renderer_text_new ();
column = gtk_tree_view_column_new_with_attributes
("Product", renderer, "text", PRODUCT, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
}

[\code]



Wow ... Now thats what I call "going out of your way to help someone!"

Rock On mate!
:)

Linux


All times are GMT -5. The time now is 12:09 AM.