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