/trunk/ClassEditor/classeditor.h |
---|
56,6 → 56,7 |
// void addNewClass(); // äîáàâèì íîâûé êëàññ |
void addNewClass_new(); |
void addNewField(); // äîáàâëÿåì íîâîå ïîëå ê êëàññó |
void addNewPointer();//äîáîâëÿåì íîâîå ïîëå, ãäå áóäóò õðàíèòüñÿ óêàçàòåëè íà îáúåêòû êëàññà-êîíòåéíåðà |
void refreshInctance(); // îáíîâèì ìîäåëü òàáëèöû-õðàíèëèùà |
private slots: |
74,6 → 75,8 |
void on_action_removeAllClasses(); // óäàëèòü âñå êëàññû |
void removeClass(int class_row); // ôóíêöèÿ óäàëÿåò êëàññ, íàõîäÿùèéñÿ â ñòðîêå ñ íîìåðîì class_row |
void on_field_changed(); // ïîìåíÿëîñü èìÿ ïîëÿ |
void on_action_newPointer(); // äîáàâèòü íîâûé óêàçàòåëü íà êëàññ-êîíòåéíåð |
}; |
#endif // CLASSEDITOR_H |
/trunk/ClassEditor/modelforpointers.cpp |
---|
24,8 → 24,37 |
bool ModelForPointers::setData(const QModelIndex &index, const QVariant &value, int role) { |
//// if (index.column()==3) return false; // â òðåòüåé êîëîíêå íå äàåì ïîìåíÿòü çíà÷åíèå |
bool lResult = false; |
QVariant old_value; // ñîõðàíèì ñòàðîå çíà÷åíèå |
old_value = data(index); |
if (index.column()==1){ // åñëè ïîìåíÿëîñü èìÿ ïîëÿ |
QSqlQuery qu; |
QString old_field_name; // ñòàðîå èìÿ ïîëÿ |
QString new_field_name; // íîâîå èìÿ ïîëÿ |
QString query_str; |
QString type_str; // òèï äàííûõ ïîëÿ |
old_field_name = old_value.toString(); // îïðåäåëèì òåêóùåå (êîòîðîå íóæíî ïîìåíÿòü) èìÿ ïîëÿ |
new_field_name = value.toString(); |
// type_str = data(ModelForPointers::index(index.row(), 3)).toString(); // òèï ïîëÿ õðàíèòüñÿ â 3 ñòîëáöå, ñ÷èòûâàåì åãî çíà÷åíèå |
type_str = tr("CHAR(10)"); |
query_str = tr("ALTER TABLE "); |
query_str.append(ModelForPointers::Inctance); |
query_str.append(tr(" CHANGE COLUMN `")); |
query_str.append(old_field_name); |
query_str.append(tr("` `")); |
query_str.append(new_field_name); |
query_str.append(tr("` ")); |
query_str.append(type_str); |
query_str.append(tr(" CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL")); |
qu.prepare(query_str); |
bool ok; |
ok = qu.exec(); |
if (!ok) return false; |
} |
lResult = QSqlTableModel::setData(index, value, role); |
if (lResult) { |
QModelIndex newindex; |
36,6 → 65,7 |
lResult = updateRowInTable(index.row(), rec); |
emit field_changed(); |
/// QSqlTableModel::setData(newindex, QVariant(str_tmp), Qt::EditRole); |
/trunk/ClassEditor/modelforpointers.h |
---|
20,7 → 20,7 |
bool onlySetData(const QModelIndex &, const QVariant &, int); |
void setInctance(QString currInctatce); // ïåðåäàåì èìÿ òåêóùåé òàáëèöû-õðàíèëèùà |
signals: |
void field_changed(); |
public slots: |
private: |
/trunk/ClassEditor/classeditor.ui |
---|
154,7 → 154,7 |
<rect> |
<x>10</x> |
<y>460</y> |
<width>271</width> |
<width>351</width> |
<height>21</height> |
</rect> |
</property> |
166,7 → 166,7 |
</font> |
</property> |
<property name="text"> |
<string>Указатели на классы-контейнеры</string> |
<string>Поля для указателей на классы-контейнеры</string> |
</property> |
</widget> |
</widget> |
215,6 → 215,12 |
<addaction name="separator"/> |
<addaction name="menu_4"/> |
</widget> |
<widget class="QMenu" name="menu_6"> |
<property name="title"> |
<string>Инструменты</string> |
</property> |
<addaction name="action_2"/> |
</widget> |
<widget class="QMenu" name="menu_5"> |
<property name="title"> |
<string>Указатель</string> |
223,20 → 229,14 |
<property name="title"> |
<string>Удалить указатели</string> |
</property> |
<addaction name="action_6"/> |
<addaction name="action_removeAllPointer"/> |
<addaction name="separator"/> |
<addaction name="action_5"/> |
</widget> |
<addaction name="action"/> |
<addaction name="action_newPointer"/> |
<addaction name="separator"/> |
<addaction name="menu_7"/> |
</widget> |
<widget class="QMenu" name="menu_6"> |
<property name="title"> |
<string>Инструменты</string> |
</property> |
<addaction name="action_2"/> |
</widget> |
<addaction name="menu"/> |
<addaction name="menu_2"/> |
<addaction name="menu_5"/> |
305,7 → 305,7 |
<string>Показывать хранилища объектов</string> |
</property> |
</action> |
<action name="action"> |
<action name="action_newPointer"> |
<property name="text"> |
<string>Новый указатель</string> |
</property> |
320,7 → 320,7 |
<string>Удалить выделенные указатели</string> |
</property> |
</action> |
<action name="action_6"> |
<action name="action_removeAllPointer"> |
<property name="text"> |
<string>Удалить все указатели</string> |
</property> |
/trunk/ClassEditor/classeditor.cpp |
---|
317,7 → 317,12 |
connect(ui->action_removeAllClasses, SIGNAL(triggered()), this, SLOT(on_action_removeAllClasses())); // óäàëèòü âñå êëàññû |
connect(ui->action_newClass, SIGNAL(triggered()), this, SLOT(on_pushButton_clicked())); // äîáàâèòü íîâûé êëàññ |
connect(ui->action_newField, SIGNAL(triggered()), this, SLOT(on_pushButton_3_clicked())); // äîáàâèòü íîâîå ïîëå |
connect(ClassEditor::modelForDescription, SIGNAL(field_changed()), this, SLOT(on_field_changed())); // äîáàâèòü íîâîå ïîëå |
connect(ui->action_newPointer, SIGNAL(triggered()), this, SLOT(on_action_newPointer())); // äîáàâèòü íîâîå ïîëå äëÿ óêàçàòåëåé íà êëàññû-êîíòåéíåðû |
// connect(ui->action_newPointer, SIGNAL(triggered()), this, SLOT(on_pushButton_3_clicked())); // äîáàâèòü íîâîå ïîëå äëÿ óêàçàòåëåé íà êëàññû-êîíòåéíåðû |
connect(modelForDescription, SIGNAL(field_changed()), this, SLOT(on_field_changed())); // â òàáëèöå ïîëåé ïðîèçîøëè èçìåíåíèÿ |
connect(ClassEditor::modelForPointers, SIGNAL(field_changed()), this, SLOT(on_field_changed())); // â òàáëèöå óêàçàòåëåé ïðîèçîøëè èçìåíåíèÿ |
} |
487,13 → 492,56 |
void ClassEditor::addNewPointer(){ //äîáîâëÿåì íîâîå ïîëå, ãäå áóäóò õðàíèòüñÿ óêàçàòåëè íà îáúåêòû êëàññà-êîíòåéíåðà |
QString Inctance_str; // èìÿ òàáëèöû-õðàíèëèùà îáúåêòîâ äëÿ âûáðàííîãî êëàññà |
QString query_str = tr("ALTER TABLE "); |
QString db_error; |
QSqlQuery q; |
int currRow = ClassEditor::currIndexOfClassesTable.row(); // |
Inctance_str = mymodel->data(mymodel->index(currRow, 3)).toString(); |
query_str.append( Inctance_str); |
query_str.append(tr(" ADD COLUMN `Ñlass-container ID` CHAR(30)")); |
bool ok = q.prepare(query_str); |
ok = q.exec(); |
if (!ok) { |
QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
this, // Ðîäèòåëüñêèé âèäæåò. |
QObject::tr("Database Error"), // Çàãîëîâîê. |
q.lastError().text()); // Òåêñò ñîîáùåíèÿ. |
return; // âûõîäèì íå ïðèìåíÿÿ èçìåíåíèé |
} |
int row = ClassEditor::modelForPointers->rowCount(); |
modelForPointers->insertRows(row, 1); |
modelForPointers->onlySetData(modelForPointers->index(row, 1), QVariant(tr("Ñlass-container ID")), Qt::EditRole); |
modelForPointers->onlySetData(modelForPointers->index(row, 3), QVariant(tr("pointer")), Qt::EditRole); |
modelForPointers->onlySetData(modelForPointers->index(row, 5), QVariant(currClassID), Qt::EditRole); |
modelForPointers->onlySetData(modelForPointers->index(row, 4), QVariant(tr("NULL")), Qt::EditRole); |
modelForPointers->submitAll(); |
ClassEditor::refreshInctance(); |
} |
// äîáàâëÿåì íîâûé êëàññ |
void ClassEditor::on_pushButton_clicked(){ |
//int i; |
796,3 → 844,14 |
tableForInstance->show(); |
} |
void ClassEditor::on_action_newPointer(){ |
ClassEditor::addNewPointer(); |
ClassEditor::modelForPointers->select(); |
ui->tableView_3->resizeColumnsToContents(); |
} |