1 //////////////////////////////////////////////////
2 // //
3 // Emu64 //
4 // von Thorsten Kattanek //
5 // //
6 // #file: widget_memory_zeile.cpp //
7 // //
8 // Dieser Sourcecode ist Copyright geschützt! //
9 // Geistiges Eigentum von Th.Kattanek //
10 // //
11 // Letzte Änderung am 29.08.2019 //
12 // www.emu64.de //
13 // //
14 //////////////////////////////////////////////////
15
16 #include <cstdio>
17
18 #include "./widget_memory_zeile.h"
19 #include "./ui_widget_memory_zeile.h"
20
WidgetMemoryZeile(QFont * font1,QWidget * parent)21 WidgetMemoryZeile::WidgetMemoryZeile(QFont *font1, QWidget *parent) :
22 QWidget(parent),
23 ui(new Ui::WidgetMemoryZeile)
24 {
25 ui->setupUi(this);
26
27 ui->AdresseOut->setFont(*font1);
28 ui->EditValue_0->setFont(*font1);
29 ui->EditValue_1->setFont(*font1);
30 ui->EditValue_2->setFont(*font1);
31 ui->EditValue_3->setFont(*font1);
32 ui->EditValue_4->setFont(*font1);
33 ui->EditValue_5->setFont(*font1);
34 ui->EditValue_6->setFont(*font1);
35 ui->EditValue_7->setFont(*font1);
36 ui->EditValue_8->setFont(*font1);
37 ui->EditValue_9->setFont(*font1);
38 ui->EditValue_10->setFont(*font1);
39 ui->EditValue_11->setFont(*font1);
40 ui->EditValue_12->setFont(*font1);
41 ui->EditValue_13->setFont(*font1);
42 ui->EditValue_14->setFont(*font1);
43 ui->EditValue_15->setFont(*font1);
44 ui->ReadOut->setFont(*font1);
45 ui->WriteOut->setFont(*font1);
46 }
47
~WidgetMemoryZeile()48 WidgetMemoryZeile::~WidgetMemoryZeile()
49 {
50 delete ui;
51 }
52
Fill(unsigned short adr,unsigned char * byte_puffer,QString ReadSource,QString WriteDestination)53 void WidgetMemoryZeile::Fill(unsigned short adr, unsigned char *byte_puffer,QString ReadSource,QString WriteDestination)
54 {
55 adresse = adr;
56
57 char str00[10];
58 sprintf(str00,"$%4.4X",adresse);
59 ui->AdresseOut->setText(QString(str00));
60 sprintf(str00,"%2.2X",byte_puffer[0]);
61 if(!ui->EditValue_0->hasFocus()) ui->EditValue_0->setText(QString(str00));
62 sprintf(str00,"%2.2X",byte_puffer[1]);
63 if(!ui->EditValue_1->hasFocus()) ui->EditValue_1->setText(QString(str00));
64 sprintf(str00,"%2.2X",byte_puffer[2]);
65 if(!ui->EditValue_2->hasFocus()) ui->EditValue_2->setText(QString(str00));
66 sprintf(str00,"%2.2X",byte_puffer[3]);
67 if(!ui->EditValue_3->hasFocus()) ui->EditValue_3->setText(QString(str00));
68 sprintf(str00,"%2.2X",byte_puffer[4]);
69 if(!ui->EditValue_4->hasFocus()) ui->EditValue_4->setText(QString(str00));
70 sprintf(str00,"%2.2X",byte_puffer[5]);
71 if(!ui->EditValue_5->hasFocus()) ui->EditValue_5->setText(QString(str00));
72 sprintf(str00,"%2.2X",byte_puffer[6]);
73 if(!ui->EditValue_6->hasFocus()) ui->EditValue_6->setText(QString(str00));
74 sprintf(str00,"%2.2X",byte_puffer[7]);
75 if(!ui->EditValue_7->hasFocus()) ui->EditValue_7->setText(QString(str00));
76 sprintf(str00,"%2.2X",byte_puffer[8]);
77 if(!ui->EditValue_8->hasFocus()) ui->EditValue_8->setText(QString(str00));
78 sprintf(str00,"%2.2X",byte_puffer[9]);
79 if(!ui->EditValue_9->hasFocus()) ui->EditValue_9->setText(QString(str00));
80 sprintf(str00,"%2.2X",byte_puffer[10]);
81 if(!ui->EditValue_10->hasFocus()) ui->EditValue_10->setText(QString(str00));
82 sprintf(str00,"%2.2X",byte_puffer[11]);
83 if(!ui->EditValue_11->hasFocus()) ui->EditValue_11->setText(QString(str00));
84 sprintf(str00,"%2.2X",byte_puffer[12]);
85 if(!ui->EditValue_12->hasFocus()) ui->EditValue_12->setText(QString(str00));
86 sprintf(str00,"%2.2X",byte_puffer[13]);
87 if(!ui->EditValue_13->hasFocus()) ui->EditValue_13->setText(QString(str00));
88 sprintf(str00,"%2.2X",byte_puffer[14]);
89 if(!ui->EditValue_14->hasFocus()) ui->EditValue_14->setText(QString(str00));
90 sprintf(str00,"%2.2X",byte_puffer[15]);
91 if(!ui->EditValue_15->hasFocus()) ui->EditValue_15->setText(QString(str00));
92
93 ui->ReadOut->setText(ReadSource);
94 ui->WriteOut->setText(WriteDestination);
95
96 ui->BitLeiste_0->SetValue(byte_puffer[0]);
97 ui->BitLeiste_1->SetValue(byte_puffer[1]);
98 ui->BitLeiste_2->SetValue(byte_puffer[2]);
99 ui->BitLeiste_3->SetValue(byte_puffer[3]);
100 ui->BitLeiste_4->SetValue(byte_puffer[4]);
101 ui->BitLeiste_5->SetValue(byte_puffer[5]);
102 ui->BitLeiste_6->SetValue(byte_puffer[6]);
103 ui->BitLeiste_7->SetValue(byte_puffer[7]);
104 ui->BitLeiste_8->SetValue(byte_puffer[8]);
105 ui->BitLeiste_9->SetValue(byte_puffer[9]);
106 ui->BitLeiste_10->SetValue(byte_puffer[10]);
107 ui->BitLeiste_11->SetValue(byte_puffer[11]);
108 ui->BitLeiste_12->SetValue(byte_puffer[12]);
109 ui->BitLeiste_13->SetValue(byte_puffer[13]);
110 ui->BitLeiste_14->SetValue(byte_puffer[14]);
111 ui->BitLeiste_15->SetValue(byte_puffer[15]);
112 }
113
ConvHex(QString str,unsigned char * value)114 bool WidgetMemoryZeile::ConvHex(QString str, unsigned char *value)
115 {
116 bool ok;
117 QString in_str = str;
118 unsigned short v;
119
120 in_str.insert(0,"0x");
121 v = in_str.toUShort(&ok,0);
122 if(!ok)
123 {
124 return false;
125 }
126 *value = (unsigned char)v;
127 return true;
128 }
129
CheckEdit(QLineEdit * edit,unsigned short adresse)130 void WidgetMemoryZeile::CheckEdit(QLineEdit *edit, unsigned short adresse)
131 {
132 unsigned char value;
133 char str00[3];
134
135 if(ConvHex(edit->text(),&value))
136 {
137 sprintf(str00,"%2.2X",value);
138 edit->setText(QString(str00));
139 emit ChangeValue(adresse,value);
140 }
141 else edit->setText("00");
142 }
143
on_EditValue_0_editingFinished()144 void WidgetMemoryZeile::on_EditValue_0_editingFinished()
145 {
146 CheckEdit(ui->EditValue_0,adresse + 0);
147 }
148
on_EditValue_1_editingFinished()149 void WidgetMemoryZeile::on_EditValue_1_editingFinished()
150 {
151 CheckEdit(ui->EditValue_1,adresse + 1);
152 }
153
on_EditValue_2_editingFinished()154 void WidgetMemoryZeile::on_EditValue_2_editingFinished()
155 {
156 CheckEdit(ui->EditValue_2,adresse + 2);
157 }
158
on_EditValue_3_editingFinished()159 void WidgetMemoryZeile::on_EditValue_3_editingFinished()
160 {
161 CheckEdit(ui->EditValue_3,adresse + 3);
162 }
163
on_EditValue_4_editingFinished()164 void WidgetMemoryZeile::on_EditValue_4_editingFinished()
165 {
166 CheckEdit(ui->EditValue_4,adresse + 4);
167 }
168
on_EditValue_5_editingFinished()169 void WidgetMemoryZeile::on_EditValue_5_editingFinished()
170 {
171 CheckEdit(ui->EditValue_5,adresse + 5);
172 }
173
on_EditValue_6_editingFinished()174 void WidgetMemoryZeile::on_EditValue_6_editingFinished()
175 {
176 CheckEdit(ui->EditValue_6,adresse + 6);
177 }
178
on_EditValue_7_editingFinished()179 void WidgetMemoryZeile::on_EditValue_7_editingFinished()
180 {
181 CheckEdit(ui->EditValue_7,adresse + 7);
182 }
183
on_EditValue_8_editingFinished()184 void WidgetMemoryZeile::on_EditValue_8_editingFinished()
185 {
186 CheckEdit(ui->EditValue_8,adresse + 8);
187 }
188
on_EditValue_9_editingFinished()189 void WidgetMemoryZeile::on_EditValue_9_editingFinished()
190 {
191 CheckEdit(ui->EditValue_9,adresse + 9);
192 }
193
on_EditValue_10_editingFinished()194 void WidgetMemoryZeile::on_EditValue_10_editingFinished()
195 {
196 CheckEdit(ui->EditValue_10,adresse + 10);
197 }
198
on_EditValue_11_editingFinished()199 void WidgetMemoryZeile::on_EditValue_11_editingFinished()
200 {
201 CheckEdit(ui->EditValue_11,adresse + 11);
202 }
203
on_EditValue_12_editingFinished()204 void WidgetMemoryZeile::on_EditValue_12_editingFinished()
205 {
206 CheckEdit(ui->EditValue_12,adresse + 12);
207 }
208
on_EditValue_13_editingFinished()209 void WidgetMemoryZeile::on_EditValue_13_editingFinished()
210 {
211 CheckEdit(ui->EditValue_13,adresse + 13);
212 }
213
on_EditValue_14_editingFinished()214 void WidgetMemoryZeile::on_EditValue_14_editingFinished()
215 {
216 CheckEdit(ui->EditValue_14,adresse + 14);
217 }
218
on_EditValue_15_editingFinished()219 void WidgetMemoryZeile::on_EditValue_15_editingFinished()
220 {
221 CheckEdit(ui->EditValue_15,adresse + 15);
222 }
223
onNoFocus(void)224 void WidgetMemoryZeile::onNoFocus(void)
225 {
226 if(!ui->AdresseOut->hasFocus()) ui->AdresseOut->setFocus();
227 }
228
EndableBitLeiste(bool status)229 void WidgetMemoryZeile::EndableBitLeiste(bool status)
230 {
231 ui->BitLeiste_0->EnableBitLeiste(status);
232 ui->BitLeiste_1->EnableBitLeiste(status);
233 ui->BitLeiste_2->EnableBitLeiste(status);
234 ui->BitLeiste_3->EnableBitLeiste(status);
235 ui->BitLeiste_4->EnableBitLeiste(status);
236 ui->BitLeiste_5->EnableBitLeiste(status);
237 ui->BitLeiste_6->EnableBitLeiste(status);
238 ui->BitLeiste_7->EnableBitLeiste(status);
239 ui->BitLeiste_8->EnableBitLeiste(status);
240 ui->BitLeiste_9->EnableBitLeiste(status);
241 ui->BitLeiste_10->EnableBitLeiste(status);
242 ui->BitLeiste_11->EnableBitLeiste(status);
243 ui->BitLeiste_12->EnableBitLeiste(status);
244 ui->BitLeiste_13->EnableBitLeiste(status);
245 ui->BitLeiste_14->EnableBitLeiste(status);
246 ui->BitLeiste_15->EnableBitLeiste(status);
247 }
248