Хранилища Subversion OpenInventory

Сравнить редакции

Не учитывать пробелы Редакция 85 → Редакция 86

/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();
 
}
 
/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: