-char TextTmp[255];
-int row, column, TextLength;
-
-gtk_clist_freeze( GTK_CLIST( memclist ) );
- for ( row = 0; row < 16; row++ ) {
- sprintf( TextTmp, "%.4X", Address );
- gtk_clist_set_text( GTK_CLIST( memclist ), row, 0, TextTmp );
-
- for ( column = 0; column < 16; column++ ) {
- sprintf( TextTmp, "%.2X", ( int ) cpu8051_ReadD( Address + column ) );
- gtk_clist_set_text( GTK_CLIST( memclist ), row, column + 1, TextTmp );
- }
-
- TextLength = 0;
- for ( column = 0; column < 16; column++ ) {
- if ( ( ( int ) cpu8051_ReadD( Address + column ) >= 32 ) && ( ( int ) cpu8051_ReadD( Address + column ) <= 126 ) )
- TextLength += sprintf( &TextTmp[ TextLength ], "%c", cpu8051_ReadD( Address + column ) );
- else TextLength += sprintf( &TextTmp[ TextLength ], "." );
- }
- gtk_clist_set_text( GTK_CLIST( memclist ), row, 17, TextTmp );
-
- Address += 16;
- }
-
-gtk_clist_select_row( GTK_CLIST( memclist ), 0, 0 );
-gtk_clist_thaw( GTK_CLIST( memclist ) );
+ int i;
+ GtkCellRenderer *renderer;
+ GtkTreeViewColumn *column;
+
+ /* 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 = COL_DATA0; i < (COL_DATA0 + DATA_COLS); i++) {
+ /* Create new renderer for each editable cell. */
+ renderer = gtk_cell_renderer_text_new();
+
+ /* Allow edition, align to right side. */
+ g_object_set(renderer, "editable", TRUE, "xalign", 1.0, NULL);
+
+ g_signal_connect(renderer, "edited",
+ G_CALLBACK(memwin_cell_edited),
+ gtk_tree_view_get_model(GTK_TREE_VIEW(memlist)));
+
+ /* Add column index, used when editing the cell. */
+ g_object_set_data(G_OBJECT(renderer), "column",
+ GUINT_TO_POINTER(i));
+
+ column = gtk_tree_view_column_new_with_attributes(
+ "Val", renderer, "text", i, NULL);
+ gtk_tree_view_column_set_sizing(column,
+ GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(memlist), column);
+ }
+
+ /* Add ASCII column */
+ column = gtk_tree_view_column_new_with_attributes(
+ "ASCII", renderer, "text", COL_ASCII, NULL);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(memlist), column);