void MagicView::OnFileExport() { DWORD err = 0; char filename[256]; filename[0] = '\0'; CFileDialog ofd(FALSE, "mag"); ofd.m_ofn.lpstrFilter = "All 3D Files\0*.mag; *.obj; *.3ds\0Magic Files (*.mag)\0*.mag\0Wavefront/OBJ Files (*.obj)\0*.obj\0003DS MAX Files (*.3ds)\0*.3ds\0\0"; ofd.m_ofn.lpstrFile = filename; ofd.m_ofn.nMaxFile = sizeof(filename); if (ofd.DoModal() != IDOK) return; char mag_name[256]; sprintf_s(mag_name, "%s", ofd.GetFileName().GetBuffer(0)); MagicDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (pDoc->ExportFile(mag_name)) { pDoc->SetModifiedFlag(FALSE); pDoc->UpdateAllViews(this); } }
void VestigeInstrumentView::openPlugin() { FileDialog ofd( NULL, tr( "Open VST-plugin" ) ); QString dir; if( m_vi->m_pluginDLL != "" ) { dir = QFileInfo( m_vi->m_pluginDLL ).absolutePath(); } else { dir = configManager::inst()->vstDir(); } // change dir to position of previously opened file ofd.setDirectory( dir ); ofd.setFileMode( FileDialog::ExistingFiles ); // set filters QStringList types; types << tr( "DLL-files (*.dll)" ) << tr( "EXE-files (*.exe)" ) ; ofd.setFilters( types ); if( m_vi->m_pluginDLL != "" ) { // select previously opened file ofd.selectFile( QFileInfo( m_vi->m_pluginDLL ).fileName() ); } if ( ofd.exec () == QDialog::Accepted ) { if( ofd.selectedFiles().isEmpty() ) { return; } engine::mixer()->lock(); if (m_vi->p_subWindow != NULL) { delete m_vi->p_subWindow; m_vi->p_subWindow = NULL; } m_vi->loadFile( ofd.selectedFiles()[0] ); engine::mixer()->unlock(); if( m_vi->m_plugin && m_vi->m_plugin->pluginWidget() ) { m_vi->m_plugin->pluginWidget()->setWindowIcon( PLUGIN_NAME::getIconPixmap( "logo" ) ); } } }
void MainWindow::fileOpen() { QFileDialog ofd(this, tr("Open ILDA file"), ""); ofd.setFileMode(QFileDialog::AnyFile); ofd.setFilter(tr("ILDA files (*.ild);;All files (*.*)")); ofd.setViewMode(QFileDialog::Detail); if (ofd.exec()) { QString fileName = ofd.selectedFiles().at(0); QFileInfo fileInfo(fileName); if (fileInfo.exists()) { ReaderWriterILDA reader; _sequence = QSharedPointer<Sequence>(reader.readFile(fileName)); _sequence->setPalette(*_currentPalette); // Fill file statistics fileNameLabel->setText(fileInfo.fileName()); fileSizeLabel->setText(getFileSize(fileInfo.size())); ildaFormatLabel->setText(reader.version()); numberOfFramesLabel->setText(QString::number(_sequence->frameCount())); // Set the current drawing mode (FIXME: Do not query the GUI for such infos) if (normalRadioButton->isChecked()) _sequence->setDrawMode(Sequence::DrawModeNormal); else if (diagnosticRadioButton->isChecked()) _sequence->setDrawMode(Sequence::DrawModeDiagnostic); // Setup frame slider frameSlider->setRange(0, _sequence->frameCount()-1); // Build the connections connect(_sequence.data(), SIGNAL(frameChanged(Frame*)), this, SLOT(frameChanged(Frame*))); connect(firstFrameButton, SIGNAL(clicked()), _sequence.data(), SLOT(gotoFirstFrame())); connect(lastFrameButton, SIGNAL(clicked()), _sequence.data(), SLOT(gotoLastFrame())); connect(stopButton, SIGNAL(clicked()), _sequence.data(), SLOT(stopPlayback())); connect(playButton, SIGNAL(clicked()), _sequence.data(), SLOT(startPlayback())); connect(frameSlider, SIGNAL(valueChanged(int)), _sequence.data(), SLOT(setActiveFrame(int))); connect(normalRadioButton, SIGNAL(clicked()), this, SLOT(drawModeChanged())); connect(diagnosticRadioButton, SIGNAL(clicked()), this, SLOT(drawModeChanged())); QGraphicsScene *scene = new QGraphicsScene(); scene->addItem(_sequence.data()); graphicsView->setScene(scene); // FIXME: Need to call this until a resize event happens. resizeEvent(NULL); }
void sf2InstrumentView::showFileDialog() { sf2Instrument * k = castModel<sf2Instrument>(); FileDialog ofd( NULL, tr( "Open SoundFont file" ) ); ofd.setFileMode( FileDialog::ExistingFiles ); QStringList types; types << tr( "SoundFont2 Files (*.sf2)" ); ofd.setFilters( types ); QString dir; if( k->m_filename != "" ) { QString f = k->m_filename; if( QFileInfo( f ).isRelative() ) { f = configManager::inst()->userSamplesDir() + f; if( QFileInfo( f ).exists() == false ) { f = configManager::inst()->factorySamplesDir() + k->m_filename; } } ofd.setDirectory( QFileInfo( f ).absolutePath() ); ofd.selectFile( QFileInfo( f ).fileName() ); } else { ofd.setDirectory( configManager::inst()->userSamplesDir() ); } m_fileDialogButton->setEnabled( false ); if( ofd.exec() == QDialog::Accepted && !ofd.selectedFiles().isEmpty() ) { QString f = ofd.selectedFiles()[0]; if( f != "" ) { k->openFile( f ); engine::getSong()->setModified(); } } m_fileDialogButton->setEnabled( true ); }
void Song::importProject() { FileDialog ofd( NULL, tr( "Import file" ), ConfigManager::inst()->userProjectsDir(), tr("MIDI sequences") + " (*.mid *.midi *.rmi);;" + tr("Hydrogen projects") + " (*.h2song);;" + tr("All file types") + " (*.*)"); ofd.setFileMode( FileDialog::ExistingFiles ); if( ofd.exec () == QDialog::Accepted && !ofd.selectedFiles().isEmpty() ) { ImportFilter::import( ofd.selectedFiles()[0], this ); } m_loadOnLaunch = false; }
static void OnImageFile(CString& strImageFile) { char filename[512]; filename[0] = '\0'; CFileDialog ofd(TRUE, "pcx"); ofd.m_ofn.lpstrFilter = "PCX Files\0*.pcx\0All Files\0*.*\0\0"; ofd.m_ofn.lpstrFile = filename; ofd.m_ofn.nMaxFile = sizeof(filename); if (ofd.DoModal() != IDOK) return; char tex_name[512]; sprintf(tex_name, "%s", ofd.GetFileName().GetBuffer(0)); strImageFile = tex_name; }
void VstPlugin::openPreset( ) { FileDialog ofd( NULL, tr( "Open Preset" ), "", tr( "Vst Plugin Preset (*.fxp *.fxb)" ) ); ofd.setFileMode( FileDialog::ExistingFiles ); if( ofd.exec () == QDialog::Accepted && !ofd.selectedFiles().isEmpty() ) { lock(); sendMessage( message( IdLoadPresetFile ). addString( QSTR_TO_STDSTR( QDir::toNativeSeparators( ofd.selectedFiles()[0] ) ) ) ); waitForMessage( IdLoadPresetFile, true ); unlock(); } }
static void check_guard(int openfd, int &dirfd, const std::string &exepath) { fdguard infd(0); assert(infd); fdguard ofd(openfd); fdguard rootfd("/"); dirfd = rootfd; assert(ofd.valid()); assert(ofd); assert_cmpnum_op(static_cast<int>(ofd), >, 0); assert_cmpnum(static_cast<int>(ofd), openfd); assert(rootfd.valid()); assert(rootfd); assert_cmpnum_op(static_cast<int>(rootfd), >, 0); assert_cmpnum(static_cast<int>(rootfd), dirfd); rootfd.swap(ofd); assert_cmpnum(static_cast<int>(rootfd), openfd); assert_cmpnum(static_cast<int>(ofd), dirfd); std::string::size_type sl = exepath.rfind('/'); dirguard dg(exepath.substr(0, sl)); assert(dg.valid()); dirguard dg2(dg, exepath.substr(sl + 1).c_str()); assert(dg2.valid()); dirguard dgchar(exepath.substr(0, sl + 1)); assert(dg.valid()); dirguard dgchar2(dgchar, exepath.substr(sl + 1).c_str()); assert(dgchar2.valid()); dirguard dgcopy(dguard(exepath.substr(0, sl + 1), exepath.substr(sl + 1))); assert(dgcopy.valid()); dirent *n = dgcopy.next(); assert(n != nullptr); }
void sf2InstrumentView::showFileDialog() { sf2Instrument * k = castModel<sf2Instrument>(); FileDialog ofd( NULL, tr( "Open SoundFont file" ) ); ofd.setFileMode( FileDialog::ExistingFiles ); QStringList types; types << tr( "SoundFont Files (*.sf2 *.sf3)" ); ofd.setNameFilters( types ); if( k->m_filename != "" ) { QString f = SampleBuffer::tryToMakeAbsolute( k->m_filename ); ofd.setDirectory( QFileInfo( f ).absolutePath() ); ofd.selectFile( QFileInfo( f ).fileName() ); } else { ofd.setDirectory( ConfigManager::inst()->sf2Dir() ); } m_fileDialogButton->setEnabled( false ); if( ofd.exec() == QDialog::Accepted && !ofd.selectedFiles().isEmpty() ) { QString f = ofd.selectedFiles()[0]; if( f != "" ) { k->openFile( f ); Engine::getSong()->setModified(); } } m_fileDialogButton->setEnabled( true ); }
OGRErr OGRGeoconceptLayer::Open( GCSubType* Subclass ) { _gcFeature= Subclass; if( GetSubTypeFeatureDefn_GCIO(_gcFeature) ) { _poFeatureDefn = (OGRFeatureDefn *)GetSubTypeFeatureDefn_GCIO(_gcFeature); _poFeatureDefn->Reference(); } else { char pszln[512]; int n, i; snprintf(pszln, 511, "%s.%s", GetSubTypeName_GCIO(_gcFeature), GetTypeName_GCIO(GetSubTypeType_GCIO(_gcFeature))); pszln[511]='\0'; _poFeatureDefn = new OGRFeatureDefn(pszln); _poFeatureDefn->Reference(); _poFeatureDefn->SetGeomType(wkbUnknown); if( (n= CountSubTypeFields_GCIO(_gcFeature))>0 ) { GCField* aField= NULL; OGRFieldType oft; for( i= 0; i<n; i++ ) { if( (aField= GetSubTypeField_GCIO(_gcFeature,i)) ) { if( IsPrivateField_GCIO(aField) ) continue; switch(GetFieldKind_GCIO(aField)) { case vIntFld_GCIO : case vPositionFld_GCIO : oft= OFTInteger; break; case vRealFld_GCIO : case vLengthFld_GCIO : case vAreaFld_GCIO : oft= OFTReal; break; case vDateFld_GCIO : oft= OFTDate; break; case vTimeFld_GCIO : oft= OFTTime; break; case vMemoFld_GCIO : case vChoiceFld_GCIO : case vInterFld_GCIO : default : oft= OFTString; break; } OGRFieldDefn ofd(GetFieldName_GCIO(aField), oft); _poFeatureDefn->AddFieldDefn(&ofd); } } } SetSubTypeFeatureDefn_GCIO(_gcFeature, (OGRFeatureDefnH) _poFeatureDefn); _poFeatureDefn->Reference(); } return OGRERR_NONE; }
QString SampleBuffer::openAudioFile() const { FileDialog ofd( NULL, tr( "Open audio file" ) ); QString dir; if( !m_audioFile.isEmpty() ) { QString f = m_audioFile; if( QFileInfo( f ).isRelative() ) { f = ConfigManager::inst()->userSamplesDir() + f; if( QFileInfo( f ).exists() == false ) { f = ConfigManager::inst()->factorySamplesDir() + m_audioFile; } } dir = QFileInfo( f ).absolutePath(); } else { dir = ConfigManager::inst()->userSamplesDir(); } // change dir to position of previously opened file ofd.setDirectory( dir ); ofd.setFileMode( FileDialog::ExistingFiles ); // set filters QStringList types; types << tr( "All Audio-Files (*.wav *.ogg *.ds *.flac *.spx *.voc " "*.aif *.aiff *.au *.raw)" ) << tr( "Wave-Files (*.wav)" ) << tr( "OGG-Files (*.ogg)" ) << tr( "DrumSynth-Files (*.ds)" ) << tr( "FLAC-Files (*.flac)" ) << tr( "SPEEX-Files (*.spx)" ) //<< tr( "MP3-Files (*.mp3)" ) //<< tr( "MIDI-Files (*.mid)" ) << tr( "VOC-Files (*.voc)" ) << tr( "AIFF-Files (*.aif *.aiff)" ) << tr( "AU-Files (*.au)" ) << tr( "RAW-Files (*.raw)" ) //<< tr( "MOD-Files (*.mod)" ) ; ofd.setNameFilters( types ); if( !m_audioFile.isEmpty() ) { // select previously opened file ofd.selectFile( QFileInfo( m_audioFile ).fileName() ); } if( ofd.exec () == QDialog::Accepted ) { if( ofd.selectedFiles().isEmpty() ) { return QString::null; } return tryToMakeRelative( ofd.selectedFiles()[0] ); } return QString::null; }
std::pair<int, int> simulacion(int bloques, int bloque_size, int vias, int accesos, int pagina_size) { int paginas_disco, paginas_mem, fallos_pagina, fallos_cache, bits_offset, div_virt, div_fisica; std::cout << "Numero de bloques: " << bloques << std::endl; std::cout << "Tamano de bloque: " << bloque_size << std::endl; std::cout << "Numero de vias: " << vias << std::endl; std::cout << "Numero de accesos: " << accesos << std::endl; std::cout << "Tamanio de pagina: " << pagina_size << std::endl; std::cout << "Inicializando..."; std::random_device rseed; // Para numeros aleatorios std::mt19937 rgen(rseed()); // mersenne_twister std::uniform_int_distribution<int> idist(0, DIR_VIRUTALES - 1); // [0,4095] std::uniform_int_distribution<int> odist(0, 1); // [0,1] std::uniform_int_distribution<int> ddist(0, 255); // [0,255] std::uniform_int_distribution<int> nueva_dist(256, 511); // [0,255] /* ins_virtuales[*][x], x: 0 - direccion, 1 - lectura/escritura, 2 - dato */ std::vector<std::vector<int> > ins_virtuales (accesos, std::vector<int> (3,0)); std::vector<int> memoria (POS_MEMORIA); std::vector<int> disco (POS_DISCO); t_tabla tabla; /* Creamos la cache */ Cache mem_cache (vias, bloques, bloque_size); /* Inicializacion */ paginas_disco = POS_DISCO / pagina_size; paginas_mem = POS_MEMORIA / pagina_size; std::uniform_int_distribution<int> mdist(0, paginas_mem-1); // [0,paginas_memoria] fallos_pagina = 0; fallos_cache = 0; bits_offset = bits_para(pagina_size); div_virt = potencia(bits_offset);// para posterior division div_fisica = potencia(bits_para(bloque_size));// para posterior division std::cout << " Inicializacion terminada!" << std::endl; std::cout << "Paginas Memoria: " << paginas_mem << std::endl; std::cout << "Paginas Disco: " << paginas_disco << std::endl; std::cout << "Generando instrucciones..." << std::endl; /* Generar instrucciones virtuales */ for (int i = 0; i < accesos; ++i) { ins_virtuales[i][0] = idist(rgen); ins_virtuales[i][1] = odist(rgen); ins_virtuales[i][2] = nueva_dist(rgen); } std::cout << " Terminado!" << std::endl; std::cout << "Generando tabla de traduccion..." << std::endl; /* Generamos la tabla de traduccion */ int contador; for (contador = 0; contador < accesos; ++contador) { int tmp = ins_virtuales[contador][0]/div_virt; if(tabla.size() > paginas_mem) break; if(tabla.count(tmp) == 0) { tabla[tmp].push_back(odist(rgen)); /* 1 - memoria principal */ tabla[tmp].push_back(0); /* 1 - dato en disco mem llena */ tabla[tmp].push_back(contador); /* dir fisica */ } } for (; contador < accesos; ++contador) { int tmp = ins_virtuales[contador][0]/div_virt; if(tabla.size() >= (paginas_mem + paginas_disco)) break; if(tabla.count(tmp) == 0) { tabla[tmp].push_back(0); /* 1 - memoria principal */ tabla[tmp].push_back(1); /* 1 - dato en disco mem llena */ tabla[tmp].push_back(contador); /* dir disco */ } } std::cout << " Terminado!" << std::endl; std::cout << " Tamaño tabla: " << tabla.size() << std::endl; /* leemos la memoria y el disco */ std::ifstream inputmem; std::ifstream inputdisc; std::string outmem; std::string outdisc; int valor_io; int contador_io = 0; std::cout << "Leyendo memoria..." << std::endl; inputmem.open("memoria.txt", std::ifstream::in); while(inputmem >> valor_io) { memoria[contador_io] = valor_io; contador_io++; } inputmem.close(); std::cout << " Terminado!" << std::endl; if (contador_io == 0) { std::cout << "Memoria vacia, abortando!" << std::endl; return std::make_pair(0,0); } std::cout << "Leyendo disco..." << std::endl; inputdisc.open("disco.txt", std::ifstream::in); contador_io = 0; while(inputdisc >> valor_io) { disco[contador_io] = valor_io; contador_io++; } inputdisc.close(); std::cout << " Terminado!" << std::endl; if (contador_io == 0) { std::cout << "Disco vacio, abortando!" << std::endl; return std::make_pair(0,0); } std::cout << "Procesando instrucciones..." << std::endl; /* Iteramos en cada instruccion */ int dir_fisica, tmp, tmp2; std::vector<int> movimiento (bloque_size,0); std::vector<int> respuesta_cache; for (int i = 0; i < accesos; ++i) { /* Traducimos direccion virtual a fisica */ dir_fisica = ins_virtuales[i][0]/div_virt; /* No esta en memoria principal? */ if(tabla[dir_fisica][0] == 0) { //std::cout << "Fallo Pagina!" << std::endl; tabla[dir_fisica][0] = 1; fallos_pagina++; // nuevo fallo de pagina tmp2 = tabla[dir_fisica][2]; // direccion disco /* no esta asigana? */ if(tabla[dir_fisica][1] == 1) { tabla[dir_fisica][1] = 0; tmp = mdist(rgen); // nueva asignacion. tabla[dir_fisica][2] = tmp; /* Movemos de disco a memoria */ } else tmp = tmp2; // Si esta asignada disco - memoria concuerdan. tmp = tmp * div_virt; tmp2 = tmp2 * div_virt; for(int j = 0; j < pagina_size; ++j) { memoria[tmp + j] = disco[tmp2 + j]; } } /* El dato ya esta en memoria principal */ /* Extraemos direccion fisica */ dir_fisica = tabla[dir_fisica][2] * div_virt; /* Agregamos el offset */ dir_fisica = dir_fisica + (ins_virtuales[i][0] % div_virt); /* Cargamos los datos que hay en la memoria por si hay un miss en cache */ tmp = dir_fisica - (dir_fisica % div_fisica); // quitamos el offset de un bloque. for (int j = 0; j < bloque_size; ++j) { movimiento[j] = memoria[tmp + j]; } /* Lectura o escritura */ if (ins_virtuales[i][1] == 0) { //std::cout << "Read" << std::endl; respuesta_cache = mem_cache.read_cache(dir_fisica, movimiento); } else { //::cout << "Write" << std::endl; respuesta_cache = mem_cache.write_cache(dir_fisica, movimiento, ins_virtuales[i][2]); } /* Analimamos la respuesta de la cache */ /* no fue un hit? */ if(respuesta_cache[0] != 1) fallos_cache++; /* hay que escribir en memoria, por write-back? */ if (respuesta_cache[1] == 1) { //std::cout << "write-back" << std::endl; tmp = respuesta_cache[2]; // donde, escribir tmp = tmp - (tmp % div_fisica); // quitamos el offset del bloque. for (int j = 0; j < bloque_size; ++j) { memoria[tmp + j] = respuesta_cache[3+j]; } } } std::cout << " Terminado!" << std::endl; std::cout << "Reescribiendo memoria..." << std::endl; /* Excribimos en los archivos */ std::ofstream ofm ("memoria.txt", std::ofstream::out); for (int i = 0; i < POS_MEMORIA; ++i) { ofm << memoria[i] << "\n"; } ofm.close(); std::cout << "Terminado!" << std::endl; std::cout << "Reescribiendo disco..." << std::endl; std::ofstream ofd ("disco.txt", std::ofstream::out); for (int i = 0; i < POS_DISCO; ++i) { ofd << disco[i] << "\n"; } ofd.close(); std::cout << "Terminado!" << std::endl; std::cout << fallos_pagina << " " << fallos_cache << std::endl; return std::make_pair(fallos_pagina, fallos_cache); }