Implemented individual register format settings. Kudos to Daniel Kristjansson.
[kdbg.git] / kdbg / regwnd.h
blob4da0b91233eccb1c35bef5bd6159cdf7340c5f5d
1 // $Id$
3 // Copyright by Judin Max, Johannes Sixt
4 // This file is under GPL, the GNU General Public Licence
6 #ifndef REGWND_H
7 #define REGWND_H
9 #include <qlistview.h>
10 #include <map>
12 class QPopupMenu;
13 class RegisterViewItem;
14 struct RegisterInfo;
16 /**
17 * Register display modes
19 class RegisterDisplay {
20 public:
21 enum BitSize {
22 bits8 = 0x10,
23 bits16 = 0x20,
24 bits32 = 0x30,
25 bits64 = 0x40,
26 bits80 = 0x50,
27 bits128 = 0x60,
28 bitsUnknown = 0x70
31 enum Format {
32 nada = 0x01,
33 binary = 0x02,
34 octal = 0x03,
35 decimal = 0x04,
36 hex = 0x05,
37 bcd = 0x06,
38 realE = 0x07,
39 realG = 0x08,
40 realF = 0x09
42 RegisterDisplay() : mode(bitsUnknown|nada) { }
43 RegisterDisplay(uint newMode) : mode(newMode) { }
45 operator uint() {
46 return mode;
48 bool contains(uint pmode) const {
49 bool val=((mode&0xf0)==pmode)||((mode&0x0f)==pmode);
50 return val;
52 uint bitsFlag() { return mode&0xf0; }
53 uint presentationFlag() const { return mode&0x0f; }
54 uint bits() const { return bitMap[(mode>>4)&0x07]; }
55 private:
56 uint mode;
57 static uint bitMap[];
61 class RegisterView : public QListView
63 Q_OBJECT
64 public:
65 RegisterView(QWidget* parent, const char *name = 0L);
66 ~RegisterView();
68 protected slots:
69 void rightButtonClicked(QListViewItem*, const QPoint&, int);
70 void slotModeChange(int);
71 void updateRegisters(QList<RegisterInfo>&);
73 private:
74 void paletteChange(const QPalette& oldPal);
75 void updateGroupVisibility();
76 QListViewItem* findMatchingGroup(const QString& regName);
77 QListViewItem* findGroup(const QString& groupName);
78 QPopupMenu* m_modemenu;
79 RegisterDisplay m_mode;
80 typedef std::map<QString,RegisterViewItem*> RegMap;
81 RegMap m_registers;
83 friend class RegisterViewItem;
86 #endif // REGWND_H