void docengine::documentChanged(QString fileName) { removeDocument(fileName); QTabWidgetqq *tabWidget = MainWindow::instance()->container->focusQTabWidgetqq(); int x = isDocumentOpen(fileName); //Don't bother continuing if we can't find the document in one of the open tabs.... though this should never happen if(x == -1) { removeDocument(fileName); return; } QFile file(fileName); bool fileExisted = file.exists(); QMessageBox msgBox; msgBox.setWindowTitle(MainWindow::instance()->windowTitle()); msgBox.setIcon(QMessageBox::Critical); if(fileExisted) { msgBox.setText(tr("The file \"%1\" has been changed outside of the editor. Would you like to reload it?").arg(fileName)); }else { msgBox.setText(tr("The file \"%1\" has been removed from the file system. Would you like to save it now?").arg(fileName)); } msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No | QMessageBox::Close); msgBox.setDefaultButton(QMessageBox::Yes); int ret = msgBox.exec(); if(ret == QMessageBox::No) { return; }else if(ret == QMessageBox::Close) { if(x != -1) { MainWindow::instance()->kindlyTabClose(tabWidget->QSciScintillaqqAt(x)); } return; } //If the file exists, we try to reload it, otherwise save it back to disk. if(fileExisted) { loadDocuments(QStringList(fileName),MainWindow::instance()->container->focusQTabWidgetqq(),true); }else { saveDocument(tabWidget->QSciScintillaqqAt(x),fileName); } addDocument(fileName); }
void sTreeWidget::loadTree(XMLProc *xml,int mdc){ p_xml = xml; if (mdc == mdc_metadata){ // Загрузка метаданных md = p_xml->find(mdc_metadata); if (!md.isNull()){ // Справочники p_xItem = p_xml->find(md,md_spravochniki,0); if(p_xItem.isNull()){ p_xml->insert(md,md_spravochniki,QString::null,-1); } sTreeWidgetItem *el = new sTreeWidgetItem(QObject::tr("Справочники"),p_xItem); addTopLevelItem(el); loadSpravichniki(p_xItem,el); // Документы p_xItem = p_xml->find(md,md_documents,0); if(p_xItem.isNull()){ p_xml->insert(md,md_documents,QString::null,-1); p_xItem = p_xml->find(md,md_documents,0); } sTreeWidgetItem *docs = new sTreeWidgetItem(QObject::tr("Документы"),p_xItem); addTopLevelItem(docs); loadDocuments(p_xItem,docs); //Регистры p_xItem = p_xml->find(md,md_registers,0); if(p_xItem.isNull()){ p_xml->insert(md,md_registers,QString::null,-1); p_xItem = p_xml->find(md,md_registers,0); } addTopLevelItem(new sTreeWidgetItem(QObject::tr("Регистры"),p_xItem)); } } if (mdc == mdc_interface){ // Загрузка дерева интерфейса iface = p_xml->find(mdc_interface); if (!iface.isNull()){ QString name, type, title, image; xmlItem ifTabs = p_xml->findChild(iface,md_tabs); xmlItem tabItem; // обходим разделы tabs while (!ifTabs.isNull()){ sTreeWidgetItem *grIface = new sTreeWidgetItem(QObject::tr("Разделы меню"),ifTabs); addTopLevelItem(grIface); tabItem = p_xml->find(ifTabs,md_tab); // обходим все вкладки (tab) while(!tabItem.isNull()){ name = p_xml->attr(tabItem,mda_name); type = p_xml->attr(tabItem,mda_type); title = p_xml->attr(tabItem,mda_title); image = p_xml->attr(tabItem,mda_image); sTreeWidgetItem *tab = new sTreeWidgetItem(title,ifTabs); grIface->addChild(tab); // Группы меню xmlItem lMenu = p_xml->findChild(tabItem,md_left_menu); xmlItem grMenu= p_xml->findChild(lMenu,md_group); while (!grMenu.isNull()){ title = p_xml->attr(grMenu,mda_title); sTreeWidgetItem *grM = new sTreeWidgetItem(title,grMenu); tab->addChild(grM); grMenu = p_xml->nextSibling(grMenu); } tabItem = p_xml->nextSibling(tabItem); } ifTabs = p_xml->nextSibling(ifTabs); } } } }