/* * wxCreaDevManagerNewProjectDialog.cpp * * Created on: 2/11/2012 * Author: daniel */ #include "wxCreaDevManagerNewProjectDialog.h" #include "wx/richtext/richtextctrl.h" #include "creaDevManagerIds.h" #include "ControlCreaDevManagerProject.h" #include "wxCreaDevManagerMainFrame.h" BEGIN_EVENT_TABLE(wxCreaDevManagerNewProjectDialog, wxDialog) EVT_BUTTON(ID_BUTTON_NEXT, wxCreaDevManagerNewProjectDialog::OnCreateProject) EVT_BUTTON(ID_BUTTON_CANCEL, wxCreaDevManagerNewProjectDialog::OnCancel) EVT_BUTTON(ID_BUTTON_CHOOSE, wxCreaDevManagerNewProjectDialog::OnChooseLocation) END_EVENT_TABLE() wxCreaDevManagerNewProjectDialog::wxCreaDevManagerNewProjectDialog( wxWindow* parent, ControlCreaDevManagerMain* controller, wxWindowID id, const wxString& caption, const wxPoint& position, const wxSize& size, long style ) { this->Controller = controller; wxCreaDevManagerNewProjectDialog::Create(parent, id, caption, position, size, style); } wxCreaDevManagerNewProjectDialog::~wxCreaDevManagerNewProjectDialog() { } bool wxCreaDevManagerNewProjectDialog::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& position, const wxSize& size, long style ) { wxDialog::Create(parent, id, caption, position, size, style); this->CreateControls(); return TRUE; } void wxCreaDevManagerNewProjectDialog::CreateControls() { wxBoxSizer* v_sizer1 = new wxBoxSizer(wxVERTICAL); wxStaticText* title = new wxStaticText(this, wxID_ANY, wxString("Create a new project"), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT);//new wxRichTextCtrl(this,wxID_ANY, wxString("Create a new project"), wxDefaultPosition, wxDefaultSize, wxRE_READONLY); v_sizer1->Add(title, 0, wxALIGN_LEFT | wxALL | wxALIGN_CENTER_VERTICAL, 5); wxStaticText* instruction = new wxStaticText(this, wxID_ANY, wxString("Please fill the following details."), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); v_sizer1->Add(instruction, 0, wxALIGN_LEFT | wxALL | wxALIGN_CENTER_VERTICAL, 5); wxFlexGridSizer* formItems = new wxFlexGridSizer(4,2,9,15); wxStaticText *stxtPrjLoc = new wxStaticText(this, -1, wxT("Project Location")); wxStaticText *stxtPrjName = new wxStaticText(this, -1, wxT("Project Name")); wxStaticText *stxtPrjAuth = new wxStaticText(this, -1, wxT("Default Package's Author (1 word)")); wxStaticText *stxtPrjPkg = new wxStaticText(this, -1, wxT("Default Package's Description (HTML)")); wxBoxSizer* h_sizer1 = new wxBoxSizer(wxHORIZONTAL); wxButton *ddPrjLocBtn = new wxButton(this, ID_BUTTON_CHOOSE, wxString("Choose directory...")); this->projectLocation = new wxStaticText(this, -1, wxString("")); h_sizer1->Add(ddPrjLocBtn,0,wxALIGN_LEFT | wxLEFT | wxALIGN_CENTER_VERTICAL, 5); h_sizer1->Add(this->projectLocation,0,wxALIGN_LEFT | wxLEFT | wxALIGN_CENTER_VERTICAL, 5); h_sizer1->SetMinSize(wxSize(150, 20)); this->projectName = new wxTextCtrl(this, -1); this->packageAuthor = new wxTextCtrl(this, -1); this->packageDescription = new wxTextCtrl(this, -1, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE); formItems->Add(stxtPrjLoc, 0, wxALIGN_CENTER_VERTICAL); formItems->Add(h_sizer1, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL); formItems->Add(stxtPrjName, 0, wxALIGN_CENTER_VERTICAL); formItems->Add(this->projectName, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL); formItems->Add(stxtPrjAuth, 0, wxALIGN_CENTER_VERTICAL); formItems->Add(this->packageAuthor, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL); formItems->Add(stxtPrjPkg); formItems->Add(this->packageDescription, 1, wxEXPAND); formItems->AddGrowableCol(1,1); formItems->AddGrowableRow(3,1); v_sizer1->Add(formItems, 1, wxEXPAND | wxALL, 15); wxBoxSizer* h_sizer2 = new wxBoxSizer(wxHORIZONTAL); h_sizer2->Add(new wxButton(this, ID_BUTTON_NEXT, wxString("Create Project")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 5); h_sizer2->Add(new wxButton(this, ID_BUTTON_CANCEL, wxString("Cancel")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 5); v_sizer1->Add(h_sizer2, 0, wxALIGN_RIGHT | wxRIGHT | wxBOTTOM | wxALIGN_CENTER_VERTICAL, 30); SetSizer(v_sizer1); v_sizer1->SetSizeHints(this); } void wxCreaDevManagerNewProjectDialog::OnCreateProject(wxCommandEvent& event) { bool ready = true; if(ready && this->projectName->GetValue() == wxString("")) { wxMessageBox(wxString("The project name cannot be empty"),_T("Error"),wxOK | wxICON_ERROR); ready = false; } if(ready && this->projectLocation->GetLabel() == wxString("")) { wxMessageBox(wxString("The project location cannot be empty"),_T("Error"),wxOK | wxICON_ERROR); ready = false; } if(ready && this->packageAuthor->GetValue() == wxString("")) { wxMessageBox(wxString("The project's author cannot be empty"),_T("Error"),wxOK | wxICON_ERROR); ready = false; } std::cout << ready << std::endl; if(ready && ControlCreaDevManagerProject::CreateProject(crea::wx2std(this->projectName->GetValue()), crea::wx2std(this->projectLocation->GetLabel()), crea::wx2std(this->packageAuthor->GetValue()), crea::wx2std(this->packageDescription->GetValue()))) { this->Controller->OpenProject(crea::wx2std(this->projectLocation->GetLabel()) + "/" + crea::wx2std(this->projectName->GetValue())); this->DestroyChildren(); wxBoxSizer* v_sizer1 = new wxBoxSizer(wxVERTICAL); wxStaticText* title = new wxStaticText(this, wxID_ANY, wxString("Your project is ready!"), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT);//new wxRichTextCtrl(this,wxID_ANY, wxString("Create a new project"), wxDefaultPosition, wxDefaultSize, wxRE_READONLY); v_sizer1->Add(title, 0, wxALL, 5); wxStaticText* instruction = new wxStaticText(this, wxID_ANY, wxString("Please close this dialog to continue to the project."), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); v_sizer1->Add(instruction, 0, wxALL, 5); v_sizer1->Add(new wxButton(this, ID_BUTTON_CANCEL, wxString("Close")), 0, wxALL, 5); SetSizer(v_sizer1); v_sizer1->SetSizeHints(this); }else{ if(ready) this->Close(); } event.Skip(); } void wxCreaDevManagerNewProjectDialog::OnCancel(wxCommandEvent& event) { this->Close(); event.Skip(); } void wxCreaDevManagerNewProjectDialog::OnChooseLocation(wxCommandEvent& event) { wxDirDialog* dialog = new wxDirDialog(this, "Choose the location of the new project"); dialog->ShowModal(); this->projectLocation->SetLabel(dialog->GetPath()); this->Update(); event.Skip(); }