cbProject* ProjectManager::NewProject(const wxString& filename) { if (!filename.IsEmpty() && wxFileExists(filename)) { if (cbMessageBox(_("Project file already exists.\nAre you really sure you want to OVERWRITE it?"), _("Confirmation"), wxYES_NO | wxICON_QUESTION) == wxID_YES) { if (!wxRemoveFile(filename)) { cbMessageBox(_("Couldn't remove the old project file to create the new one.\nThe file might be read-only?!"), _("Error"), wxICON_WARNING); return nullptr; } } else return nullptr; } cbProject* prj = IsOpen(filename); if (!prj && BeginLoadingProject()) { prj = new cbProject(filename); EndLoadingProject(prj); SetProject(prj, !m_IsLoadingWorkspace); } return prj; }
bool ProjectManager::CloseActiveProject(bool dontsave) { if (!CloseProject(m_pActiveProject, dontsave)) return false; if (m_pProjects->GetCount() > 0) SetProject(m_pProjects->Item(0)); return true; }
void MainWindow::on_actionNew_triggered() { QString filename = QFileDialog::getOpenFileName(this, tr("Open File"), QDir::currentPath(), tr("Images (*.png *.jpg)")); Project* project = new Project(); project->SetImage(filename); SetProject(project); }
bool ProjectManager::CloseProject(cbProject* project, bool dontsave, bool refresh) { if (!project) return true; if (project->GetCurrentlyCompilingTarget()) return false; if (!dontsave) { if (!m_ui->QueryCloseProject(project)) return false; } bool wasActive = project == m_pActiveProject; if (wasActive) m_pActiveProject = nullptr; int index = m_pProjects->Index(project); if (index == wxNOT_FOUND) return false; // CloseProject is also called by CloseAllProjects, so we need to save // the state of m_IsClosingProject. bool isClosingOtherProjects = m_IsClosingProject; m_IsClosingProject = true; Manager::Get()->GetEditorManager()->UpdateProjectFiles(project); project->SaveLayout(); if (m_pWorkspace) m_pWorkspace->SetModified(true); RemoveProjectFromAllDependencies(project); m_pProjects->Remove(project); // moved here from cbProject's destructor, because by then // the list of project files was already emptied... CodeBlocksEvent event(cbEVT_PROJECT_CLOSE); event.SetProject(project); Manager::Get()->GetPluginManager()->NotifyPlugins(event); project->CloseAllFiles(true); if (refresh) m_ui->RemoveProject(project); if (wasActive && m_pProjects->GetCount()) SetProject(m_pProjects->Item(0), refresh); delete project; if (!m_InitialDir.IsEmpty()) // Restore the working directory wxFileName::SetCwd(m_InitialDir); m_IsClosingProject = isClosingOtherProjects; WorkspaceChanged(); return true; }
void MainWindow::Openfile(QString filename) { QFile file(filename); file.open(QIODevice::ReadOnly); QDataStream data(&file); Project* project = new Project(); data >> *project; file.close(); project->filename = filename; SetProject(project); }
void CommandHandler::OnReceiveCommand(AppCommandEvent &event) { // First retrieve the actual command from the event 'envelope'. CommandHolder cmd = event.GetCommand(); // JKC: In case the user changed the project, let us track that. // This saves us the embarrassment (crash) of a NEW project // being opened, the old one closed and still trying to act // on the old one. SetProject( GetActiveProject() ); // Then apply it to current application & project. Note that the // command may change the context - for example, switching to a // different project. cmd->Apply(*mCurrentContext); // Redraw the project mCurrentContext->GetProject()->RedrawProject(); }
void Employee::SetInfo(){ string a, b, d, e, n, p; cout << "Enter name: "; cin >> n; SetName(n); cout << "Enter address: "; cin >> a; SetAddress(a); cout << "Enter EGN: "; cin >> e; SetEGN(e); cout << "Enter date of start: "; cin >> d; SetDateOfStart(d); cout << "Enter boss: "; cin >> b; SetBoss(b); cout << "Enter project: "; cin >> p; SetProject(p); }
bool ProjectManager::LoadWorkspace(const wxString& filename) { if ( !BeginLoadingWorkspace() ) return false; m_pWorkspace = new cbWorkspace(filename); EndLoadingWorkspace(); if (m_pProjects->GetCount() > 0 && !m_pActiveProject) SetProject(m_pProjects->Item(0), false); if ( m_pWorkspace && m_pWorkspace->IsOK() ) { // Fire-up event here, where we're sure there's an active project CodeBlocksEvent event(cbEVT_WORKSPACE_LOADING_COMPLETE); Manager::Get()->GetPluginManager()->NotifyPlugins(event); return true; } return false; }
ProjectTreeView::ProjectTreeView(object& document) : ProjectTreeView() { SetProject(document); }
cbProject* ProjectManager::LoadProject(const wxString& filename, bool activateIt) { cbProject* result = nullptr; if (!wxFileExists(filename) || !BeginLoadingProject()) { return nullptr; } // "Try" block (loop which only gets executed once) // These blocks are extremely useful in constructs that need // premature exits. Instead of having multiple return points, // multiple return values and/or gotos, // you just break out of the loop (which only gets executed once) to exit. do { cbProject* project = IsOpen(filename); if (project) { // already open result = project; break; } if (FileTypeOf(filename) == ftCodeBlocksProject) { project = new cbProject(filename); // We need to do this because creating cbProject allows the app to be // closed in the middle of the operation. So the class destructor gets // called in the middle of a method call. if (!project->IsLoaded()) { delete project; break; } result = project; } else // !ftCodeBlocksProject { // the plugin handler should call begin/end on its own... EndLoadingProject(nullptr); cbMimePlugin* plugin = Manager::Get()->GetPluginManager()->GetMIMEHandlerForFile(filename); if (plugin) plugin->OpenFile(filename); } break; } while (false); // we 're done EndLoadingProject(result); if (activateIt) { if (m_IsLoadingWorkspace) // postpone the call to SetProject() until EndLoadingWorkspace() is called // (we must call RebuildTree() before SetProject() is called) m_pProjectToActivate = result; else SetProject(result, true); } return result; }
void ProjectManager::EndLoadingWorkspace() { if (!m_IsLoadingWorkspace) return; m_IsLoadingWorkspace = false; if (!m_pWorkspace) return; if (m_pWorkspace->IsOK()) { if (m_pProjectToActivate) { SetProject(m_pProjectToActivate, true); m_pProjectToActivate = nullptr; } m_ui->FinishLoadingWorkspace(m_pActiveProject, m_pWorkspace->GetTitle()); // sort out any global user vars that need to be defined now (in a batch) :) Manager::Get()->GetUserVariableManager()->Arrogate(); int numNotes = 0; // and now send the project loaded events // since we were loading a workspace, these events were not sent before for (size_t i = 0; i < m_pProjects->GetCount(); ++i) { cbProject* project = m_pProjects->Item(i); // notify plugins that the project is loaded // moved here from cbProject::Open() because code-completion // kicks in too early and the perceived loading time is long... CodeBlocksEvent event(cbEVT_PROJECT_OPEN); event.SetProject(project); Manager::Get()->GetPluginManager()->NotifyPlugins(event); // since we 're iterating anyway, let's count the project notes that should be displayed if (project->GetShowNotesOnLoad() && !project->GetNotes().IsEmpty()) ++numNotes; } // finally, display projects notes (if appropriate) if (numNotes) { if (numNotes == 1 || // if only one project has notes, don't bother asking cbMessageBox(wxString::Format(_("%d projects contain notes that should be displayed on-load.\n" "Do you want to display them now, one after the other?"), numNotes), _("Display project notes?"), wxICON_QUESTION | wxYES_NO) == wxID_YES) { for (size_t i = 0; i < m_pProjects->GetCount(); ++i) { cbProject* project = m_pProjects->Item(i); if (project->GetShowNotesOnLoad()) project->ShowNotes(true); } } } WorkspaceChanged(); } else CloseWorkspace(); }
void CProjectDoc::OnFileSaveAs() { CDocument::OnFileSaveAs(); SetProject(); theApp.m_pProjectMRUList->Add(GetPathName()); }
void CProjectDoc::OnFileSave() { CDocument::OnFileSave(); SetProject(); }
FindWindow::FindWindow(BString workingDir) : DWindow(BRect(100,100,600,500), B_TRANSLATE("Find in project"), B_TITLED_WINDOW, B_CLOSE_ON_ESCAPE), fIsRegEx(false), fIgnoreCase(true), fMatchWord(false), fThreadID(-1), fThreadMode(0), fThreadQuitFlag(0), fFileList(20, true), fWorkingDir(""), fProject(NULL) { SetSizeLimits(650, 30000, 400, 30000); MakeCenteredOnShow(true); fMenuBar = new BMenuBar("menubar"); fFindButton = new BButton("findbutton", B_TRANSLATE("Replace all"), new BMessage(M_FIND)); fFindButton->SetLabel(B_TRANSLATE("Find")); fFindButton->SetEnabled(false); fFindBox = new DTextView("findbox"); fFindBox->SetFlags(fFindBox->Flags() | B_NAVIGABLE_JUMP); BScrollView *findBoxScroll = fFindBox->MakeScrollView("findscroll", true, true); fReplaceBox = new DTextView("replacebox"); fReplaceBox->SetFlags(fFindBox->Flags() | B_NAVIGABLE_JUMP); BScrollView *replaceBoxScroll = fReplaceBox->MakeScrollView("replacescroll", true, true); BGroupLayout* hGroup = new BGroupLayout(B_HORIZONTAL,0); BView* hView = new BView("hview",0,hGroup); fReplaceButton = new BButton("replacebutton", B_TRANSLATE("Replace"), new BMessage(M_REPLACE)); fReplaceButton->SetEnabled(false); //hGroup->AddView(fReplaceButton); // hidden until we decide we need an individual replace in a multi // file dialog box (doubtful - could click on file and do it from // within pe) fReplaceAllButton = new BButton("replaceallbutton", B_TRANSLATE("Replace all"), new BMessage(M_REPLACE_ALL)); fReplaceAllButton->SetEnabled(false); hGroup->AddView(fReplaceAllButton); BStringView *resultLabel = new BStringView("resultlabel", B_TRANSLATE("Results:")); fResultList = new DListView("resultlist", B_MULTIPLE_SELECTION_LIST); BScrollView* resultsScroll = fResultList->MakeScrollView("resultscroll", true, true); resultsScroll->SetExplicitMinSize(BSize(650,150)); fResultList->SetInvocationMessage(new BMessage(M_SHOW_RESULT)); BLayoutBuilder::Group<>(this, B_VERTICAL) .Add(fMenuBar) .Add(findBoxScroll) .Add(fFindButton) .Add(replaceBoxScroll) .Add(hView) .Add(resultLabel) .Add(resultsScroll) .End(); BMenu *menu = new BMenu(B_TRANSLATE("Search")); menu->AddItem(new BMenuItem(B_TRANSLATE("Find"), new BMessage(M_FIND), 'F', B_COMMAND_KEY)); menu->AddSeparatorItem(); menu->AddItem(new BMenuItem(B_TRANSLATE("Replace"), new BMessage(M_REPLACE), 'R', B_COMMAND_KEY)); menu->AddItem(new BMenuItem(B_TRANSLATE("Replace all"), new BMessage(M_REPLACE_ALL), 'R', B_COMMAND_KEY | B_SHIFT_KEY)); fMenuBar->AddItem(menu); menu = new BMenu(B_TRANSLATE("Options")); menu->AddItem(new BMenuItem(B_TRANSLATE("Regular expression"), new BMessage(M_TOGGLE_REGEX))); menu->AddItem(new BMenuItem(B_TRANSLATE("Ignore case"), new BMessage(M_TOGGLE_CASE_INSENSITIVE))); menu->AddItem(new BMenuItem(B_TRANSLATE("Match whole word"), new BMessage(M_TOGGLE_MATCH_WORD))); fMenuBar->AddItem(menu); BMenuItem *item = fMenuBar->FindItem(B_TRANSLATE("Ignore case")); if (fIgnoreCase) item->SetMarked(true); menu = new BMenu(B_TRANSLATE("Project")); menu->SetRadioMode(true); gProjectList->Lock(); for (int32 i = 0; i < gProjectList->CountItems(); i++) { Project *proj = gProjectList->ItemAt(i); BMessage *msg = new BMessage(M_SET_PROJECT); msg->AddPointer("project", proj); BMenuItem *projItem = new BMenuItem(proj->GetName(), msg); menu->AddItem(projItem); if (gCurrentProject == proj) { projItem->SetMarked(true); fProject = proj; } } gProjectList->Unlock(); fMenuBar->AddItem(menu); SetProject(fProject); EnableReplace(false); SetWorkingDirectory(workingDir); // The search terms box will tell us whenever it has been changed at every keypress fFindBox->SetMessage(new BMessage(M_FIND_CHANGED)); fFindBox->SetTarget(this); fFindBox->SetChangeNotifications(true); fFindBox->MakeFocus(true); fReplaceBox->SetMessage(new BMessage(M_REPLACE_CHANGED)); fReplaceBox->SetTarget(this); fReplaceBox->SetChangeNotifications(true); }
bool lcApplication::Initialize(int argc, char* argv[], const char* LibraryInstallPath, const char* LDrawPath, const char* LibraryCachePath) { char* LibPath = LIBPATH_DEFAULT; // Image output options. bool SaveImage = false; bool SaveWavefront = false; bool Save3DS = false; // bool ImageHighlight = false; int ImageWidth = lcGetProfileInt(LC_PROFILE_IMAGE_WIDTH); int ImageHeight = lcGetProfileInt(LC_PROFILE_IMAGE_HEIGHT); lcStep ImageStart = 0; lcStep ImageEnd = 0; char* ImageName = NULL; char* ProjectName = NULL; char* SaveWavefrontName = NULL; char* Save3DSName = NULL; // Parse the command line arguments. for (int i = 1; i < argc; i++) { char* Param = argv[i]; if (Param[0] == '-') { if ((strcmp(Param, "-l") == 0) || (strcmp(Param, "--libpath") == 0)) { ParseStringArgument(&i, argc, argv, &LibPath); } else if ((strcmp(Param, "-i") == 0) || (strcmp(Param, "--image") == 0)) { SaveImage = true; if ((argc > (i+1)) && (argv[i+1][0] != '-')) { i++; ImageName = argv[i]; } } else if ((strcmp(Param, "-w") == 0) || (strcmp(Param, "--width") == 0)) { ParseIntegerArgument(&i, argc, argv, &ImageWidth); } else if ((strcmp(Param, "-h") == 0) || (strcmp(Param, "--height") == 0)) { ParseIntegerArgument(&i, argc, argv, &ImageHeight); } else if ((strcmp(Param, "-f") == 0) || (strcmp(Param, "--from") == 0)) { int Step; ParseIntegerArgument(&i, argc, argv, &Step); ImageStart = Step; } else if ((strcmp(Param, "-t") == 0) || (strcmp(Param, "--to") == 0)) { int Step; ParseIntegerArgument(&i, argc, argv, &Step); ImageEnd = Step; } // else if (strcmp(Param, "--highlight") == 0) // ImageHighlight = true; else if ((strcmp(Param, "-wf") == 0) || (strcmp(Param, "--export-wavefront") == 0)) { SaveWavefront = true; if ((argc > (i+1)) && (argv[i+1][0] != '-')) { i++; SaveWavefrontName = argv[i]; } } else if ((strcmp(Param, "-3ds") == 0) || (strcmp(Param, "--export-3ds") == 0)) { Save3DS = true; if ((argc > (i+1)) && (argv[i+1][0] != '-')) { i++; Save3DSName = argv[i]; } } else if ((strcmp(Param, "-v") == 0) || (strcmp(Param, "--version") == 0)) { printf("LeoCAD Version " LC_VERSION_TEXT "\n"); printf("Compiled " __DATE__ "\n"); return false; } else if ((strcmp(Param, "-?") == 0) || (strcmp(Param, "--help") == 0)) { printf("Usage: leocad [options] [file]\n"); printf(" [options] can be:\n"); printf(" -l, --libpath <path>: Loads the Pieces Library from path.\n"); printf(" -i, --image <outfile.ext>: Saves a picture in the format specified by ext.\n"); printf(" -w, --width <width>: Sets the picture width.\n"); printf(" -h, --height <height>: Sets the picture height.\n"); printf(" -f, --from <time>: Sets the first frame or step to save pictures.\n"); printf(" -t, --to <time>: Sets the last frame or step to save pictures.\n"); // printf(" --highlight: Highlight pieces in the steps they appear.\n"); printf(" -wf, --export-wavefront <outfile.obj>: Exports the model to Wavefront format.\n"); printf(" -3ds, --export-3ds <outfile.3ds>: Exports the model to 3DS format.\n"); printf(" \n"); return false; } else printf("Unknown parameter: %s\n", Param); } else { ProjectName = Param; } } gMainWindow = new lcMainWindow(); lcLoadDefaultKeyboardShortcuts(); if (!LoadPiecesLibrary(LibPath, LibraryInstallPath, LDrawPath, LibraryCachePath)) { if (SaveImage || SaveWavefront || Save3DS) { fprintf(stderr, "ERROR: Cannot load pieces library."); return false; } if (mLibrary->LoadBuiltinPieces()) QMessageBox::information(gMainWindow, tr("LeoCAD"), tr("LeoCAD could not find a compatible Parts Library so only a small number of parts will be available.\n\n" "Please visit http://www.leocad.org for information on how to download and install a library.")); else QMessageBox::information(gMainWindow, tr("LeoCAD"), tr("LeoCAD could not load Parts Library.\n\n" "Please visit http://www.leocad.org for information on how to download and install a library.")); } gMainWindow->CreateWidgets(); // Create a new project. Project* NewProject = new Project(); SetProject(NewProject); // Load project. if (ProjectName && gMainWindow->OpenProject(ProjectName)) { if (SaveImage) { QString FileName; if (ImageName) FileName = ImageName; else FileName = ProjectName; QString Extension = QFileInfo(FileName).suffix().toLower(); if (Extension.isEmpty()) { FileName += lcGetProfileString(LC_PROFILE_IMAGE_EXTENSION); } else if (Extension != "bmp" && Extension != "jpg" && Extension != "jpeg" && Extension != "png") { FileName = FileName.left(FileName.length() - Extension.length() - 1); FileName += lcGetProfileString(LC_PROFILE_IMAGE_EXTENSION); } if (ImageEnd < ImageStart) ImageEnd = ImageStart; else if (ImageStart > ImageEnd) ImageStart = ImageEnd; if ((ImageStart == 0) && (ImageEnd == 0)) { ImageStart = ImageEnd = mProject->GetActiveModel()->GetCurrentStep(); } else if ((ImageStart == 0) && (ImageEnd != 0)) { ImageStart = ImageEnd; } else if ((ImageStart != 0) && (ImageEnd == 0)) { ImageEnd = ImageStart; } if (ImageStart > 255) ImageStart = 255; if (ImageEnd > 255) ImageEnd = 255; QString Frame; if (ImageStart != ImageEnd) { QString Extension = QFileInfo(FileName).suffix(); Frame = FileName.left(FileName.length() - Extension.length() - 1) + QLatin1String("%1.") + Extension; } else Frame = FileName; lcGetActiveModel()->SaveStepImages(Frame, ImageWidth, ImageHeight, ImageStart, ImageEnd); } if (SaveWavefront) { QString FileName; if (SaveWavefrontName) FileName = SaveWavefrontName; else FileName = ProjectName; QString Extension = QFileInfo(FileName).suffix().toLower(); if (Extension.isEmpty()) { FileName += ".obj"; } else if (Extension != "obj") { FileName = FileName.left(FileName.length() - Extension.length() - 1); FileName += ".obj"; } mProject->ExportWavefront(FileName); } if (Save3DS) { QString FileName; if (Save3DSName) FileName = Save3DSName; else FileName = ProjectName; QString Extension = QFileInfo(FileName).suffix().toLower(); if (Extension.isEmpty()) { FileName += ".3ds"; } else if (Extension != "3ds") { FileName = FileName.left(FileName.length() - Extension.length() - 1); FileName += ".3ds"; } mProject->Export3DStudio(FileName); } } if (SaveImage || SaveWavefront || Save3DS) return false; return true; }