fancier IO regs :)
This commit is contained in:
parent
7323665278
commit
28feb18d7e
|
@ -20,11 +20,15 @@
|
|||
*/
|
||||
|
||||
#include "callbacks_dtools.h"
|
||||
#include "dTools_display.h"
|
||||
|
||||
/* ***** ***** IO REGISTERS ***** ***** */
|
||||
static int cpu=0;
|
||||
static BOOL autorefresh;
|
||||
static BOOL init=FALSE;
|
||||
static int size_=0;
|
||||
static dTools_dsp dsp;
|
||||
|
||||
static void update_regs_fast();
|
||||
static void update_regs();
|
||||
|
||||
/* Register name list */
|
||||
|
@ -50,30 +54,86 @@ const reg_name_addr Reg_Names_Addr[NBR_IO_REGS] =
|
|||
/* update */
|
||||
|
||||
static void wtools_1_update () {
|
||||
if(autorefresh) update_regs();
|
||||
update_regs_fast();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Update register display */
|
||||
|
||||
static u32 mem[NBR_IO_REGS];
|
||||
|
||||
static void update_regs_fast(){
|
||||
char text[10], *mask;
|
||||
int i; u32 w, m;
|
||||
for( i = 0; i < NBR_IO_REGS; i++ )
|
||||
{
|
||||
w = MMU_read32(cpu,Reg_Names_Addr[i].addr);
|
||||
m = mem[i];
|
||||
if ( Reg_Names_Addr[i].trunc ) {
|
||||
mask = " 0x%04X";
|
||||
w &= 0xFFFF;
|
||||
m &= 0xFFFF;
|
||||
} else {
|
||||
mask = "0x%08X";
|
||||
}
|
||||
mem[i] = w;
|
||||
if (w == m) continue;
|
||||
|
||||
sprintf(text, mask, w);
|
||||
dTools_display_select_attr(&dsp, 2);
|
||||
dTools_display_clear_char(&dsp, size_+3, i, 10);
|
||||
dTools_display_draw_text(&dsp, size_+3, i, text);
|
||||
}
|
||||
}
|
||||
|
||||
static void update_regs()
|
||||
{
|
||||
char lbl_name[40];
|
||||
char lbl_text[40];
|
||||
char * mask;
|
||||
GtkWidget * lbl;
|
||||
int i;
|
||||
u32 w;
|
||||
char text[80], *mask;
|
||||
int len, i;
|
||||
|
||||
if (init==FALSE) {
|
||||
GtkWidget * wPaint = glade_xml_get_widget(xml_tools, "wtools_1_draw");
|
||||
|
||||
for( i = 0; i < NBR_IO_REGS; i++ ) {
|
||||
len = strlen(Reg_Names_Addr[i].name);
|
||||
if (size_<len) size_=len;
|
||||
}
|
||||
|
||||
len = size_ + strlen(" : 0x00000000");
|
||||
dTools_display_init(&dsp, wPaint, len, NBR_IO_REGS, 5);
|
||||
dTools_display_add_markup(&dsp, "<tt><span foreground=\"blue\"> </span></tt>");
|
||||
dTools_display_add_markup(&dsp, "<tt>0x00000000</tt>");
|
||||
dTools_display_add_markup(&dsp, "<tt><span foreground=\"red\">0x00000000</span></tt>");
|
||||
init=TRUE;
|
||||
}
|
||||
|
||||
dTools_display_clear(&dsp);
|
||||
for( i = 0; i < NBR_IO_REGS; i++ )
|
||||
{
|
||||
mask = ( Reg_Names_Addr[i].trunc ) ? " 0x%04X" : "0x%08X";
|
||||
sprintf(lbl_name,"wtools_1_%s_value\0\0", Reg_Names_Addr[i].name);
|
||||
w = MMU_read32(cpu,Reg_Names_Addr[i].addr);
|
||||
sprintf(lbl_text, mask, w);
|
||||
lbl = glade_xml_get_widget(xml_tools, lbl_name);
|
||||
gtk_label_set_text((GtkLabel *)lbl, lbl_text);
|
||||
mem[i] = MMU_read32(cpu,Reg_Names_Addr[i].addr);
|
||||
sprintf(text, mask, mem[i]);
|
||||
|
||||
dTools_display_select_attr(&dsp, 0);
|
||||
dTools_display_draw_text(&dsp, 0, i, Reg_Names_Addr[i].name);
|
||||
dTools_display_draw_text(&dsp, size_, i, " : ");
|
||||
dTools_display_select_attr(&dsp, 1);
|
||||
dTools_display_draw_text(&dsp, size_+3, i, text);
|
||||
}
|
||||
}
|
||||
|
||||
gboolean on_wtools_1_draw_button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
|
||||
// clear the red marks :)
|
||||
if (event->button==1)
|
||||
update_regs();
|
||||
}
|
||||
gboolean on_wtools_1_draw_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) {
|
||||
update_regs();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
void on_wtools_1_combo_cpu_changed (GtkComboBox *widget, gpointer user_data) {
|
||||
/* c == 0 means ARM9 */
|
||||
cpu=gtk_combo_box_get_active(widget);
|
||||
|
@ -86,6 +146,7 @@ void on_wtools_1_IOregs_show (GtkWidget *widget, gpointer user_data) {
|
|||
|
||||
// do as if we had selected this button and ARM7 cpu
|
||||
gtk_combo_box_set_active((GtkComboBox*)combo, 0);
|
||||
register_Tool(wtools_1_update);
|
||||
}
|
||||
|
||||
gboolean on_wtools_1_IOregs_close (GtkWidget *widget, ...) {
|
||||
|
@ -94,24 +155,3 @@ gboolean on_wtools_1_IOregs_close (GtkWidget *widget, ...) {
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
void on_wtools_1_autorefresh_toggled (GtkToggleButton *tb, gpointer user_data)
|
||||
{
|
||||
GtkWidget * b = glade_xml_get_widget(xml_tools, "wtools_1_refresh");
|
||||
if( gtk_toggle_button_get_active(tb) == TRUE )
|
||||
{
|
||||
autorefresh = TRUE;
|
||||
register_Tool(wtools_1_update);
|
||||
gtk_widget_set_sensitive( b, FALSE );
|
||||
}
|
||||
else
|
||||
{
|
||||
autorefresh = FALSE;
|
||||
unregister_Tool(wtools_1_update);
|
||||
gtk_widget_set_sensitive( b, TRUE );
|
||||
}
|
||||
}
|
||||
|
||||
void on_wtools_1_refresh_clicked (GtkButton *b, gpointer user_data)
|
||||
{
|
||||
update_regs();
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
*/
|
||||
|
||||
#include "callbacks_dtools.h"
|
||||
|
||||
#include "dTools_display.h"
|
||||
|
||||
/* ***** ***** MEMORY VIEWER ***** ***** */
|
||||
|
||||
|
@ -33,13 +33,11 @@ enum SHOW {
|
|||
static BOOL init=FALSE;
|
||||
static enum SHOW packmode=Bit8;
|
||||
static u32 address=0, tmpaddr=0, bpl=0; int cpu=0;
|
||||
static PangoAttrList *attr_Text8,*attr_Text16,*attr_Text32,*attr_red;
|
||||
static char patt[512];
|
||||
static u8 mem[0x100];
|
||||
static int w,h;
|
||||
static dTools_dsp dsp;
|
||||
|
||||
static GtkEntry *wAddress;
|
||||
static GtkDrawingArea *wPaint;
|
||||
static GtkRange *wRange;
|
||||
|
||||
static void refresh();
|
||||
|
@ -49,65 +47,55 @@ static void initialize();
|
|||
/* update */
|
||||
|
||||
static void wtools_2_update() {
|
||||
int i,j, x,y=5;
|
||||
int px = w/78, qx;
|
||||
u8 m8, *mem8 =mem; u16 m16, *mem16=(u16*)mem; u32 m32, *mem32=(u32*)mem;
|
||||
int i,j;
|
||||
u8 m8, *mem8 =mem;
|
||||
u16 m16, *mem16=(u16*)mem;
|
||||
u32 m32, *mem32=(u32*)mem;
|
||||
u32 addr;
|
||||
char txt[16];
|
||||
|
||||
GtkWidget * area = (GtkWidget*)wPaint;
|
||||
PangoLayout* playout = gtk_widget_create_pango_layout(area, NULL);
|
||||
GdkGC * GC = area->style->fg_gc[area->state];
|
||||
|
||||
pango_layout_set_attributes(playout, attr_red);
|
||||
|
||||
#define PAINT_TEXT(w) \
|
||||
gdk_draw_rectangle(area->window, area->style->white_gc, TRUE, x, y, w, h); \
|
||||
pango_layout_set_text(playout, txt, -1); \
|
||||
gdk_draw_layout(area->window, GC, x, y, playout);
|
||||
// red
|
||||
dTools_display_select_attr(&dsp, 3);
|
||||
|
||||
addr = address;
|
||||
switch (packmode) {
|
||||
case Bit8:
|
||||
for (i=0; i<0x10; i++, y+=h) {
|
||||
x = 12 * px + 10; qx = 62 * px + 10;
|
||||
for (j=0; j<16; j++, addr++,mem8++,x+=3*px,qx+=px) {
|
||||
for (i=0; i<0x10; i++) {
|
||||
for (j=0; j<16; j++, addr++,mem8++) {
|
||||
m8 = *mem8; *mem8 = MMU_readByte(cpu, addr);
|
||||
if (m8 != *mem8) {
|
||||
sprintf(txt, "%02X", *mem8);
|
||||
PAINT_TEXT(3*px)
|
||||
dTools_display_clear_char(&dsp, 12+j, i, 3);
|
||||
dTools_display_draw_text(&dsp, 12+j, i, txt);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case Bit16:
|
||||
for (i=0; i<0x10; i++, y+=h) {
|
||||
x = 12 * px + 10; qx = 62 * px + 10;
|
||||
for (j=0; j<8; j++, addr+=2,mem16++,x+=6*px,qx+=2*px) {
|
||||
for (i=0; i<0x10; i++) {
|
||||
for (j=0; j<16; j+=2, addr+=2,mem16++) {
|
||||
m16 = *mem16; *mem16 = MMU_readHWord(cpu, addr);
|
||||
if (m16 != *mem16) {
|
||||
sprintf(txt, " %04X", *mem16);
|
||||
PAINT_TEXT(6*px)
|
||||
dTools_display_clear_char(&dsp, 12+j, i, 6);
|
||||
dTools_display_draw_text(&dsp, 12+j, i, txt);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case Bit32:
|
||||
for (i=0; i<0x10; i++, y+=h) {
|
||||
x = 12 * px + 10; qx = 62 * px + 10;
|
||||
for (j=0; j<4; j++, addr+=4,mem32++,x+=12*px,qx+=4*px) {
|
||||
for (i=0; i<0x10; i++) {
|
||||
for (j=0; j<16; j+=4, addr+=4,mem32++) {
|
||||
m32 = *mem32; *mem32 = MMU_readWord(cpu, addr);
|
||||
if (m32 != *mem32) {
|
||||
sprintf(txt, " %08X", *mem32);
|
||||
PAINT_TEXT(12*px)
|
||||
dTools_display_clear_char(&dsp, 12+j, i, 12);
|
||||
dTools_display_draw_text(&dsp, 12+j, i, txt);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
g_object_unref(playout);
|
||||
|
||||
#undef PAINT_TEXT
|
||||
}
|
||||
|
||||
gboolean on_wtools_2_draw_button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
|
||||
|
@ -172,6 +160,7 @@ void on_wtools_2_MemView_show (GtkWidget *widget, gpointer user_data) {
|
|||
}
|
||||
gboolean on_wtools_2_MemView_close (GtkWidget *widget, ...) {
|
||||
unregister_Tool(wtools_2_update);
|
||||
dTools_display_free(&dsp);
|
||||
gtk_widget_hide(widget);
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -204,6 +193,7 @@ gboolean on_wtools_2_draw_expose_event (GtkWidget *widget, GdkEventExpose *event
|
|||
|
||||
static void initialize() {
|
||||
GtkWidget * combo;
|
||||
GtkWidget * wPaint;
|
||||
GtkAdjustment *adj;
|
||||
int i,j;
|
||||
|
||||
|
@ -214,72 +204,56 @@ static void initialize() {
|
|||
|
||||
// get widget reference
|
||||
wAddress = (GtkEntry*)glade_xml_get_widget(xml_tools, "wtools_2_GotoAddress");
|
||||
wPaint = (GtkDrawingArea*)glade_xml_get_widget(xml_tools, "wtools_2_draw");
|
||||
wRange = (GtkRange*)glade_xml_get_widget(xml_tools, "wtools_2_scroll");
|
||||
wPaint = glade_xml_get_widget(xml_tools, "wtools_2_draw");
|
||||
|
||||
gtk_combo_box_set_active((GtkComboBox*)combo, 0);
|
||||
gtk_range_set_adjustment(wRange, adj);
|
||||
|
||||
strcpy(patt, "<tt><span foreground=\"red\">__00000000__</span></tt>");
|
||||
pango_parse_markup(patt,-1,0,&attr_red,NULL,NULL,NULL);
|
||||
dTools_display_init(&dsp, wPaint, 80, 16, 5);
|
||||
|
||||
#define PATT(x) x"<span foreground=\"#608060\">" x "</span>"
|
||||
#define DUP(x) x x
|
||||
strcpy(patt, "<tt><span foreground=\"blue\">0000:0000</span> | ");
|
||||
strcat(patt, DUP(DUP(DUP(PATT("00_")))) );
|
||||
strcat(patt, "| 0123456789ABCDEF</tt>");
|
||||
pango_parse_markup(patt,-1,0,&attr_Text8,NULL,NULL,NULL);
|
||||
|
||||
strcpy(patt, "<tt><span foreground=\"blue\">0000:0000</span> | ");
|
||||
strcat(patt, DUP(DUP(PATT("_0000_"))) );
|
||||
strcat(patt, "| 0123456789ABCDEF</tt>");
|
||||
pango_parse_markup(patt,-1,0,&attr_Text16,NULL,NULL,NULL);
|
||||
|
||||
strcpy(patt, "<tt><span foreground=\"blue\">0000:0000</span> | ");
|
||||
strcat(patt, DUP(PATT("__00000000__")) );
|
||||
strcat(patt, "| 0123456789ABCDEF</tt>");
|
||||
pango_parse_markup(patt,-1,0,&attr_Text32,NULL,NULL,NULL);
|
||||
sprintf(patt, "<tt><span foreground=\"blue\">0000:0000</span> | %s| 0123456789ABCDEF</tt>", DUP(DUP(DUP(PATT("00_")))) );
|
||||
dTools_display_add_markup(&dsp, patt);
|
||||
sprintf(patt, "<tt><span foreground=\"blue\">0000:0000</span> | %s| 0123456789ABCDEF</tt>", DUP(DUP(PATT("_0000_"))) );
|
||||
dTools_display_add_markup(&dsp, patt);
|
||||
sprintf(patt, "<tt><span foreground=\"blue\">0000:0000</span> | %s| 0123456789ABCDEF</tt>", DUP(PATT("__00000000__")) );
|
||||
dTools_display_add_markup(&dsp, patt);
|
||||
#undef DUP
|
||||
#undef PATT
|
||||
strcpy(patt, "<tt><span foreground=\"red\">__00000000__</span></tt>");
|
||||
dTools_display_add_markup(&dsp, patt);
|
||||
|
||||
init = TRUE;
|
||||
gtk_combo_box_set_active((GtkComboBox*)combo, 0);
|
||||
gtk_range_set_adjustment(wRange, adj);
|
||||
change_address(RANGE_MIN);
|
||||
}
|
||||
|
||||
/* PAINT memory panel */
|
||||
static void refresh() {
|
||||
GtkWidget * area = (GtkWidget*)wPaint;
|
||||
PangoLayout* playout = gtk_widget_create_pango_layout(area, NULL);
|
||||
GdkGC * GC = area->style->fg_gc[area->state];
|
||||
int i,j,addr, x,y; u8 c;
|
||||
int i,j,addr;
|
||||
u8 c;
|
||||
u8 *mem8=mem;
|
||||
u16 *mem16=(u16*)mem;
|
||||
u32 *mem32=(u32*)mem;
|
||||
|
||||
char *ptxt, txt[]="0000:0000 | 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF | 0123456789ABCDEF\0";
|
||||
PangoAttrList *attr;
|
||||
|
||||
switch(packmode){
|
||||
default:
|
||||
case Bit8: attr=attr_Text8; break;
|
||||
case Bit16: attr=attr_Text16; break;
|
||||
case Bit32: attr=attr_Text32; break;
|
||||
}
|
||||
if (!init) return;
|
||||
|
||||
for (i=0; i<0x100; i++)
|
||||
mem[i] = MMU_readByte(cpu, address+i);
|
||||
|
||||
dTools_display_clear(&dsp);
|
||||
switch(packmode) {
|
||||
case Bit8: dTools_display_select_attr(&dsp, 0); break;
|
||||
case Bit16: dTools_display_select_attr(&dsp, 1); break;
|
||||
case Bit32: dTools_display_select_attr(&dsp, 2); break;
|
||||
}
|
||||
|
||||
gdk_draw_rectangle(area->window, area->style->white_gc, TRUE, 0, 0,
|
||||
area->allocation.width, area->allocation.height);
|
||||
|
||||
pango_layout_set_text(playout, txt, -1);
|
||||
pango_layout_set_attributes(playout, attr);
|
||||
pango_layout_get_pixel_size(playout, &w, &h);
|
||||
gtk_widget_set_usize(area,w+20, (0x10*h)+10);
|
||||
|
||||
// draw memory content here
|
||||
addr=address;
|
||||
for (i=0,x=10,y=5; i<0x10; i++,y+=h) {
|
||||
for (i=0; i<0x10; i++) {
|
||||
ptxt = txt;
|
||||
sprintf(ptxt, "%04X:%04X | ", (addr>>16)&0xFFFF, addr&0xFFFF); ptxt+=12;
|
||||
switch(packmode) {
|
||||
|
@ -304,11 +278,6 @@ static void refresh() {
|
|||
mem8 +=16;
|
||||
*(ptxt)=0;
|
||||
|
||||
pango_layout_set_text(playout, txt, -1);
|
||||
pango_layout_set_attributes(playout, attr);
|
||||
gdk_draw_layout(area->window, GC, x, y, playout);
|
||||
dTools_display_draw_text(&dsp, 0, i, txt);
|
||||
}
|
||||
|
||||
// done
|
||||
g_object_unref(playout);
|
||||
}
|
||||
|
|
|
@ -25,8 +25,8 @@
|
|||
void on_wtools_1_combo_cpu_changed (GtkComboBox *, gpointer );
|
||||
void on_wtools_1_IOregs_show (GtkWidget *, gpointer );
|
||||
gboolean on_wtools_1_IOregs_close (GtkWidget *, ...);
|
||||
void on_wtools_1_autorefresh_toggled (GtkToggleButton *, gpointer);
|
||||
void on_wtools_1_refresh_clicked (GtkButton *, gpointer);
|
||||
gboolean on_wtools_1_draw_button_release_event(GtkWidget *, GdkEventButton *, gpointer );
|
||||
gboolean on_wtools_1_draw_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data);
|
||||
|
||||
/* ***** ***** MEMORY VIEWER ***** ***** */
|
||||
void on_wtools_2_MemView_show (GtkWidget *, gpointer );
|
||||
|
|
|
@ -0,0 +1,110 @@
|
|||
/* dTools_display.c
|
||||
*
|
||||
* Copyright (C) 2007 Damien Nozay (damdoum)
|
||||
* Author: damdoum at users.sourceforge.net
|
||||
*
|
||||
* This file is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This file is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef _DTOOLS_DISPLAY_H_
|
||||
#define _DTOOLS_DISPLAY_H_
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
typedef struct {
|
||||
GtkWidget *widget;
|
||||
GdkDrawable *draw;
|
||||
GdkGC *gc_fg;
|
||||
GdkGC *gc_bg;
|
||||
PangoLayout* playout;
|
||||
int size_w, size_h;
|
||||
int char_w, char_h, padding;
|
||||
GList * colors_rgb;
|
||||
GList * attr_list;
|
||||
PangoAttrList * curr_attr;
|
||||
} dTools_dsp;
|
||||
|
||||
static void inline dTools_display_set_size(dTools_dsp * dsp, int w, int h, int pad) {
|
||||
dsp->size_w = w;
|
||||
dsp->size_h = h;
|
||||
dsp->padding = pad;
|
||||
// gtk_widget_set_size_request(dsp->widget,
|
||||
// dsp->char_w * w + pad * 2, dsp->char_h * h + pad * 2);
|
||||
gtk_widget_set_usize(dsp->widget,
|
||||
dsp->char_w * w + pad * 2, dsp->char_h * h + pad * 2);
|
||||
}
|
||||
|
||||
static void inline dTools_display_init(dTools_dsp * dsp, GtkWidget * widget, int w, int h, int pad) {
|
||||
dsp->widget = widget;
|
||||
dsp->draw = widget->window;
|
||||
dsp->gc_fg = widget->style->fg_gc[widget->state];
|
||||
dsp->gc_bg = widget->style->white_gc;
|
||||
dsp->playout = gtk_widget_create_pango_layout(widget, NULL);
|
||||
|
||||
dsp->colors_rgb = NULL;
|
||||
dsp->attr_list = NULL;
|
||||
dsp->curr_attr = NULL;
|
||||
|
||||
pango_layout_set_markup(dsp->playout, "<tt>X</tt>",-1);
|
||||
pango_layout_get_pixel_size(dsp->playout, &dsp->char_w, &dsp->char_h);
|
||||
dTools_display_set_size(dsp, w, h, pad);
|
||||
}
|
||||
|
||||
// void unref (gpointer data, ...) {
|
||||
// pango_attr_list_unref(data);
|
||||
// }
|
||||
|
||||
static void inline dTools_display_free(dTools_dsp * dsp) {
|
||||
// g_list_foreach(dsp->attr_list, (GFunc)unref, NULL);
|
||||
// g_object_unref(dsp->playout); // not alloc
|
||||
}
|
||||
|
||||
static void inline dTools_display_add_markup(dTools_dsp * dsp, const char * markup) {
|
||||
PangoAttrList *attr;
|
||||
pango_parse_markup (markup, -1, 0, &attr, NULL, NULL, NULL);
|
||||
dsp->attr_list = g_list_append(dsp->attr_list, attr);
|
||||
dsp->curr_attr = attr;
|
||||
}
|
||||
|
||||
static void inline dTools_display_clear(dTools_dsp * dsp) {
|
||||
gdk_draw_rectangle(dsp->draw, dsp->gc_bg, TRUE, 0, 0,
|
||||
dsp->widget->allocation.width, dsp->widget->allocation.height);
|
||||
}
|
||||
|
||||
static void inline dTools_display_clear_char(dTools_dsp * dsp, int x, int y, int nb) {
|
||||
gdk_draw_rectangle(dsp->draw, dsp->gc_bg, TRUE,
|
||||
x * dsp->char_w + dsp->padding, y * dsp->char_h + dsp->padding,
|
||||
nb * dsp->char_w, dsp->char_h);
|
||||
}
|
||||
|
||||
static void inline dTools_display_select_attr(dTools_dsp * dsp, int index) {
|
||||
PangoAttrList *attr = NULL;
|
||||
attr = g_list_nth_data(dsp->attr_list, index);
|
||||
if (attr != NULL) {
|
||||
dsp->curr_attr = attr;
|
||||
}
|
||||
pango_layout_set_attributes(dsp->playout, dsp->curr_attr);
|
||||
}
|
||||
|
||||
static void inline dTools_display_draw_text(dTools_dsp * dsp, int x, int y, char * txt) {
|
||||
pango_layout_set_text(dsp->playout, txt, -1);
|
||||
gdk_draw_layout(dsp->draw, dsp->gc_fg,
|
||||
x * dsp->char_w + dsp->padding,
|
||||
y * dsp->char_h + dsp->padding,
|
||||
dsp->playout);
|
||||
}
|
||||
|
||||
#endif
|
|
@ -57,7 +57,7 @@
|
|||
<child>
|
||||
<widget class="GtkTable" id="table1">
|
||||
<property name="visible">True</property>
|
||||
<property name="n_rows">8</property>
|
||||
<property name="n_rows">2</property>
|
||||
<property name="n_columns">2</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="row_spacing">0</property>
|
||||
|
@ -78,390 +78,23 @@ cpu : ARM9</property>
|
|||
<property name="top_attach">0</property>
|
||||
<property name="bottom_attach">1</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options">fill</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="wtools_1_REG_IPCFIFOCNT_value">
|
||||
<widget class="GtkDrawingArea" id="wtools_1_draw">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">0x0000</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_RIGHT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">True</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||
<property name="width_chars">-1</property>
|
||||
<property name="single_line_mode">False</property>
|
||||
<property name="angle">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="wtools_1_REG_SPICNT_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">REG_SPICNT</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||
<property name="width_chars">-1</property>
|
||||
<property name="single_line_mode">False</property>
|
||||
<property name="angle">0</property>
|
||||
<property name="events">GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<signal name="expose_event" handler="on_wtools_1_draw_expose_event" last_modification_time="Mon, 15 Jan 2007 14:53:00 GMT"/>
|
||||
<signal name="button_release_event" handler="on_wtools_1_draw_button_release_event" last_modification_time="Mon, 15 Jan 2007 15:18:59 GMT"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="right_attach">1</property>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="bottom_attach">4</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="wtools_1_REG_SPICNT_value">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">0x0000</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_RIGHT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">True</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||
<property name="width_chars">-1</property>
|
||||
<property name="single_line_mode">False</property>
|
||||
<property name="angle">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="bottom_attach">4</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="wtools_1_REG_IME_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">REG_IME</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||
<property name="width_chars">-1</property>
|
||||
<property name="single_line_mode">False</property>
|
||||
<property name="angle">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="right_attach">1</property>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="bottom_attach">5</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="wtools_1_REG_IE_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">REG_IE</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||
<property name="width_chars">-1</property>
|
||||
<property name="single_line_mode">False</property>
|
||||
<property name="angle">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="right_attach">1</property>
|
||||
<property name="top_attach">5</property>
|
||||
<property name="bottom_attach">6</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="wtools_1_REG_IF_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">REG_IF</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||
<property name="width_chars">-1</property>
|
||||
<property name="single_line_mode">False</property>
|
||||
<property name="angle">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="right_attach">1</property>
|
||||
<property name="top_attach">6</property>
|
||||
<property name="bottom_attach">7</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="wtools_1_REG_POWCNT1_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">REG_POWCNT1</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||
<property name="width_chars">-1</property>
|
||||
<property name="single_line_mode">False</property>
|
||||
<property name="angle">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="right_attach">1</property>
|
||||
<property name="top_attach">7</property>
|
||||
<property name="bottom_attach">8</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="wtools_1_REG_IME_value">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">0x0000</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_RIGHT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">True</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||
<property name="width_chars">-1</property>
|
||||
<property name="single_line_mode">False</property>
|
||||
<property name="angle">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="bottom_attach">5</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="wtools_1_REG_IE_value">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">0x00000000</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_RIGHT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">True</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||
<property name="width_chars">-1</property>
|
||||
<property name="single_line_mode">False</property>
|
||||
<property name="angle">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">5</property>
|
||||
<property name="bottom_attach">6</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="wtools_1_REG_IF_value">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">0x00000000</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_RIGHT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">True</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||
<property name="width_chars">-1</property>
|
||||
<property name="single_line_mode">False</property>
|
||||
<property name="angle">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">6</property>
|
||||
<property name="bottom_attach">7</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="wtools_1_REG_POWCNT1_value">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">0x0000</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_RIGHT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">True</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||
<property name="width_chars">-1</property>
|
||||
<property name="single_line_mode">False</property>
|
||||
<property name="angle">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">7</property>
|
||||
<property name="bottom_attach">8</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkCheckButton" id="wtools_1_autorefresh">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">autorefresh</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="inconsistent">False</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<signal name="toggled" handler="on_wtools_1_autorefresh_toggled" last_modification_time="Sun, 14 Jan 2007 18:28:39 GMT"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="right_attach">1</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="wtools_1_refresh">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">_Refresh</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<signal name="clicked" handler="on_wtools_1_refresh_clicked" last_modification_time="Sun, 14 Jan 2007 18:28:24 GMT"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="wtools_1_REG_IPCFIFOCNT_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">REG_IPCFIFOCNT</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||
<property name="width_chars">-1</property>
|
||||
<property name="single_line_mode">False</property>
|
||||
<property name="angle">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="right_attach">1</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
|
@ -536,6 +169,40 @@ cpu : ARM9</property>
|
|||
<property name="row_spacing">0</property>
|
||||
<property name="column_spacing">0</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkVScrollbar" id="wtools_2_scroll">
|
||||
<property name="visible">True</property>
|
||||
<property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
|
||||
<property name="inverted">False</property>
|
||||
<property name="adjustment">0 0 0 0 0 0</property>
|
||||
<signal name="value_changed" handler="on_wtools_2_scroll_value_changed" last_modification_time="Sat, 13 Jan 2007 19:38:07 GMT"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options">fill</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkDrawingArea" id="wtools_2_draw">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<signal name="expose_event" handler="on_wtools_2_draw_expose_event" last_modification_time="Fri, 12 Jan 2007 13:14:44 GMT"/>
|
||||
<signal name="scroll_event" handler="on_wtools_2_draw_scroll_event" last_modification_time="Sat, 13 Jan 2007 19:50:18 GMT"/>
|
||||
<signal name="button_release_event" handler="on_wtools_2_draw_button_release_event" last_modification_time="Sun, 14 Jan 2007 01:44:37 GMT"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="right_attach">1</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkHBox" id="hbox1">
|
||||
<property name="visible">True</property>
|
||||
|
@ -689,42 +356,9 @@ ARM7 cpu</property>
|
|||
<property name="top_attach">0</property>
|
||||
<property name="bottom_attach">1</property>
|
||||
<property name="x_options">fill</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkVScrollbar" id="wtools_2_scroll">
|
||||
<property name="visible">True</property>
|
||||
<property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
|
||||
<property name="inverted">False</property>
|
||||
<property name="adjustment">0 0 0 0 0 0</property>
|
||||
<signal name="value_changed" handler="on_wtools_2_scroll_value_changed" last_modification_time="Sat, 13 Jan 2007 19:38:07 GMT"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options">fill</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkDrawingArea" id="wtools_2_draw">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<signal name="expose_event" handler="on_wtools_2_draw_expose_event" last_modification_time="Fri, 12 Jan 2007 13:14:44 GMT"/>
|
||||
<signal name="scroll_event" handler="on_wtools_2_draw_scroll_event" last_modification_time="Sat, 13 Jan 2007 19:50:18 GMT"/>
|
||||
<signal name="button_release_event" handler="on_wtools_2_draw_button_release_event" last_modification_time="Sun, 14 Jan 2007 01:44:37 GMT"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="right_attach">1</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
|
|
Loading…
Reference in New Issue