Хранилища Subversion OpenInventory

Редакция

Редакция 83 | Редакция 87 | К новейшей редакции | Только различия | Не учитывать пробелы | Содержимое файла | Авторство | Последнее изменение | Открыть журнал | RSS

Редакция 83 Редакция 86
1
#include "classeditor.h"
1
#include "classeditor.h"
2
#include "ui_classeditor.h"
2
#include "ui_classeditor.h"
3
3
4
4
5
ClassEditor::ClassEditor(QWidget *parent) :
5
ClassEditor::ClassEditor(QWidget *parent) :
6
    QMainWindow(parent),
6
    QMainWindow(parent),
7
    ui(new Ui::ClassEditor)
7
    ui(new Ui::ClassEditor)
8
{
8
{
9
    ui->setupUi(this);
9
    ui->setupUi(this);
10
10
11
   
11
   
12
   
12
   
13
    //    settdialog = new SettingsDialog(this);
13
    //    settdialog = new SettingsDialog(this);
14
  /////////////////////////////////////////////////////  settdialog.show();
14
  /////////////////////////////////////////////////////  settdialog.show();
15
    sql.setDatabaseName(tr("an_db"));
15
    sql.setDatabaseName(tr("an_db"));
16
16
17
/*
17
/*
18
    field = new TableField(tr("Ñîòðóäíèêè"), this);
18
    field = new TableField(tr("Ñîòðóäíèêè"), this);
19
    field->setNotNull(true);
19
    field->setNotNull(true);
20
    field->setDefaultValue(tr("ñîòðóäíèê"));
20
    field->setDefaultValue(tr("ñîòðóäíèê"));
21

21

22
    table = new SqlTable (tr("NewTable"), this);
22
    table = new SqlTable (tr("NewTable"), this);
23
    table->setName(tr("NewTable"));
23
    table->setName(tr("NewTable"));
24
    table->fields().at(0)->setNotNull(true);
24
    table->fields().at(0)->setNotNull(true);
25
    if (!(table->setPrimaryKey(tr("ID")))) {
25
    if (!(table->setPrimaryKey(tr("ID")))) {
26
         ui->label_3->setText(table->lastError());
26
         ui->label_3->setText(table->lastError());
27
    }
27
    }
28
    else  ui->label_3->setText(table->primaryKey());
28
    else  ui->label_3->setText(table->primaryKey());
29
    table->append(field);
29
    table->append(field);
30

30

31
    field = new TableField(tr("Êîìïüþòåðû"), this);
31
    field = new TableField(tr("Êîìïüþòåðû"), this);
32
    field->setNotNull(true);
32
    field->setNotNull(true);
33
    field->setDefaultValue(tr("êîìïüþòåð"));
33
    field->setDefaultValue(tr("êîìïüþòåð"));
34
    table->append(field);
34
    table->append(field);
35

35

36
    field = new TableField(tr("Ìîíèòîðû"), this);
36
    field = new TableField(tr("Ìîíèòîðû"), this);
37
    field->setNotNull(true);
37
    field->setNotNull(true);
38
    field->setDefaultValue(tr("ìîíèòîð"));
38
    field->setDefaultValue(tr("ìîíèòîð"));
39
    table->append(field);
39
    table->append(field);
40

40

41
    field = new TableField(tr("Êîëè÷åñòâî (øòóê)"), this);
41
    field = new TableField(tr("Êîëè÷åñòâî (øòóê)"), this);
42
    field->setNotNull(true);
42
    field->setNotNull(true);
43
    field->setType(tr("INTEGER"));
43
    field->setType(tr("INTEGER"));
44
    field->setDefaultValue(tr("1"));
44
    field->setDefaultValue(tr("1"));
45
    table->append(field);
45
    table->append(field);
46

46

47
    field = new TableField(tr("Äåíü ðîæäåíèÿ"), this);
47
    field = new TableField(tr("Äåíü ðîæäåíèÿ"), this);
48
    field->setNotNull(false);
48
    field->setNotNull(false);
49
    field->setType(tr("DATE"));
49
    field->setType(tr("DATE"));
50
    field->setDefaultValue(tr("NULL"));
50
    field->setDefaultValue(tr("NULL"));
51
    table->append(field);
51
    table->append(field);
52

52

53
    ui->label_2->setText(table->name());
53
    ui->label_2->setText(table->name());
54
    ui->label->setText(table->fields().at(0)->sqlString());
54
    ui->label->setText(table->fields().at(0)->sqlString());
55
    ui->label_4->setText(table->sqlString());
55
    ui->label_4->setText(table->sqlString());
56
   ////// ui->lineEdit->insert(table->sqlString());
56
   ////// ui->lineEdit->insert(table->sqlString());
57

57

58
*/
58
*/
59
    /**********************************************
59
    /**********************************************
60

60

61
    QTextDocument *document;
61
    QTextDocument *document;
62
    // = ui->textEdit->document();
62
    // = ui->textEdit->document();
63
    QTextCursor *cursor;
63
    QTextCursor *cursor;
64

64

65
    document = ui->textEdit->document();
65
    document = ui->textEdit->document();
66
    cursor = new QTextCursor(document);
66
    cursor = new QTextCursor(document);
67
    cursor->movePosition(QTextCursor::Start);
67
    cursor->movePosition(QTextCursor::Start);
68
QTextCharFormat format(cursor->charFormat());
68
QTextCharFormat format(cursor->charFormat());
69
//format.setFontFamily("Courier");
69
//format.setFontFamily("Courier");
70
format.setFontFamily("Arial");
70
format.setFontFamily("Arial");
71
//format.setFontItalic(false);
71
//format.setFontItalic(false);
72

72

73
format.setFontWeight(QFont::Normal);
73
format.setFontWeight(QFont::Normal);
74
QTextCharFormat boldFormat = format;
74
QTextCharFormat boldFormat = format;
75
boldFormat.setFontWeight(QFont::Bold);
75
boldFormat.setFontWeight(QFont::Bold);
76

76

77
QTextCharFormat italicFormat = format;
77
QTextCharFormat italicFormat = format;
78
//format.setFontFamily("Courier");
78
//format.setFontFamily("Courier");
79
//     format.setFontFamily("Arial");
79
//     format.setFontFamily("Arial");
80
italicFormat.setFontItalic(true);
80
italicFormat.setFontItalic(true);
81

81

82
cursor->insertText(table->sqlString(), format);
82
cursor->insertText(table->sqlString(), format);
83

83

84
****************************************************/
84
****************************************************/
85
85
86
QString errorString;
86
QString errorString;
87
87
88
sql.setDatabaseName(tr("an_db"));
88
sql.setDatabaseName(tr("an_db"));
89
sql.setHostName(tr("localhost"));
89
sql.setHostName(tr("localhost"));
90
sql.setUserName(tr("an"));
90
sql.setUserName(tr("an"));
91
sql.setPassword(tr("393939"));
91
sql.setPassword(tr("393939"));
92
92
93
bool ok;
93
bool ok;
94
ok = sql.connect();
94
ok = sql.connect();
95
if (!ok) {
95
if (!ok) {
96
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
96
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
97
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
97
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
98
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
98
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
99
                                                                            sql.lasError());         // Òåêñò ñîîáùåíèÿ.
99
                                                                            sql.lasError());         // Òåêñò ñîîáùåíèÿ.
100
100
101
                     }
101
                     }
102
else {
102
else {
103
103
104
    QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
104
    QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
105
                                                    this,                      // Ðîäèòåëüñêèé âèäæåò.
105
                                                    this,                      // Ðîäèòåëüñêèé âèäæåò.
106
                                                    QObject::tr("Database Connect"),   // Çàãîëîâîê.
106
                                                    QObject::tr("Database Connect"),   // Çàãîëîâîê.
107
                                                    QObject::tr("Ñîåäèíåíèå ñ áàçîé äàííûõ óñïåøíî óñòàíîâëåíî."));         // Òåêñò ñîîáùåíèÿ.
107
                                                    QObject::tr("Ñîåäèíåíèå ñ áàçîé äàííûõ óñïåøíî óñòàíîâëåíî."));         // Òåêñò ñîîáùåíèÿ.
108
108
109
109
110
110
111
111
112
112
113
}
113
}
114
114
115
/*
115
/*
116
ok = sql.createTable(table);
116
ok = sql.createTable(table);
117
if (!ok) {
117
if (!ok) {
118
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
118
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
119
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
119
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
120
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
120
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
121
                                                                            sql.lasError());         // Òåêñò ñîîáùåíèÿ.
121
                                                                            sql.lasError());         // Òåêñò ñîîáùåíèÿ.
122
         }
122
         }
123
else {
123
else {
124

124

125
    QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
125
    QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
126
                                                    this,                      // Ðîäèòåëüñêèé âèäæåò.
126
                                                    this,                      // Ðîäèòåëüñêèé âèäæåò.
127
                                                    QObject::tr("Database Connect"),   // Çàãîëîâîê.
127
                                                    QObject::tr("Database Connect"),   // Çàãîëîâîê.
128
                                                    QObject::tr("Òàáëèöà â áàçå äàííûõ óñïåøíî ñîçäàíà."));         // Òåêñò ñîîáùåíèÿ.
128
                                                    QObject::tr("Òàáëèöà â áàçå äàííûõ óñïåøíî ñîçäàíà."));         // Òåêñò ñîîáùåíèÿ.
129
     }
129
     }
130

130

131

131

132

132

133
*/
133
*/
134
134
135
ok = sql.createListOfClassesTable();
135
ok = sql.createListOfClassesTable();
136
136
137
if (!ok) {
137
if (!ok) {
138
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
138
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
139
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
139
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
140
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
140
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
141
                                                                            sql.lasError());         // Òåêñò ñîîáùåíèÿ.
141
                                                                            sql.lasError());         // Òåêñò ñîîáùåíèÿ.
142
142
143
                     }
143
                     }
144
else {
144
else {
145
145
146
    QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
146
    QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
147
                                                    this,                      // Ðîäèòåëüñêèé âèäæåò.
147
                                                    this,                      // Ðîäèòåëüñêèé âèäæåò.
148
                                                    QObject::tr("Database Create"),   // Çàãîëîâîê.
148
                                                    QObject::tr("Database Create"),   // Çàãîëîâîê.
149
                                                    QObject::tr("Áàçà äàííûõ óñïåøíî ñîçäàíà."));         // Òåêñò ñîîáùåíèÿ.
149
                                                    QObject::tr("Áàçà äàííûõ óñïåøíî ñîçäàíà."));         // Òåêñò ñîîáùåíèÿ.
150
    }
150
    }
151
151
152
152
153
153
154
154
155
ok = sql.createDescriptionOfClassesTable();
155
ok = sql.createDescriptionOfClassesTable();
156
156
157
if (!ok) {
157
if (!ok) {
158
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
158
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
159
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
159
                                                                            this,                      // Ðîäèòåëüñêèé âèäæåò.
160
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
160
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
161
                                                                            sql.lasError());         // Òåêñò ñîîáùåíèÿ.
161
                                                                            sql.lasError());         // Òåêñò ñîîáùåíèÿ.
162
162
163
                     }
163
                     }
164
else {
164
else {
165
165
166
    QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
166
    QMessageBox::information( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
167
                                                    this,                      // Ðîäèòåëüñêèé âèäæåò.
167
                                                    this,                      // Ðîäèòåëüñêèé âèäæåò.
168
                                                    QObject::tr("Database Create"),   // Çàãîëîâîê.
168
                                                    QObject::tr("Database Create"),   // Çàãîëîâîê.
169
                                                    QObject::tr("Áàçà äàííûõ óñïåøíî ñîçäàíà."));         // Òåêñò ñîîáùåíèÿ.
169
                                                    QObject::tr("Áàçà äàííûõ óñïåøíî ñîçäàíà."));         // Òåêñò ñîîáùåíèÿ.
170
    }
170
    }
171
171
172
172
173
173
174
174
175
175
176
176
177
177
178
model = new QSqlTableModel(); // õðàíèëèùå îáúåêòîâ êëàññà
178
model = new QSqlTableModel(); // õðàíèëèùå îáúåêòîâ êëàññà
179
tableForInstance = new QTableView();
179
tableForInstance = new QTableView();
180
mymodel = new MyModel(this);
180
mymodel = new MyModel(this);
181
modelForPointers = new ModelForPointers(this); // // ìîäåëü äëÿ òàáëèöû ñ óêàçàòåëÿìè
181
modelForPointers = new ModelForPointers(this); // // ìîäåëü äëÿ òàáëèöû ñ óêàçàòåëÿìè
182
182
183
//modelForDescription = new QSqlTableModel(this);
183
//modelForDescription = new QSqlTableModel(this);
184
modelForDescription = new ModelForDescriptionTable(this);
184
modelForDescription = new ModelForDescriptionTable(this);
185
185
186
186
187
/////////////////model->setTable(tr("ListOfClasses"));
187
/////////////////model->setTable(tr("ListOfClasses"));
188
mymodel->setTable(tr("ListOfClasses"));
188
mymodel->setTable(tr("ListOfClasses"));
189
modelForDescription->setTable(tr("DescriptionOfClasses"));
189
modelForDescription->setTable(tr("DescriptionOfClasses"));
190
modelForDescription->setEditStrategy(QSqlTableModel::OnFieldChange);
190
modelForDescription->setEditStrategy(QSqlTableModel::OnFieldChange);
191
191
192
/////model->setEditStrategy(QSqlTableModel::OnManualSubmit);
192
/////model->setEditStrategy(QSqlTableModel::OnManualSubmit);
193
193
194
modelForPointers->setEditStrategy(QSqlTableModel::OnManualSubmit);
194
modelForPointers->setEditStrategy(QSqlTableModel::OnManualSubmit);
195
modelForPointers->setTable(tr("DescriptionOfClasses"));
195
modelForPointers->setTable(tr("DescriptionOfClasses"));
196
196
197
197
198
198
199
199
200
//mymodel->setEditStrategy(QSqlTableModel::OnFieldChange);
200
//mymodel->setEditStrategy(QSqlTableModel::OnFieldChange);
201
201
202
202
203
203
204
//////////////////model->setSort(0, Qt::AscendingOrder);
204
//////////////////model->setSort(0, Qt::AscendingOrder);
205
mymodel->setSort(0, Qt::AscendingOrder);
205
mymodel->setSort(0, Qt::AscendingOrder);
206
modelForDescription->setSort(0, Qt::AscendingOrder);
206
modelForDescription->setSort(0, Qt::AscendingOrder);
207
modelForPointers->setSort(0, Qt::AscendingOrder);
207
modelForPointers->setSort(0, Qt::AscendingOrder);
208
208
209
//       model->setFilter(tr("Èäåíòèôèêàòîð_ñèñòåìíîãî_áëîêà = '7' and Èíâåíòàðíûé_íîìåð = 'i09090909'"));
209
//       model->setFilter(tr("Èäåíòèôèêàòîð_ñèñòåìíîãî_áëîêà = '7' and Èíâåíòàðíûé_íîìåð = 'i09090909'"));
210
////////////////////model->select();
210
////////////////////model->select();
211
mymodel->select();
211
mymodel->select();
212
// modelForPointers->select();
212
// modelForPointers->select();
213
213
214
214
215
215
216
216
217
/////////////////////////model->setHeaderData(1, Qt::Horizontal, tr("Èìÿ êëàññà"));
217
/////////////////////////model->setHeaderData(1, Qt::Horizontal, tr("Èìÿ êëàññà"));
218
mymodel->setHeaderData(1, Qt::Horizontal, tr("Èìÿ êëàññà"));
218
mymodel->setHeaderData(1, Qt::Horizontal, tr("Èìÿ êëàññà"));
219
219
220
220
221
221
222
////////////////////////model->setHeaderData(2, Qt::Horizontal, tr("Ïñåâäîíèì êëàññà"));
222
////////////////////////model->setHeaderData(2, Qt::Horizontal, tr("Ïñåâäîíèì êëàññà"));
223
mymodel->setHeaderData(2, Qt::Horizontal, tr("Ïñåâäîíèì êëàññà"));
223
mymodel->setHeaderData(2, Qt::Horizontal, tr("Ïñåâäîíèì êëàññà"));
224
mymodel->setHeaderData(4, Qt::Horizontal, tr("Êîìåíòàðèé"));
224
mymodel->setHeaderData(4, Qt::Horizontal, tr("Êîìåíòàðèé"));
225
225
226
//ui->tableView_3->setModel(modelForPointers);
226
//ui->tableView_3->setModel(modelForPointers);
227
227
228
//ui->tableView->setModel(model);
228
//ui->tableView->setModel(model);
229
ui->tableView->setModel(mymodel);
229
ui->tableView->setModel(mymodel);
230
//tableForDescription = new QTableView();
230
//tableForDescription = new QTableView();
231
ui->tableView_2->setModel(modelForDescription);
231
ui->tableView_2->setModel(modelForDescription);
232
ui->tableView_2->setAlternatingRowColors(true);
232
ui->tableView_2->setAlternatingRowColors(true);
233
ui->tableView_2->resizeColumnsToContents();
233
ui->tableView_2->resizeColumnsToContents();
234
//tableForDescription->show();
234
//tableForDescription->show();
235
235
236
236
237
ui->tableView->setAlternatingRowColors(true);
237
ui->tableView->setAlternatingRowColors(true);
238
ui->tableView->resizeColumnsToContents();
238
ui->tableView->resizeColumnsToContents();
239
239
240
ui->tableView->hideColumn(0);
240
ui->tableView->hideColumn(0);
241
ui->tableView->hideColumn(3);
241
ui->tableView->hideColumn(3);
242
ui->tableView->hideColumn(2);
242
ui->tableView->hideColumn(2);
243
243
244
/*
244
/*
245
ui->tableView_2->hideColumn(0);
245
ui->tableView_2->hideColumn(0);
246
ui->tableView_2->hideColumn(5);
246
ui->tableView_2->hideColumn(5);
247
ui->tableView_2->hideColumn(2);
247
ui->tableView_2->hideColumn(2);
248
*/
248
*/
249
ui->tableView_2->setItemDelegateForColumn(3, &classTableDelegate);
249
ui->tableView_2->setItemDelegateForColumn(3, &classTableDelegate);
250
250
251
currIndexOfClassesTable = mymodel->index(0, 1);
251
currIndexOfClassesTable = mymodel->index(0, 1);
252
QModelIndex index_temp;
252
QModelIndex index_temp;
253
253
254
254
255
255
256
currClassID = mymodel->data(mymodel->index(0,0)).toString();
256
currClassID = mymodel->data(mymodel->index(0,0)).toString();
257
QItemSelectionModel *selectionModel = ui->tableView->selectionModel();
257
QItemSelectionModel *selectionModel = ui->tableView->selectionModel();
258
258
259
QModelIndex topLeft;
259
QModelIndex topLeft;
260
QModelIndex bottomRight;
260
QModelIndex bottomRight;
261
261
262
     topLeft = mymodel->index(0, 0, QModelIndex());
262
     topLeft = mymodel->index(0, 0, QModelIndex());
263
     bottomRight = mymodel->index(0, 1, QModelIndex());
263
     bottomRight = mymodel->index(0, 1, QModelIndex());
264
264
265
QItemSelection selection(topLeft, bottomRight);
265
QItemSelection selection(topLeft, bottomRight);
266
selectionModel->select(selection, QItemSelectionModel::Select);
266
selectionModel->select(selection, QItemSelectionModel::Select);
267
267
268
268
269
QString class_indx, class_instance;
269
QString class_indx, class_instance;
270
QString str_fltr = tr("ClassIdentifer = ");
270
QString str_fltr = tr("ClassIdentifer = ");
271
class_indx = mymodel->data(mymodel->index(0,0)).toString();
271
class_indx = mymodel->data(mymodel->index(0,0)).toString();
272
class_instance = mymodel->data(mymodel->index(0,3)).toString();
272
class_instance = mymodel->data(mymodel->index(0,3)).toString();
273
273
274
currInctanceTable = class_instance; //
274
currInctanceTable = class_instance; //
275
modelForDescription->setInctance(class_instance); // ïåðåäàåì â ìîäåëü ïîëåé èìÿ òåêóùåé òàáëèöû-õðàíèëèùà
275
modelForDescription->setInctance(class_instance); // ïåðåäàåì â ìîäåëü ïîëåé èìÿ òåêóùåé òàáëèöû-õðàíèëèùà
276
//class_instance.append(tr("_inctance"));
276
//class_instance.append(tr("_inctance"));
277
str_fltr.append(class_indx);
277
str_fltr.append(class_indx);
278
str_fltr.append(tr(" AND FieldType <> \"pointer\""));
278
str_fltr.append(tr(" AND FieldType <> \"pointer\""));
279
279
280
model->setTable(class_instance);
280
model->setTable(class_instance);
281
//model->setTable(tr("memory"));
281
//model->setTable(tr("memory"));
282
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
282
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
283
model->select();
283
model->select();
284
tableForInstance->setModel(model);
284
tableForInstance->setModel(model);
285
tableForInstance->resizeColumnsToContents();
285
tableForInstance->resizeColumnsToContents();
286
tableForInstance->setWindowTitle(class_instance);
286
tableForInstance->setWindowTitle(class_instance);
287
tableForInstance->show();
287
tableForInstance->show();
288
288
289
modelForDescription->setFilter(str_fltr);
289
modelForDescription->setFilter(str_fltr);
290
modelForDescription->select();
290
modelForDescription->select();
291
ui->tableView_2->resizeColumnsToContents();
291
ui->tableView_2->resizeColumnsToContents();
292
292
293
293
294
 str_fltr = tr("ClassIdentifer = ");
294
 str_fltr = tr("ClassIdentifer = ");
295
 modelForPointers->setInctance(class_instance);  // ïåðåäàåì â ìîäåëü ïîëåé èìÿ òåêóùåé òàáëèöû-õðàíèëèùà
295
 modelForPointers->setInctance(class_instance);  // ïåðåäàåì â ìîäåëü ïîëåé èìÿ òåêóùåé òàáëèöû-õðàíèëèùà
296
 str_fltr.append(class_indx);
296
 str_fltr.append(class_indx);
297
 str_fltr.append(tr(" AND FieldType = \"pointer\""));
297
 str_fltr.append(tr(" AND FieldType = \"pointer\""));
298
// str_fltr.append( tr(" FieldType = pointer "));
298
// str_fltr.append( tr(" FieldType = pointer "));
299
299
300
300
301
301
302
 modelForPointers->setFilter(str_fltr);
302
 modelForPointers->setFilter(str_fltr);
303
modelForPointers->select();
303
modelForPointers->select();
304
ui->tableView_3->setModel(modelForPointers);
304
ui->tableView_3->setModel(modelForPointers);
305
ui->tableView_3->resizeColumnsToContents();
305
ui->tableView_3->resizeColumnsToContents();
306
306
307
//connect(ui->tableView, SIGNAL(clicked(const QModelIndex)), this, SLOT(on_tableView_clicked(const QModelIndex)));
307
//connect(ui->tableView, SIGNAL(clicked(const QModelIndex)), this, SLOT(on_tableView_clicked(const QModelIndex)));
308
connect(mymodel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_myModel_dataChanged(QModelIndex,QModelIndex)));
308
connect(mymodel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_myModel_dataChanged(QModelIndex,QModelIndex)));
309
connect(modelForDescription, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_modelForDescription_dataChanged(QModelIndex,QModelIndex)));
309
connect(modelForDescription, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(on_modelForDescription_dataChanged(QModelIndex,QModelIndex)));
310
//connect(ui->newClassAction, SIGNAL(triggered(bool)), this, SLOT(on_pushButton_clicked(bool)));
310
//connect(ui->newClassAction, SIGNAL(triggered(bool)), this, SLOT(on_pushButton_clicked(bool)));
311
connect(ui->action_ID, SIGNAL(triggered(bool)), this, SLOT(on_action_ID_triggered(bool)));
311
connect(ui->action_ID, SIGNAL(triggered(bool)), this, SLOT(on_action_ID_triggered(bool)));
312
connect(ui->action_showAlias, SIGNAL(triggered(bool)), this, SLOT(on_action_showAlias_triggered(bool))); // ïîêàçûâàòü ïñåâäîíèìû
312
connect(ui->action_showAlias, SIGNAL(triggered(bool)), this, SLOT(on_action_showAlias_triggered(bool))); // ïîêàçûâàòü ïñåâäîíèìû
313
connect(ui->action_showInstance, SIGNAL(triggered(bool)), this, SLOT(on_action_showInstance_triggered(bool))); // ïîêàçûâàòü õðàíèëèùà îáúåêòîâ
313
connect(ui->action_showInstance, SIGNAL(triggered(bool)), this, SLOT(on_action_showInstance_triggered(bool))); // ïîêàçûâàòü õðàíèëèùà îáúåêòîâ
314
connect(ui->action_removeSelectedFields, SIGNAL(triggered()), this, SLOT(on_pushButton_4_clicked())); // óäàëèòü âûäåëåííûå ïîëÿ
314
connect(ui->action_removeSelectedFields, SIGNAL(triggered()), this, SLOT(on_pushButton_4_clicked())); // óäàëèòü âûäåëåííûå ïîëÿ
315
connect(ui->action_removeAllFields, SIGNAL(triggered()), this, SLOT(on_pushButton_5_clicked())); // óäàëèòü âñå ïîëÿ
315
connect(ui->action_removeAllFields, SIGNAL(triggered()), this, SLOT(on_pushButton_5_clicked())); // óäàëèòü âñå ïîëÿ
316
connect(ui->action_removeSelectedClasses, SIGNAL(triggered()), this, SLOT(on_pushButton_2_clicked())); // óäàëèòü âûäåëåííûå êëàññû
316
connect(ui->action_removeSelectedClasses, SIGNAL(triggered()), this, SLOT(on_pushButton_2_clicked())); // óäàëèòü âûäåëåííûå êëàññû
317
connect(ui->action_removeAllClasses, SIGNAL(triggered()), this, SLOT(on_action_removeAllClasses())); // óäàëèòü âñå êëàññû
317
connect(ui->action_removeAllClasses, SIGNAL(triggered()), this, SLOT(on_action_removeAllClasses())); // óäàëèòü âñå êëàññû
318
connect(ui->action_newClass, SIGNAL(triggered()), this, SLOT(on_pushButton_clicked())); // äîáàâèòü íîâûé êëàññ
318
connect(ui->action_newClass, SIGNAL(triggered()), this, SLOT(on_pushButton_clicked())); // äîáàâèòü íîâûé êëàññ
319
connect(ui->action_newField, SIGNAL(triggered()), this, SLOT(on_pushButton_3_clicked())); // äîáàâèòü íîâîå ïîëå
319
connect(ui->action_newField, SIGNAL(triggered()), this, SLOT(on_pushButton_3_clicked())); // äîáàâèòü íîâîå ïîëå
-
 
320
connect(ui->action_newPointer, SIGNAL(triggered()), this, SLOT(on_action_newPointer())); // äîáàâèòü íîâîå ïîëå äëÿ óêàçàòåëåé íà êëàññû-êîíòåéíåðû
-
 
321
// connect(ui->action_newPointer, SIGNAL(triggered()), this, SLOT(on_pushButton_3_clicked())); // äîáàâèòü íîâîå ïîëå äëÿ óêàçàòåëåé íà êëàññû-êîíòåéíåðû
-
 
322
connect(modelForDescription, SIGNAL(field_changed()), this, SLOT(on_field_changed())); // â òàáëèöå ïîëåé ïðîèçîøëè èçìåíåíèÿ
320
connect(ClassEditor::modelForDescription, SIGNAL(field_changed()), this, SLOT(on_field_changed())); // äîáàâèòü íîâîå ïîëå
323
connect(ClassEditor::modelForPointers, SIGNAL(field_changed()), this, SLOT(on_field_changed())); // â òàáëèöå óêàçàòåëåé ïðîèçîøëè èçìåíåíèÿ
-
 
324
-
 
325
321
}
326
}
322
327
323
328
324
329
325
330
326
331
327
332
328
333
329
334
330
335
331
336
332
337
333
ClassEditor::~ClassEditor()
338
ClassEditor::~ClassEditor()
334
{
339
{
335
    delete ui;
340
    delete ui;
336
    delete model;
341
    delete model;
337
    delete tableForInstance;
342
    delete tableForInstance;
338
 //    delete field;
343
 //    delete field;
339
   // delete settdialog;
344
   // delete settdialog;
340
}
345
}
341
346
342
void ClassEditor::changeEvent(QEvent *e)
347
void ClassEditor::changeEvent(QEvent *e)
343
{
348
{
344
    QMainWindow::changeEvent(e);
349
    QMainWindow::changeEvent(e);
345
    switch (e->type()) {
350
    switch (e->type()) {
346
    case QEvent::LanguageChange:
351
    case QEvent::LanguageChange:
347
        ui->retranslateUi(this);
352
        ui->retranslateUi(this);
348
        break;
353
        break;
349
    default:
354
    default:
350
        break;
355
        break;
351
    }
356
    }
352
}
357
}
353
358
354
359
355
/*
360
/*
356
void  ClassEditor::addNewClass(){
361
void  ClassEditor::addNewClass(){
357

362

358
    int row = model->rowCount();
363
    int row = model->rowCount();
359

364

360
    model->insertRows(row, 1);
365
    model->insertRows(row, 1);
361
    model->setData(model->index(row, 1), tr("New class")); // ïðèñâàèâàåì íîâîå çíà÷åíèå ïîëþ "èìÿ êëàññà"
366
    model->setData(model->index(row, 1), tr("New class")); // ïðèñâàèâàåì íîâîå çíà÷åíèå ïîëþ "èìÿ êëàññà"
362

367

363

368

364
    // model->setData(model->index(row, 1), tr("Âàñÿ Ïóïê  èí"));
369
    // model->setData(model->index(row, 1), tr("Âàñÿ Ïóïê  èí"));
365
    // model->setData(model->index(row, 2) , tr("Ìóõîñðà  íñê, Çàæîïèíñêèå âûñåëêè ä 1"));
370
    // model->setData(model->index(row, 2) , tr("Ìóõîñðà  íñê, Çàæîïèíñêèå âûñåëêè ä 1"));
366

371

367

372

368
    model->submitAll();
373
    model->submitAll();
369

374

370
    row = model->rowCount();
375
    row = model->rowCount();
371
    QString tmp_str;
376
    QString tmp_str;
372
    int i_tmp;
377
    int i_tmp;
373
    i_tmp = model->data(model->index(row-1, 0)).toInt();
378
    i_tmp = model->data(model->index(row-1, 0)).toInt();
374
    tmp_str = model->data(model->index(row-1, 0)).toString(); // ãåíåðèì èìÿ òàáëèöû-õðàíèëèùà îáúåêòîâ êëàññà
379
    tmp_str = model->data(model->index(row-1, 0)).toString(); // ãåíåðèì èìÿ òàáëèöû-õðàíèëèùà îáúåêòîâ êëàññà
375

380

376
    tmp_str.append(tr("_Inctance"));
381
    tmp_str.append(tr("_Inctance"));
377
    model->setData(model->index(row-1, 3), tmp_str );  // è çàíîñèì çíà÷åíèå â òàáëèöó
382
    model->setData(model->index(row-1, 3), tmp_str );  // è çàíîñèì çíà÷åíèå â òàáëèöó
378

383

379
    model->submitAll();
384
    model->submitAll();
380
    mymodel->select();
385
    mymodel->select();
381

386

382

387

383
}
388
}
384
*/
389
*/
385
390
386
void  ClassEditor::addNewClass_new(){
391
void  ClassEditor::addNewClass_new(){
387
392
388
    int row = mymodel->rowCount();
393
    int row = mymodel->rowCount();
389
394
390
    mymodel->insertRows(row, 1);
395
    mymodel->insertRows(row, 1);
391
    mymodel->setData(mymodel->index(row, 1), QVariant(tr("New class")), Qt::EditRole); // ïðèñâàèâàåì íîâîå çíà÷åíèå ïîëþ "èìÿ êëàññà"
396
    mymodel->setData(mymodel->index(row, 1), QVariant(tr("New class")), Qt::EditRole); // ïðèñâàèâàåì íîâîå çíà÷åíèå ïîëþ "èìÿ êëàññà"
392
397
393
398
394
    mymodel->submitAll();
399
    mymodel->submitAll();
395
    row = mymodel->rowCount();
400
    row = mymodel->rowCount();
396
    QString tmp_str1, sql_str;
401
    QString tmp_str1, sql_str;
397
    int i_tmp1;
402
    int i_tmp1;
398
    i_tmp1 = mymodel->data(mymodel->index(row-1, 0)).toInt();
403
    i_tmp1 = mymodel->data(mymodel->index(row-1, 0)).toInt();
399
    tmp_str1 = mymodel->data(mymodel->index(row-1, 0)).toString(); // ãåíåðèì èìÿ òàáëèöû-õðàíèëèùà îáúåêòîâ êëàññà
404
    tmp_str1 = mymodel->data(mymodel->index(row-1, 0)).toString(); // ãåíåðèì èìÿ òàáëèöû-õðàíèëèùà îáúåêòîâ êëàññà
400
405
401
    tmp_str1.append(tr("_Inctance"));
406
    tmp_str1.append(tr("_Inctance"));
402
    SqlTable* tbl;
407
    SqlTable* tbl;
403
    tbl = new SqlTable(tmp_str1); // ñîçäàåì õðàíèëèùå îáúåêòîâ
408
    tbl = new SqlTable(tmp_str1); // ñîçäàåì õðàíèëèùå îáúåêòîâ
404
    sql_str = tbl->sqlString();
409
    sql_str = tbl->sqlString();
405
    bool ok;
410
    bool ok;
406
411
407
    ok = sql.createTable(tbl);
412
    ok = sql.createTable(tbl);
408
413
409
    if (!ok) {
414
    if (!ok) {
410
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
415
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
411
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
416
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
412
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
417
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
413
                                                                                sql.lasError());         // Òåêñò ñîîáùåíèÿ.
418
                                                                                sql.lasError());         // Òåêñò ñîîáùåíèÿ.
414
                                delete tbl;
419
                                delete tbl;
415
                                mymodel->removeRow(row-1);
420
                                mymodel->removeRow(row-1);
416
                                mymodel->submitAll();
421
                                mymodel->submitAll();
417
                                mymodel->select();
422
                                mymodel->select();
418
                                ui->tableView_2->resizeRowsToContents();
423
                                ui->tableView_2->resizeRowsToContents();
419
                                return; // âûõîäèì íå ïðèìåíÿÿ èçìåíåíèé
424
                                return; // âûõîäèì íå ïðèìåíÿÿ èçìåíåíèé
420
425
421
                         }
426
                         }
422
427
423
    delete tbl;
428
    delete tbl;
424
    mymodel->setData(mymodel->index(row-1, 3), QVariant(tmp_str1), Qt::EditRole);  // è çàíîñèì çíà÷åíèå â òàáëèöó
429
    mymodel->setData(mymodel->index(row-1, 3), QVariant(tmp_str1), Qt::EditRole);  // è çàíîñèì çíà÷åíèå â òàáëèöó
425
430
426
431
427
432
428
    // model->setData(model->index(row, 1), tr("Âàñÿ Ïóïê  èí"));
433
    // model->setData(model->index(row, 1), tr("Âàñÿ Ïóïê  èí"));
429
    // model->setData(model->index(row, 2) , tr("Ìóõîñðà  íñê, Çàæîïèíñêèå âûñåëêè ä 1"));
434
    // model->setData(model->index(row, 2) , tr("Ìóõîñðà  íñê, Çàæîïèíñêèå âûñåëêè ä 1"));
430
435
431
436
432
    //mymodel->submitAll();
437
    //mymodel->submitAll();
433
438
434
    //row = mymodel->rowCount();
439
    //row = mymodel->rowCount();
435
440
436
441
437
  //mymodel->select();
442
  //mymodel->select();
438
443
439
444
440
}
445
}
441
446
442
447
443
void ClassEditor::addNewField(){
448
void ClassEditor::addNewField(){
444
    // QSqlRecord rec = mymodel->record(1);
449
    // QSqlRecord rec = mymodel->record(1);
445
     //bool ok;
450
     //bool ok;
446
     //ok = rec.isEmpty();
451
     //ok = rec.isEmpty();
447
     //QString currientClassID;
452
     //QString currientClassID;
448
     //currientClassID = rec.value(1).toString();
453
     //currientClassID = rec.value(1).toString();
449
    QString Inctance_str; // èìÿ òàáëèöû-õðàíèëèùà îáúåêòîâ äëÿ âûáðàííîãî êëàññà
454
    QString Inctance_str; // èìÿ òàáëèöû-õðàíèëèùà îáúåêòîâ äëÿ âûáðàííîãî êëàññà
450
    QString query_str = tr("ALTER TABLE ");
455
    QString query_str = tr("ALTER TABLE ");
451
    QString db_error;
456
    QString db_error;
452
    QSqlQuery q;
457
    QSqlQuery q;
453
    int currRow = ClassEditor::currIndexOfClassesTable.row(); //
458
    int currRow = ClassEditor::currIndexOfClassesTable.row(); //
454
    Inctance_str = mymodel->data(mymodel->index(currRow, 3)).toString();
459
    Inctance_str = mymodel->data(mymodel->index(currRow, 3)).toString();
455
    query_str.append( Inctance_str);
460
    query_str.append( Inctance_str);
456
    query_str.append(tr(" ADD COLUMN `New field` CHAR(30)"));
461
    query_str.append(tr(" ADD COLUMN `New field` CHAR(30)"));
457
    bool ok = q.prepare(query_str);
462
    bool ok = q.prepare(query_str);
458
463
459
    ok = q.exec();
464
    ok = q.exec();
460
    if (!ok) {
465
    if (!ok) {
461
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
466
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
462
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
467
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
463
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
468
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
464
                                                                                q.lastError().text()); // Òåêñò ñîîáùåíèÿ.
469
                                                                                q.lastError().text()); // Òåêñò ñîîáùåíèÿ.
465
470
466
                                                                return; // âûõîäèì íå ïðèìåíÿÿ èçìåíåíèé
471
                                                                return; // âûõîäèì íå ïðèìåíÿÿ èçìåíåíèé
467
472
468
                         }
473
                         }
469
474
470
    int row = modelForDescription->rowCount();
475
    int row = modelForDescription->rowCount();
471
    modelForDescription->insertRows(row, 1);
476
    modelForDescription->insertRows(row, 1);
472
    modelForDescription->onlySetData(modelForDescription->index(row, 5), QVariant(currClassID), Qt::EditRole);
477
    modelForDescription->onlySetData(modelForDescription->index(row, 5), QVariant(currClassID), Qt::EditRole);
473
    modelForDescription->onlySetData(modelForDescription->index(row, 4), QVariant(tr("NULL")), Qt::EditRole);
478
    modelForDescription->onlySetData(modelForDescription->index(row, 4), QVariant(tr("NULL")), Qt::EditRole);
474
479
475
    modelForDescription->submitAll();
480
    modelForDescription->submitAll();
476
481
477
    delete model;
482
    delete model;
478
    delete tableForInstance;
483
    delete tableForInstance;
479
    model = new QSqlTableModel();
484
    model = new QSqlTableModel();
480
    tableForInstance = new QTableView();
485
    tableForInstance = new QTableView();
481
    model->setTable(Inctance_str);
486
    model->setTable(Inctance_str);
482
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
487
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
483
    tableForInstance->setModel(model);
488
    tableForInstance->setModel(model);
484
    tableForInstance->setWindowTitle(Inctance_str);
489
    tableForInstance->setWindowTitle(Inctance_str);
485
    tableForInstance->show();
490
    tableForInstance->show();
486
}
491
}
487
492
488
493
489
494
-
 
495
void ClassEditor::addNewPointer(){  //äîáîâëÿåì íîâîå ïîëå, ãäå áóäóò õðàíèòüñÿ óêàçàòåëè íà îáúåêòû êëàññà-êîíòåéíåðà
-
 
496
    QString Inctance_str; // èìÿ òàáëèöû-õðàíèëèùà îáúåêòîâ äëÿ âûáðàííîãî êëàññà
-
 
497
    QString query_str = tr("ALTER TABLE ");
-
 
498
    QString db_error;
-
 
499
    QSqlQuery q;
-
 
500
    int currRow = ClassEditor::currIndexOfClassesTable.row(); //
-
 
501
    Inctance_str = mymodel->data(mymodel->index(currRow, 3)).toString();
-
 
502
    query_str.append( Inctance_str);
-
 
503
    query_str.append(tr(" ADD COLUMN `Ñlass-container ID` CHAR(30)"));
-
 
504
    bool ok = q.prepare(query_str);
-
 
505
-
 
506
    ok = q.exec();
-
 
507
    if (!ok) {
-
 
508
                                QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
-
 
509
                                                                                this,                      // Ðîäèòåëüñêèé âèäæåò.
-
 
510
                                                                                QObject::tr("Database Error"),   // Çàãîëîâîê.
-
 
511
                                                                                q.lastError().text()); // Òåêñò ñîîáùåíèÿ.
-
 
512
-
 
513
                                                                return; // âûõîäèì íå ïðèìåíÿÿ èçìåíåíèé
-
 
514
-
 
515
                         }
490
516
491
517
-
 
518
    int row = ClassEditor::modelForPointers->rowCount();
-
 
519
    modelForPointers->insertRows(row, 1);
-
 
520
-
 
521
    modelForPointers->onlySetData(modelForPointers->index(row, 1), QVariant(tr("Ñlass-container ID")), Qt::EditRole);
-
 
522
    modelForPointers->onlySetData(modelForPointers->index(row, 3), QVariant(tr("pointer")), Qt::EditRole);
-
 
523
    modelForPointers->onlySetData(modelForPointers->index(row, 5), QVariant(currClassID), Qt::EditRole);
-
 
524
    modelForPointers->onlySetData(modelForPointers->index(row, 4), QVariant(tr("NULL")), Qt::EditRole);
-
 
525
-
 
526
-
 
527
    modelForPointers->submitAll();
-
 
528
-
 
529
    ClassEditor::refreshInctance();
-
 
530
-
 
531
-
 
532
-
 
533
-
 
534
-
 
535
-
 
536
-
 
537
-
 
538
-
 
539
}
492
540
493
541
494
542
495
543
496
544
497
// äîáàâëÿåì íîâûé êëàññ
545
// äîáàâëÿåì íîâûé êëàññ
498
void ClassEditor::on_pushButton_clicked(){
546
void ClassEditor::on_pushButton_clicked(){
499
//int i;
547
//int i;
500
//i++;
548
//i++;
501
/////ClassEditor::addNewClass();
549
/////ClassEditor::addNewClass();
502
ClassEditor::addNewClass_new();
550
ClassEditor::addNewClass_new();
503
 mymodel->select();
551
 mymodel->select();
504
//ui->tableView->setModel(mymodel);
552
//ui->tableView->setModel(mymodel);
505
553
506
}
554
}
507
555
508
void ClassEditor::on_tableView_clicked(const QModelIndex & index ){
556
void ClassEditor::on_tableView_clicked(const QModelIndex & index ){
509
    int i, row, column;
557
    int i, row, column;
510
    i++;
558
    i++;
511
    row = index.row();
559
    row = index.row();
512
    column = index.column();
560
    column = index.column();
513
    currIndexOfClassesTable = index;
561
    currIndexOfClassesTable = index;
514
    QModelIndex index_tmp, index_instance;
562
    QModelIndex index_tmp, index_instance;
515
    QString tmp_str, filter_str, instance_str;
563
    QString tmp_str, filter_str, instance_str;
516
   index_tmp = ui->tableView->model()->index(row, 0);
564
   index_tmp = ui->tableView->model()->index(row, 0);
517
   index_instance = ui->tableView->model()->index(row, 3);
565
   index_instance = ui->tableView->model()->index(row, 3);
518
   tmp_str = ui->tableView->model()->data(index_tmp).toString();
566
   tmp_str = ui->tableView->model()->data(index_tmp).toString();
519
   instance_str = ui->tableView->model()->data(index_instance).toString();
567
   instance_str = ui->tableView->model()->data(index_instance).toString();
520
   modelForDescription->setInctance(instance_str); // ïåðåäàåì â ìîäåëü ïîëåé èìÿ òåêóùåé òàáëèöû-õðàíèëèùà
568
   modelForDescription->setInctance(instance_str); // ïåðåäàåì â ìîäåëü ïîëåé èìÿ òåêóùåé òàáëèöû-õðàíèëèùà
521
   modelForPointers->setInctance(instance_str);
569
   modelForPointers->setInctance(instance_str);
522
570
523
571
524
572
525
 //  instance_str.append(tr("_inctance"));
573
 //  instance_str.append(tr("_inctance"));
526
/*
574
/*
527
   Inctance_model.clear();
575
   Inctance_model.clear();
528
   Inctance_model.setTable(instance_str);
576
   Inctance_model.setTable(instance_str);
529
    Inctance_model.select();
577
    Inctance_model.select();
530
    tableForInstance_new.setModel(&Inctance_model);
578
    tableForInstance_new.setModel(&Inctance_model);
531
    tableForInstance_new.show();
579
    tableForInstance_new.show();
532
*/
580
*/
533
  // model->clear();
581
  // model->clear();
534
   tableForInstance->close();
582
   tableForInstance->close();
535
   delete model;
583
   delete model;
536
   delete tableForInstance;
584
   delete tableForInstance;
537
   model = new QSqlTableModel();
585
   model = new QSqlTableModel();
538
   tableForInstance = new QTableView();
586
   tableForInstance = new QTableView();
539
   model->setTable(instance_str);
587
   model->setTable(instance_str);
540
   model->setEditStrategy(QSqlTableModel::OnManualSubmit);
588
   model->setEditStrategy(QSqlTableModel::OnManualSubmit);
541
   tableForInstance->setModel(model);
589
   tableForInstance->setModel(model);
542
590
543
   model->select();
591
   model->select();
544
tableForInstance->setWindowTitle(instance_str);
592
tableForInstance->setWindowTitle(instance_str);
545
tableForInstance->show();
593
tableForInstance->show();
546
594
547
   //   tableForInstance.setModel(model);
595
   //   tableForInstance.setModel(model);
548
   tableForInstance->resizeColumnsToContents();
596
   tableForInstance->resizeColumnsToContents();
549
597
550
   currClassID = tmp_str;
598
   currClassID = tmp_str;
551
  // ui->label->setText(QVariant(currIndexOfClassesTable.row()).toString());
599
  // ui->label->setText(QVariant(currIndexOfClassesTable.row()).toString());
552
   filter_str = tr("ClassIdentifer = ");
600
   filter_str = tr("ClassIdentifer = ");
553
   filter_str.append(tmp_str);
601
   filter_str.append(tmp_str);
554
   filter_str.append(tr(" AND FieldType <> \"pointer\""));
602
   filter_str.append(tr(" AND FieldType <> \"pointer\""));
555
   modelForDescription->setFilter(filter_str);
603
   modelForDescription->setFilter(filter_str);
556
   modelForDescription->select();
604
   modelForDescription->select();
557
   ui->tableView_2->resizeColumnsToContents();
605
   ui->tableView_2->resizeColumnsToContents();
558
606
559
   filter_str = tr("ClassIdentifer = ");
607
   filter_str = tr("ClassIdentifer = ");
560
   filter_str.append(tmp_str);
608
   filter_str.append(tmp_str);
561
   filter_str.append(tr(" AND FieldType = \"pointer\""));
609
   filter_str.append(tr(" AND FieldType = \"pointer\""));
562
   modelForPointers->setFilter(filter_str);
610
   modelForPointers->setFilter(filter_str);
563
   modelForPointers->select();
611
   modelForPointers->select();
564
   ui->tableView_3->resizeColumnsToContents();
612
   ui->tableView_3->resizeColumnsToContents();
565
613
566
614
567
615
568
616
569
   i++;
617
   i++;
570
}
618
}
571
619
572
620
573
621
574
void ClassEditor::on_pushButton_2_clicked(){ // îáðàáîò÷èê íàæàòèÿ êíîïðêè "Óäàëèòü êëàññ"
622
void ClassEditor::on_pushButton_2_clicked(){ // îáðàáîò÷èê íàæàòèÿ êíîïðêè "Óäàëèòü êëàññ"
575
    QModelIndex model_index;
623
    QModelIndex model_index;
576
    QItemSelectionModel *selectionModel = ui->tableView->selectionModel();
624
    QItemSelectionModel *selectionModel = ui->tableView->selectionModel();
577
    QModelIndexList indexes = selectionModel->selectedIndexes();
625
    QModelIndexList indexes = selectionModel->selectedIndexes();
578
    QList<int> selectedRows;
626
    QList<int> selectedRows;
579
    selectedRows.clear();
627
    selectedRows.clear();
580
    foreach (model_index, indexes){ // ñïèñîê âñåõ âûäåëåííûõ ñòðîê
628
    foreach (model_index, indexes){ // ñïèñîê âñåõ âûäåëåííûõ ñòðîê
581
        if (!selectedRows.contains(model_index.row()) && (model_index.column()==1))  selectedRows.append(model_index.row()); // îñòàâëÿåì â ñïèñêå òîëüêî âûáðàííûå â ïåðâîé êîëîíêå
629
        if (!selectedRows.contains(model_index.row()) && (model_index.column()==1))  selectedRows.append(model_index.row()); // îñòàâëÿåì â ñïèñêå òîëüêî âûáðàííûå â ïåðâîé êîëîíêå
582
630
583
    }
631
    }
584
    qSort(selectedRows.begin(),selectedRows.end(), qGreater<int>()); // ñîðòèðóåì â îáðàòíîì ïîðÿäêå
632
    qSort(selectedRows.begin(),selectedRows.end(), qGreater<int>()); // ñîðòèðóåì â îáðàòíîì ïîðÿäêå
585
633
586
634
587
    for (int m =0; m < selectedRows.size(); ++m){
635
    for (int m =0; m < selectedRows.size(); ++m){
588
636
589
     ClassEditor::removeClass(selectedRows.at(m));
637
     ClassEditor::removeClass(selectedRows.at(m));
590
638
591
639
592
640
593
    }
641
    }
594
 mymodel->submitAll();
642
 mymodel->submitAll();
595
    ClassEditor::modelForDescription->select();
643
    ClassEditor::modelForDescription->select();
596
644
597
}
645
}
598
646
599
void ClassEditor::on_pushButton_3_clicked(){         // îáðàáîò÷èê íàæàòèÿ êíîïêè "Íîâîå ïîëå"
647
void ClassEditor::on_pushButton_3_clicked(){         // îáðàáîò÷èê íàæàòèÿ êíîïêè "Íîâîå ïîëå"
600
    int i;
648
    int i;
601
    i++;
649
    i++;
602
    ClassEditor::addNewField();
650
    ClassEditor::addNewField();
603
    ClassEditor::modelForDescription->select();
651
    ClassEditor::modelForDescription->select();
604
    ui->tableView_2->resizeColumnsToContents();
652
    ui->tableView_2->resizeColumnsToContents();
605
}
653
}
606
654
607
655
608
void ClassEditor::on_pushButton_4_clicked(){         // îáðàáîò÷èê íàæàòèÿ êíîïêè "Óäàëèòü ïîëå"
656
void ClassEditor::on_pushButton_4_clicked(){         // îáðàáîò÷èê íàæàòèÿ êíîïêè "Óäàëèòü ïîëå"
609
   // int i;
657
   // int i;
610
    QModelIndex model_index;
658
    QModelIndex model_index;
611
    QItemSelectionModel *selectionModel = ui->tableView_2->selectionModel();
659
    QItemSelectionModel *selectionModel = ui->tableView_2->selectionModel();
612
    QModelIndexList indexes = selectionModel->selectedIndexes();
660
    QModelIndexList indexes = selectionModel->selectedIndexes();
613
    //QModelIndexList indexes_fo_first_col; // èíäåêñû äëÿ ïåðâîãî ñòîëáöà (èìåíà êëàññîâ)
661
    //QModelIndexList indexes_fo_first_col; // èíäåêñû äëÿ ïåðâîãî ñòîëáöà (èìåíà êëàññîâ)
614
    //model_index = mymodel->selec;
662
    //model_index = mymodel->selec;
615
    //modelList = ui->tableView->SelectItems;
663
    //modelList = ui->tableView->SelectItems;
616
    //i = indexes.size();
664
    //i = indexes.size();
617
    QList<int> selectedRows;
665
    QList<int> selectedRows;
618
    //indexes_fo_first_col.clear();
666
    //indexes_fo_first_col.clear();
619
    /*
667
    /*
620
    foreach (model_index, indexes){ // ñïèñîê âñåõ âûäåëåííûõ ñòðîê
668
    foreach (model_index, indexes){ // ñïèñîê âñåõ âûäåëåííûõ ñòðîê
621
        if (!indexes_fo_first_col.contains(model_index) && (model_index.column()==1))  indexes_fo_first_col.append(model_index); // îñòàâëÿåì â ñïèñêå òîëüêî âûáðàííûå â ïåðâîé êîëîíêå
669
        if (!indexes_fo_first_col.contains(model_index) && (model_index.column()==1))  indexes_fo_first_col.append(model_index); // îñòàâëÿåì â ñïèñêå òîëüêî âûáðàííûå â ïåðâîé êîëîíêå
622

670

623
    }
671
    }
624
*/
672
*/
625
    selectedRows.clear();
673
    selectedRows.clear();
626
    foreach (model_index, indexes){ // ñïèñîê âñåõ âûäåëåííûõ ñòðîê
674
    foreach (model_index, indexes){ // ñïèñîê âñåõ âûäåëåííûõ ñòðîê
627
        if (!selectedRows.contains(model_index.row()) && (model_index.column()==1))  {
675
        if (!selectedRows.contains(model_index.row()) && (model_index.column()==1))  {
628
            selectedRows.append(model_index.row()); // îñòàâëÿåì â ñïèñêå òîëüêî âûáðàííûå â ïåðâîé êîëîíêå
676
            selectedRows.append(model_index.row()); // îñòàâëÿåì â ñïèñêå òîëüêî âûáðàííûå â ïåðâîé êîëîíêå
629
        }
677
        }
630
    }
678
    }
631
679
632
    qSort(selectedRows.begin(),selectedRows.end(), qGreater<int>()); // ñîðòèðóåì â îáðàòíîì ïîðÿäêå
680
    qSort(selectedRows.begin(),selectedRows.end(), qGreater<int>()); // ñîðòèðóåì â îáðàòíîì ïîðÿäêå
633
681
634
    QString Inctance_str; // èìÿ òàáëèöû-õðàíèëèùà
682
    QString Inctance_str; // èìÿ òàáëèöû-õðàíèëèùà
635
    Inctance_str = mymodel->data(mymodel->index(ClassEditor::currIndexOfClassesTable.row(), 3)).toString();
683
    Inctance_str = mymodel->data(mymodel->index(ClassEditor::currIndexOfClassesTable.row(), 3)).toString();
636
    for (int m =0; m < selectedRows.size(); ++m){
684
    for (int m =0; m < selectedRows.size(); ++m){
637
685
638
686
639
        QString query_str;
687
        QString query_str;
640
        QString field_name_str; // èìÿ óäàëÿåìîãî ïîëÿ
688
        QString field_name_str; // èìÿ óäàëÿåìîãî ïîëÿ
641
        QSqlQuery q;
689
        QSqlQuery q;
642
690
643
        query_str.clear();
691
        query_str.clear();
644
692
645
693
646
        field_name_str = modelForDescription->data(modelForDescription->index(selectedRows.at(m), 1)).toString();
694
        field_name_str = modelForDescription->data(modelForDescription->index(selectedRows.at(m), 1)).toString();
647
695
648
        query_str.append(tr("ALTER TABLE "));
696
        query_str.append(tr("ALTER TABLE "));
649
        query_str.append(Inctance_str);
697
        query_str.append(Inctance_str);
650
        query_str.append(tr(" DROP COLUMN `"));
698
        query_str.append(tr(" DROP COLUMN `"));
651
        query_str.append(field_name_str);
699
        query_str.append(field_name_str);
652
        query_str.append(tr("`"));
700
        query_str.append(tr("`"));
653
        q.prepare(query_str);
701
        q.prepare(query_str);
654
        bool ok = q.exec();
702
        bool ok = q.exec();
655
        if (!ok) {
703
        if (!ok) {
656
                                    QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
704
                                    QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
657
                                                                                    this,                      // Ðîäèòåëüñêèé âèäæåò.
705
                                                                                    this,                      // Ðîäèòåëüñêèé âèäæåò.
658
                                                                                    QObject::tr("Database Error"),   // Çàãîëîâîê.
706
                                                                                    QObject::tr("Database Error"),   // Çàãîëîâîê.
659
                                                                                    q.lastError().text()); // Òåêñò ñîîáùåíèÿ.
707
                                                                                    q.lastError().text()); // Òåêñò ñîîáùåíèÿ.
660
708
661
                                                                    return; // âûõîäèì íå ïðèìåíÿÿ èçìåíåíèé
709
                                                                    return; // âûõîäèì íå ïðèìåíÿÿ èçìåíåíèé
662
710
663
                             }
711
                             }
664
712
665
713
666
714
667
        modelForDescription->removeRow(selectedRows.at(m));
715
        modelForDescription->removeRow(selectedRows.at(m));
668
716
669
    }
717
    }
670
    delete model;
718
    delete model;
671
    delete tableForInstance;
719
    delete tableForInstance;
672
    model = new QSqlTableModel();
720
    model = new QSqlTableModel();
673
    tableForInstance = new QTableView();
721
    tableForInstance = new QTableView();
674
    model->setTable(Inctance_str);
722
    model->setTable(Inctance_str);
675
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
723
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
676
    tableForInstance->setModel(model);
724
    tableForInstance->setModel(model);
677
    tableForInstance->setWindowTitle(Inctance_str);
725
    tableForInstance->setWindowTitle(Inctance_str);
678
    tableForInstance->show();
726
    tableForInstance->show();
679
    //i = selectedRows.size();
727
    //i = selectedRows.size();
680
728
681
    //if (i > 0) model_index = indexes.at(0);
729
    //if (i > 0) model_index = indexes.at(0);
682
}
730
}
683
731
684
732
685
void ClassEditor::on_pushButton_5_clicked(){         // îáðàáîò÷èê íàæàòèÿ êíîïêè "Óäàëèòü âñå ïîëÿ"
733
void ClassEditor::on_pushButton_5_clicked(){         // îáðàáîò÷èê íàæàòèÿ êíîïêè "Óäàëèòü âñå ïîëÿ"
686
int row;
734
int row;
687
row = ClassEditor::modelForDescription->rowCount();
735
row = ClassEditor::modelForDescription->rowCount();
688
ClassEditor::modelForDescription->removeRows(0, row);
736
ClassEditor::modelForDescription->removeRows(0, row);
689
ClassEditor::modelForDescription->submitAll();
737
ClassEditor::modelForDescription->submitAll();
690
}
738
}
691
739
692
void ClassEditor::on_myModel_dataChanged( const QModelIndex & topLeft, const QModelIndex & bottomRight ){
740
void ClassEditor::on_myModel_dataChanged( const QModelIndex & topLeft, const QModelIndex & bottomRight ){
693
741
694
int i;
742
int i;
695
i++;
743
i++;
696
ui->tableView->resizeColumnsToContents();
744
ui->tableView->resizeColumnsToContents();
697
745
698
746
699
747
700
748
701
749
702
}
750
}
703
751
704
void ClassEditor::on_modelForDescription_dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ){
752
void ClassEditor::on_modelForDescription_dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ){
705
    ui->tableView_2->resizeColumnsToContents();
753
    ui->tableView_2->resizeColumnsToContents();
706
754
707
    /*
755
    /*
708
    QString instance_str;
756
    QString instance_str;
709
    instance_str = mymodel->data(mymodel->index(ClassEditor::currIndexOfClassesTable.row(), 3)).toString();
757
    instance_str = mymodel->data(mymodel->index(ClassEditor::currIndexOfClassesTable.row(), 3)).toString();
710
    tableForInstance->close();
758
    tableForInstance->close();
711
    delete model;
759
    delete model;
712
    delete tableForInstance;
760
    delete tableForInstance;
713
    model = new QSqlTableModel();
761
    model = new QSqlTableModel();
714
    tableForInstance = new QTableView();
762
    tableForInstance = new QTableView();
715
    model->setTable(instance_str);
763
    model->setTable(instance_str);
716
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
764
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
717
    tableForInstance->setModel(model);
765
    tableForInstance->setModel(model);
718

766

719
    model->select();
767
    model->select();
720
 tableForInstance->setWindowTitle(instance_str);
768
 tableForInstance->setWindowTitle(instance_str);
721
 tableForInstance->show();
769
 tableForInstance->show();
722
*/
770
*/
723
}
771
}
724
772
725
void ClassEditor::on_action_ID_triggered(bool is_checked){          // îáðàáàòûâàåì âûáîð â ìåíþ "Ïîêàçûâàòü ID"
773
void ClassEditor::on_action_ID_triggered(bool is_checked){          // îáðàáàòûâàåì âûáîð â ìåíþ "Ïîêàçûâàòü ID"
726
if (is_checked) ui->tableView->showColumn(0);
774
if (is_checked) ui->tableView->showColumn(0);
727
else ui->tableView->hideColumn(0);
775
else ui->tableView->hideColumn(0);
728
ui->tableView->resizeColumnsToContents();
776
ui->tableView->resizeColumnsToContents();
729
}
777
}
730
778
731
void ClassEditor::on_action_showAlias_triggered(bool is_checked){     // îáðàáàòûâàåì âûáîð â ìåíþ "Ïîêàçûâàòü ïñåâäîíèì"
779
void ClassEditor::on_action_showAlias_triggered(bool is_checked){     // îáðàáàòûâàåì âûáîð â ìåíþ "Ïîêàçûâàòü ïñåâäîíèì"
732
    if (is_checked) ui->tableView->showColumn(2);
780
    if (is_checked) ui->tableView->showColumn(2);
733
    else ui->tableView->hideColumn(2);
781
    else ui->tableView->hideColumn(2);
734
    ui->tableView->resizeColumnsToContents();
782
    ui->tableView->resizeColumnsToContents();
735
}
783
}
736
784
737
void ClassEditor::on_action_showInstance_triggered(bool is_checked){ // îáðàáàòûâàåì âûáîð â ìåíþ "Ïîêàçûâàòü õðàíèëèùà îáúåêòîâ"
785
void ClassEditor::on_action_showInstance_triggered(bool is_checked){ // îáðàáàòûâàåì âûáîð â ìåíþ "Ïîêàçûâàòü õðàíèëèùà îáúåêòîâ"
738
    if (is_checked) ui->tableView->showColumn(3);
786
    if (is_checked) ui->tableView->showColumn(3);
739
    else ui->tableView->hideColumn(3);
787
    else ui->tableView->hideColumn(3);
740
    ui->tableView->resizeColumnsToContents();
788
    ui->tableView->resizeColumnsToContents();
741
}
789
}
742
790
743
791
744
792
745
void ClassEditor::on_action_removeAllClasses(){ // îáðàáàòûâàåì âûáîð â ìåíþ "Óäàëèòü âñå êëàññû"
793
void ClassEditor::on_action_removeAllClasses(){ // îáðàáàòûâàåì âûáîð â ìåíþ "Óäàëèòü âñå êëàññû"
746
    int row;
794
    int row;
747
    row = ClassEditor::mymodel->rowCount();
795
    row = ClassEditor::mymodel->rowCount();
748
    for (int m=0; m < row; ++m){
796
    for (int m=0; m < row; ++m){
749
    ClassEditor::removeClass(0);
797
    ClassEditor::removeClass(0);
750
    //ClassEditor::mymodel->removeRows(0, row);
798
    //ClassEditor::mymodel->removeRows(0, row);
751
}
799
}
752
    ClassEditor::mymodel->submitAll();
800
    ClassEditor::mymodel->submitAll();
753
    ClassEditor::modelForDescription->select();
801
    ClassEditor::modelForDescription->select();
754
}
802
}
755
803
756
void ClassEditor::removeClass(int class_row){ // ôóíêöèÿ óäàëÿåò êëàññ, íàõîäÿùèéñÿ â ñòðîêå ñ íîìåðîì class_row
804
void ClassEditor::removeClass(int class_row){ // ôóíêöèÿ óäàëÿåò êëàññ, íàõîäÿùèéñÿ â ñòðîêå ñ íîìåðîì class_row
757
    QModelIndex index_tmp;
805
    QModelIndex index_tmp;
758
    QString tmp_str, filter_str;
806
    QString tmp_str, filter_str;
759
   index_tmp = ui->tableView->model()->index(class_row, 0);
807
   index_tmp = ui->tableView->model()->index(class_row, 0);
760
   tmp_str = ui->tableView->model()->data(index_tmp).toString();
808
   tmp_str = ui->tableView->model()->data(index_tmp).toString();
761
   currClassID = tmp_str;
809
   currClassID = tmp_str;
762
  // ui->label->setText(QVariant(currIndexOfClassesTable.row()).toString());
810
  // ui->label->setText(QVariant(currIndexOfClassesTable.row()).toString());
763
   filter_str = tr("ClassIdentifer = ");
811
   filter_str = tr("ClassIdentifer = ");
764
   filter_str.append(tmp_str);
812
   filter_str.append(tmp_str);
765
   modelForDescription->setFilter(filter_str); // îáíîâëÿåì òàáëèöó ïîëåé
813
   modelForDescription->setFilter(filter_str); // îáíîâëÿåì òàáëèöó ïîëåé
766
    ClassEditor::on_pushButton_5_clicked(); // ñíà÷àëà óäàëèì âñå ïîëÿ êëàññà
814
    ClassEditor::on_pushButton_5_clicked(); // ñíà÷àëà óäàëèì âñå ïîëÿ êëàññà
767
     mymodel->removeRow(class_row); // òåïåðü óäàëÿåì ñàì êëàññ
815
     mymodel->removeRow(class_row); // òåïåðü óäàëÿåì ñàì êëàññ
768
     mymodel->submitAll(); // ôèêñèðóåì èçìåíåíèÿ
816
     mymodel->submitAll(); // ôèêñèðóåì èçìåíåíèÿ
769
   ui->tableView->resizeColumnsToContents();
817
   ui->tableView->resizeColumnsToContents();
770
   ui->tableView_2->resizeColumnsToContents();
818
   ui->tableView_2->resizeColumnsToContents();
771
819
772
}
820
}
773
821
774
822
775
void ClassEditor::on_field_changed(){ // ïîìåíÿëîñü èìÿ ïîëÿ
823
void ClassEditor::on_field_changed(){ // ïîìåíÿëîñü èìÿ ïîëÿ
776
    ClassEditor::refreshInctance();
824
    ClassEditor::refreshInctance();
777
}
825
}
778
826
779
827
780
828
781
829
782
void ClassEditor::refreshInctance(){ // îáíîâèì ìîäåëü òàáëèöû-õðàíèëèùà
830
void ClassEditor::refreshInctance(){ // îáíîâèì ìîäåëü òàáëèöû-õðàíèëèùà
783
831
784
    QString Inctance_str; // èìÿ òàáëèöû-õðàíèëèùà
832
    QString Inctance_str; // èìÿ òàáëèöû-õðàíèëèùà
785
    Inctance_str = mymodel->data(mymodel->index(ClassEditor::currIndexOfClassesTable.row(), 3)).toString();
833
    Inctance_str = mymodel->data(mymodel->index(ClassEditor::currIndexOfClassesTable.row(), 3)).toString();
786
    delete model;
834
    delete model;
787
    delete tableForInstance;
835
    delete tableForInstance;
788
    model = new QSqlTableModel();
836
    model = new QSqlTableModel();
789
    tableForInstance = new QTableView();
837
    tableForInstance = new QTableView();
790
    model->setTable(Inctance_str);
838
    model->setTable(Inctance_str);
791
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
839
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
792
    model->select();
840
    model->select();
793
    tableForInstance->setModel(model);
841
    tableForInstance->setModel(model);
794
    tableForInstance->setWindowTitle(Inctance_str);
842
    tableForInstance->setWindowTitle(Inctance_str);
795
    tableForInstance->resizeRowsToContents();
843
    tableForInstance->resizeRowsToContents();
796
    tableForInstance->show();
844
    tableForInstance->show();
797
845
798
}
846
}
-
 
847
-
 
848
-
 
849
-
 
850
-
 
851
void ClassEditor::on_action_newPointer(){
-
 
852
    ClassEditor::addNewPointer();
-
 
853
    ClassEditor::modelForPointers->select();
-
 
854
    ui->tableView_3->resizeColumnsToContents();
-
 
855
-
 
856
}
-
 
857
799
 
858