MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ui->dockWidget_Alphabet->hide(); ui->dockWidget_Language->hide(); //Ej alphabet.setName("Alfabeto1"); alphabet.insert("a"); alphabet.insert("b"); showAlphabet(); Language empty("Lenguaje Vacio",&alphabet); Language l1("Leng 1",&alphabet); l1.insert("aba"); l1.insert("baa"); Language l2("Leng 2",&alphabet); l2.insert("a"); l2.insert("b"); languageList.push_back(empty); languageList.push_back(l1); languageList.push_back(l2); listLanguages(); }
const char *LH_DataViewerConnector::userInit(){ LH_QtInstance::userInit(); hide(); setup_feedback_ = new LH_Qt_QString(this, "Feedback", "", LH_FLAG_READONLY | LH_FLAG_NOSAVE | LH_FLAG_NOSINK | LH_FLAG_NOSOURCE); QStringList langs = listLanguages(); qDebug() << "languages: " << langs.count() << ": " << langs.join(","); setup_language_ = new LH_Qt_QStringList(this,"Language",langs, LH_FLAG_AUTORENDER | LH_FLAG_NOSINK | LH_FLAG_NOSOURCE); setup_language_->setHelp("To add a new language copy the \"[List:<name>]\" blocks from the data map into a new file called lists.XX.txt (where XX is the language code, e.g. Spanish lists would go in a file called lists.ES.txt, French in lists.FR.txt) and translate the text values into the desired language."); setup_language_->setFlag(LH_FLAG_HIDDEN, langs.length()<=1); connect( setup_language_, SIGNAL(changed()), this, SLOT(languageFileChanged()) ); setup_map_file_ = new LH_Qt_QFileInfo(this,"Data Map",QFileInfo(), LH_FLAG_AUTORENDER | LH_FLAG_NOSINK | LH_FLAG_NOSOURCE ); setup_map_file_->setHelp("The data map file contains information needed to understand and parse the data source.<br><br>" "(Unlike text files, XML data sources do not require a map file, although they do support them if advanced data parsing or data-expiriation is required.)"); connect( setup_map_file_, SIGNAL(changed()), this, SLOT(mapFileChanged()) ); setup_data_file_ = new LH_Qt_QFileInfo(this,"Data Source",QFileInfo(), LH_FLAG_AUTORENDER | LH_FLAG_NOSINK | LH_FLAG_NOSOURCE ); setup_data_file_ ->setHelp("The data source. Only XML data sources can be understood without a data map. If the datamap specifies \"MEM\" as the type then no source file is required."); connect( setup_data_file_, SIGNAL(changed()), this, SLOT(sourceFileChanged()) ); sourceWatcher_ = new QFileSystemWatcher(this); connect( sourceWatcher_, SIGNAL(fileChanged(const QString)), this, SLOT(sourceFileUpdated(const QString)) ); rootNode = new dataNode(); sharedData = new sharedCollection(); connect( this, SIGNAL(initialized()), this, SLOT(sourceFileUpdated()) ); return NULL; }
void MainWindow::createLanguage(){ Language language(ui->languageName->text(),&alphabet); QString words = ui->words->toPlainText(); words.trimmed(); QStringList wordsList=words.split(','); for(int i=0;i<wordsList.count();i++) language.insert(wordsList.at(i)); this->languageList.push_back(language); listLanguages(); ui->languageList->setCurrentIndex(ui->languageList->count()-1); ui->dockWidget_Language->hide(); }
void MainWindow::openLanguage(){ if(!alphabet.empty()){ QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "", tr("Text Files (*.txt)")); if (fileName != "") { QFile file(fileName); if (!file.open(QIODevice::ReadOnly)) { QMessageBox::critical(this, tr("Error"), tr("No se pudo abrir el archivo.")); return; } if(!file.atEnd()){ Language language(QString(file.readLine()).trimmed(),&alphabet); language.setPath(fileName.trimmed()); QString words = file.readLine(); QString _lambda(QChar(955)); QString first=words.at(0); if(first==",") words.prepend(_lambda); QStringList wordsList=words.split(','); for(int i=0;i<wordsList.count();i++){ language.insert(wordsList.at(i)); //qDebug()<<"palabra"; //qDebug()<<wordsList.at(i); } this->languageList.push_back(language); //qDebug()<<this->languageList.at(languageList.count()-1); }else QMessageBox::critical(this, tr("Error"), tr("Archivo Vacio.")); file.close(); listLanguages(); ui->languageList->setCurrentIndex(ui->languageList->count()-1); } }else QMessageBox::critical(this, tr("Error"), tr("Debe haber un alfabeto cargado.")); }
void MainWindow::createAlphabet(){ QString simbols; QStringList simbolsList; this->alphabet.setName(ui->AlphabetName->text()); simbols=ui->simbols->toPlainText(); simbols.trimmed(); simbolsList=simbols.split(','); for(int i=0;i<simbolsList.count();i++){ if(!((simbolsList.at(i)>="a"&&simbolsList.at(i)<="z"))){ simbolsList.removeAt(i); } } if(!simbolsList.isEmpty()){ alphabet.clear(); for(int i=0;i<simbolsList.count();i++){ alphabet.insert(simbolsList.at(i)); } showAlphabet(); ui->dockWidget_Alphabet->hide(); //Revalidar palabras para el nuevo alfabeto for(int i=0;i<languageList.count();i++){ Language l=languageList.takeAt(i); l.revalidateWords(); languageList.insert(i,l); } int index=ui->languageList->currentIndex(); listLanguages(); ui->languageList->setCurrentIndex(index); }else{ QMessageBox::critical(this, tr("Error"), tr("El alfabeto debe tener al menos un simbolo.")); } }