//------------------------------------------------------------------------------------------- void ActionToolbar::dragEnterEvent(QDragEnterEvent *evt) { // Get the filenames QStringList filenames = getFilenames(evt->mimeData()); // Don't accept empty drags if(filenames.empty()) { evt->ignore(); return; } bool ignore_event = true; // Accept when only directories and zip-files are being dragged for(int i = 0; i < filenames.size(); ++i) { QFileInfo file(filenames.at(i)); QString extension = file.suffix().toLower(); if(extension == "as") { ignore_event = false; } } if(ignore_event) evt->ignore(); else evt->accept(); }
//------------------------------------------------------------------------------------------- void ActionToolbar::dropEvent(QDropEvent *evt) { // Get the filenames QStringList filenames = getFilenames(evt->mimeData()); // Don't accept empty drags if(filenames.empty()) { evt->ignore(); return; } bool ignore_event = true; // Accept when only directories and zip-files are being dragged for(int i = 0; i < filenames.size(); ++i) { QFileInfo file(filenames.at(i)); QString extension = file.suffix().toLower(); if(extension == "as") { ignore_event = false; mOgitorMainWindow->_addScriptAction(":/icons/toolbar.svg", filenames.at(i)); } } if(ignore_event) evt->ignore(); else { mOgitorMainWindow->_saveScriptActions(); evt->accept(); } }
void ArchPluginWindows::load() { String dir = getPluginsDir(); LOG((CLOG_DEBUG "plugins dir: %s", dir.c_str())); String pattern = String(dir).append("\\*.dll"); std::vector<String> plugins; getFilenames(pattern, plugins); std::vector<String>::iterator it; for (it = plugins.begin(); it != plugins.end(); ++it) { LOG((CLOG_DEBUG "loading plugin: %s", (*it).c_str())); String path = String(dir).append("\\").append(*it); HINSTANCE library = LoadLibrary(path.c_str()); if (library == NULL) { String error = XArchEvalWindows().eval(); LOG((CLOG_ERR "failed to load plugin '%s', error: %s", (*it).c_str(), error.c_str())); continue; } void* lib = reinterpret_cast<void*>(library); String filename = synergy::string::removeFileExt(*it); m_pluginTable.insert(std::make_pair(filename, lib)); const char * version = (char*)invoke( filename.c_str(),"version",NULL); if (version == NULL) { version = kPre174Plugin; } LOG((CLOG_DEBUG "loaded plugin: %s (%s)", (*it).c_str(),version)); } }
//------------------------------------------------------------------------------------ void FileListWidget::dragEnterEvent(QDragEnterEvent *evt) { QWidget *source = evt->source(); // Get the filenames QStringList filenames = getFilenames(evt->mimeData()); // Don't accept empty drags if(filenames.empty() || mOfsMainWindow->isBusy()) { evt->ignore(); return; } if(!mOfsMainWindow->actClose->isEnabled()) { QFileInfo file(filenames.at(0)); QString extension = file.suffix().toLower(); if(!file.isDir() && extension == "ofs") evt->accept(); } else evt->accept(); }
void ArchPluginWindows::load() { String dir = getPluginsDir(); LOG((CLOG_DEBUG "plugins dir: %s", dir.c_str())); String pattern = String(dir).append("\\*.dll"); std::vector<String> plugins; getFilenames(pattern, plugins); std::vector<String>::iterator it; for (it = plugins.begin(); it != plugins.end(); ++it) { LOG((CLOG_DEBUG "loading plugin: %s", (*it).c_str())); String path = String(dir).append("\\").append(*it); HINSTANCE library = LoadLibrary(path.c_str()); if (library == NULL) { LOG((CLOG_ERR "failed to load plugin: %s %d", (*it).c_str(), GetLastError())); throw XArch(new XArchEvalWindows); } void* lib = reinterpret_cast<void*>(library); String filename = synergy::string::removeFileExt(*it); m_pluginTable.insert(std::make_pair(filename, lib)); LOG((CLOG_DEBUG "loaded plugin: %s", (*it).c_str())); } }
static void getFilenames(char *dirName, int *arraySize) { DIR *dirp, *dirp2; struct dirent *dfile; char filename[MAX_FILE_LENGTH]; char **ptr; dirp = opendir(dirName); while ((dfile = readdir(dirp))) { if (dfile->d_name[0] == '.') { continue; } sprintf(filename, "%s/%s", dirName, dfile->d_name); dirp2 = opendir(filename); if (dirp2) { closedir(dirp2); getFilenames(filename, arraySize); } else { filenames[totalFiles] = malloc(MAX_FILE_LENGTH); STRNCPY(filenames[totalFiles], filename, MAX_FILE_LENGTH); totalFiles++; if (totalFiles == *arraySize) { *arraySize += 500; ptr = realloc(filenames, *arraySize * sizeof(char *)); if (ptr) { filenames = ptr; } else { printf("Failed to allocate %d bytes whilst indexing files\n", *arraySize * (int)sizeof(char *)); exit(1); } } } } closedir(dirp); }
void CArchPluginWindows::init(void* eventTarget) { m_eventTarget = eventTarget; CString dir = getPluginsDir(); LOG((CLOG_DEBUG "plugins dir: %s", dir.c_str())); CString pattern = CString(dir).append("\\*.dll"); std::vector<CString> plugins; getFilenames(pattern, plugins); std::vector<CString>::iterator it; for (it = plugins.begin(); it != plugins.end(); ++it) load(*it); }
void ConfigurationManager::loadConfiguration (iConfiguration* conf, const List<std::string>& paths) throw (BadConfigurationException) { try { List<std::string>::const_iterator path; for (path = paths.begin(); path != paths.end(); path++) { iParamFactory* param_factory; iParam* param = NULL; List<std::string> fnames = getFilenames(*path); List<std::string>::iterator filename; for (filename = fnames.begin(); filename != fnames.end(); filename++) { param_factory = iParamFactory::makeParamFactory(*filename); std::ifstream conf_stream((*path + *filename).c_str()); if (!conf_stream) THROW(BadConfigurationException, std::string("Bad conf filename: ") + (*path + *filename).c_str()); while ( !conf_stream.eof() ) { std::string buffer_line; getline (conf_stream, buffer_line); if (buffer_line.empty() && !conf_stream.eof()) continue; param = param_factory->makeParam(buffer_line); if (param != NULL) { param->fill(conf); delete param; } param = NULL; } } } } catch (const std::exception& ex) { throw BadConfigurationException(ex.what()); } }
//------------------------------------------------------------------------------------------- void FileListWidget::dropEvent(QDropEvent *evt) { QWidget *source = evt->source(); // Get the dropped filenames QStringList filenames = getFilenames(evt->mimeData()); if(filenames.empty()) evt->ignore(); if(!mOfsMainWindow->actClose->isEnabled()) { QFileInfo file(filenames.at(0)); QString extension = file.suffix().toLower(); if(!file.isDir() && extension == "ofs") { mOfsMainWindow->openOfsFile(file.absoluteFilePath()); return; } else { evt->ignore(); return; } } #if !defined( __WIN32__ ) && !defined( _WIN32 ) QString msg = "Following files/folders dropped : "; for(int i = 0;i < filenames.size();i++) { msg += filenames.at(i) + QString(";"); } QMessageBox::information(QApplication::activeWindow(),"LINUX DEBUG OUTPUT :", msg, QMessageBox::Ok); #endif mOfsMainWindow->addFiles(filenames); }
int saisieAppuisInitQT_main(QApplication &app, int argc, char *argv[]) { app.setApplicationName("SaisieAppuisInitQT"); app.setOrganizationName("Culture3D"); QStringList cmdline_args = QCoreApplication::arguments(); if (cmdline_args.back().contains("help")) { QString help = "Mandatory unnamed args :\n" "* string :: {Full name (Dir+Pattern)}\n" "* string :: {Orientation ; NONE if not used}\n" "* string :: {Point name, or point file name}\n" "* string :: {Output}\n\n" "Named args :\n" "* [Name=SzW] Pt2di :: {Sz of window}\n" "* [Name=NbF] Pt2di :: {Nb of sub window}\n" "* [Name=NameAuto] string :: {Prefix for automatic point creation}\n" //"* [Name=Pref2Add] string :: {Prefix to add during import (for bug correction ?)}\n" "* [Name=ForceGray] bool :: {Force gray image, def=false}\n" "* [Name=OriMode] string :: {Orientation type (GRID) (Def=Std)}\n" "* [Name=ZMoy] REAL :: {Average Z, Mandatory in PB}\n" "* [Name=ZInc] REAL :: {Incertitude on Z, Mandatory in PB}\n\n" "Example:\nmm3d " + app.applicationName() + " IMG_558{0-9}[1].tif RadialBasic 100 measures.xml\n\n" "NB: visual interface for argument edition available with command:\n\n mm3d v" + app.applicationName() + "\n\n"; return helpMessage(app, help); } loadTranslation(app); QSettings settings(QApplication::organizationName(), QApplication::applicationName()); if ((argc>0)&&(string(argv[0]).find("SaisieQT")!= string::npos)) { argv++; argc--; } Pt2di aSzWin(800,800); Pt2di aNbFen(-1,-1); string aFullName, aDir, aName, aNamePt, aNameOut; //mandatory arguments string aNameOri, aModeOri, aNameAuto, aPrefix2Add; //named args aPrefix2Add = ""; bool aForceGray = false; settings.beginGroup("Misc"); aNameAuto = settings.value("defPtName", QString("100")).toString().toStdString(); settings.endGroup(); settings.beginGroup("Drawing settings"); aForceGray = settings.value("forceGray", false ).toBool(); settings.endGroup(); double aZInc, aZMoy; if (argv[0][0] == 'v') { MMVisualMode = true; argv[0] = (char*) "SaisieAppuisInitQT"; } std::string aInputSec; SaisieAppuisInit(argc, argv, aSzWin, aNbFen, aFullName, aDir, aName, aNamePt, aNameOri, aModeOri, aNameOut, aNameAuto, aPrefix2Add, aForceGray, aZMoy, aZInc,aInputSec); if (!MMVisualMode) { if (!checkNamePt( QString (aNamePt.c_str()))) return -1; QStringList filenames = getFilenames(aDir, aName); int aNbW = aNbFen.x * aNbFen.y; if (filenames.size() < aNbW) { aNbW = filenames.size(); cVirtualInterface::ComputeNbFen(aNbFen, aNbW); } updateSettings(settings, aSzWin,aNbFen, aForceGray); settings.beginGroup("Misc"); settings.setValue("defPtName", QString(aNameAuto.c_str())); settings.endGroup(); QStringList input; input << QString(MMDir().c_str()) + QString("bin/SaisiePts") << QString(MMDir().c_str()) + QString("include/XML_MicMac/SaisieInitiale.xml") << QString("DirectoryChantier=") + QString(aDir.c_str()) << QString("+Image=") + QString(aName.c_str()) << QString("+Ori=") + QString(aNameOri.c_str()) << QString("+NamePt=") + QString(aNamePt.c_str()) << QString("+NameAuto=") + QString(aNameAuto.c_str()) << QString("+Sauv=") + QString(aNameOut.c_str()) << QString("+SzWx=") + QString::number(aSzWin.x) << QString("+SzWy=") + QString::number(aSzWin.y) << QString("+NbFx=") + QString::number(aNbFen.x) << QString("+NbFy=") + QString::number(aNbFen.y); if (aModeOri == "GRID") { input << QString("+ModeOriIm=eGeomImageGrille") << QString("+Conik=false") << QString("+ZIncIsProp=false") //<< QString(+PostFixOri=GRIBin") << QString("+Px1Inc=") + QString::number(aZInc) << QString("+Px1Moy=") + QString::number(aZMoy); //<< QString("+Geom=eGeomMNTFaisceauIm1ZTerrain_Px1D"); } if (EAMIsInit(&aForceGray)) input << QString("+ForceGray=") + QString(((string)(ToString(aForceGray))).c_str()); if (EAMIsInit(&aPrefix2Add)) input << QString("+Pref2Add=") + QString(aPrefix2Add.c_str()); char **output; // Copy input to output output = new char*[input.size() + 1]; for (int i = 0; i < input.size(); i++) { output[i] = new char[strlen(input.at(i).toStdString().c_str())+1]; memcpy(output[i], input.at(i).toStdString().c_str(), strlen(input.at(i).toStdString().c_str())+1); } output[input.size()] = ((char*)NULL); cResultSubstAndStdGetFile<cParamSaisiePts> aP2( input.size()-2,output+2, output[1], StdGetFileXMLSpec("ParamSaisiePts.xml"), "ParamSaisiePts", "ParamSaisiePts", "DirectoryChantier", "FileChantierNameDescripteur" ); cAppli_SaisiePts anAppli (aP2,false); SaisieQtWindow w(POINT2D_INIT); new cQT_Interface(anAppli,&w); w.show(); w.addFiles(filenames, false); return app.exec(); } else return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { int i, arraySize; int32_t length; char versionName[5]; FILE *versionFile; if (argc == 3) { if (strcmpignorecase(argv[1], "-test") == 0) { testPak(argv[2]); exit(0); } } else if (argc < 3) { printf("Usage : pak <directory names> <outputname>\n"); printf("Example : pak data music gfx sound font edgar.pak\n"); exit(1); } atexit(cleanup); pak = fopen(argv[argc - 1], "wb"); arraySize = 1000; filenames = malloc(arraySize * sizeof(char *)); for (i=1;i<argc-1;i++) { getFilenames(argv[i], &arraySize); } qsort(filenames, totalFiles, sizeof(char *), compare); totalFiles++; printf("Will compress %d files\n", totalFiles); printf("Compressing 00%%...\r"); fileData = malloc(totalFiles * sizeof(FileData)); if (fileData == NULL) { printf("Failed to create File Data\n"); exit(1); } snprintf(versionName, sizeof(versionName), "%0.2f", VERSION); versionFile = fopen(versionName, "wb"); fprintf(versionFile, "%s", versionName); fclose(versionFile); for (i=0;i<totalFiles-1;i++) { compressFile(filenames[i]); } compressFile(versionName); remove(versionName); length = ftell(pak); for (i=0;i<totalFiles;i++) { if (fileData[i].fileSize == 0) { break; } fileData[i].offset = SWAP32(fileData[i].offset); fileData[i].compressedSize = SWAP32(fileData[i].compressedSize); fileData[i].fileSize = SWAP32(fileData[i].fileSize); fwrite(&fileData[i], sizeof(FileData), 1, pak); } length = SWAP32(length); totalFiles = SWAP32(totalFiles); fwrite(&length, sizeof(int32_t), 1, pak); fwrite(&totalFiles, sizeof(int32_t), 1, pak); fclose(pak); printf("Compressing 100%%\nCompleted\n"); return 0; }