- int i;
- GtkWidget *fixed_frame;
-
- fixed_frame = gtk_frame_new(0);
- gtk_frame_set_shadow_type( GTK_FRAME( fixed_frame ), GTK_SHADOW_ETCHED_OUT );
- gtk_widget_set_usize( GTK_WIDGET( fixed_frame ), width, height );
-
- memclist = gtk_clist_new( 18 );
- gtk_clist_set_selection_mode( GTK_CLIST( memclist ), GTK_SELECTION_SINGLE );
- gtk_widget_set_usize( GTK_WIDGET( memclist ), 620, 250 );
-
- for( i = 0; i < 18; i++ ) {
- gtk_clist_set_column_justification( GTK_CLIST( memclist ), i, GTK_JUSTIFY_LEFT );
- }
-
- gtk_clist_set_column_width( GTK_CLIST( memclist ), 0, 5*8 );
-
- for( i = 1; i < 17; i++ ) {
- gtk_clist_set_column_width( GTK_CLIST( memclist ), i, 2*8 );
- }
-
- gtk_clist_set_column_width( GTK_CLIST( memclist ), 17, 16*8 );
-
-#if ( GTK_MAJOR_VERSION == 2)
- PangoFontDescription *pango_font;
- pango_font = pango_font_description_from_string( FIXED_FONT );
- gtk_widget_modify_font( memclist, pango_font );
-#else
- {
- GtkStyle *style;
- /* Setting font for the widget. */
- style = gtk_style_new();
- gdk_font_unref( style->font );
-
- /* Load a fixed font */
- style->font = gdk_font_load( FIXED_FONT );
- gtk_widget_set_style( GTK_WIDGET( memclist ), style );
- }
-#endif
-
- char *memdummy[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
- for( i = 0; i < 16; i++ ) {
- gtk_clist_append( GTK_CLIST( memclist ), memdummy );
- }
-
- gtk_container_add( GTK_CONTAINER( fixed_frame ), memclist );
-
- return fixed_frame;
+ int i;
+ int rows;
+ GtkWidget *scrollwin;
+ GtkCellRenderer *renderer;
+ GtkTreeViewColumn *column;
+ GtkListStore *store;
+ GtkTreeIter iter;
+
+ scrollwin = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrollwin),
+ GTK_SHADOW_ETCHED_OUT);
+
+ /* Automatically add scrollbars when necessary. */
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+
+ /* Creating a model */
+ store = gtk_list_store_new(N_COLUMNS,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING);
+
+ /* Creating the view component */
+ memlist = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(memlist), TRUE);
+
+ gtk_container_add(GTK_CONTAINER(scrollwin), memlist);
+
+ g_object_unref(store);
+
+
+ /* Columns and cell renderers */
+ renderer = gtk_cell_renderer_text_new();
+
+ /* Add address column */
+ column = gtk_tree_view_column_new_with_attributes(
+ "Address", renderer, "text", COL_ADDRESS, NULL);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(memlist), column);
+
+ for (i = 1; i < 17; i++) {
+ column = gtk_tree_view_column_new_with_attributes(
+ "Val", renderer, "text", i, NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(memlist), column);
+ }
+
+ column = gtk_tree_view_column_new_with_attributes(
+ "ASCII", renderer, "text", COL_ASCII, NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(memlist), column);
+
+ /* Initialize with 16 rows of dummy data... */
+ for (rows = 0; rows < 16; rows++) {
+ /* Add new row. */
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter, COL_ADDRESS, "0x0000", -1);
+ }
+
+ return scrollwin;