]> Creatis software - crea.git/blob - lib/creaDevManagerLib/wxCDMNewProjectDialog.cpp
Feature #1711
[crea.git] / lib / creaDevManagerLib / wxCDMNewProjectDialog.cpp
1 /*
2  * wxCDMNewProjectDialog.cpp
3  *
4  *  Created on: 13/11/2012
5  *      Author: daniel
6  */
7
8 #include "wxCDMNewProjectDialog.h"
9
10 #include "creaDevManagerIds.h"
11
12 BEGIN_EVENT_TABLE(wxCDMNewProjectDialog, wxDialog)
13   EVT_BUTTON(ID_BUTTON_NEXT, wxCDMNewProjectDialog::OnCreateProject)
14   EVT_BUTTON(ID_BUTTON_CANCEL, wxCDMNewProjectDialog::OnCancel)
15   EVT_BUTTON(ID_BUTTON_CHOOSE, wxCDMNewProjectDialog::OnChooseLocation)
16 END_EVENT_TABLE()
17
18 wxCDMNewProjectDialog::wxCDMNewProjectDialog(
19     wxWindow* parent,
20     wxWindowID id,
21     const wxString& caption,
22     const wxPoint& position,
23     const wxSize& size,
24     long style
25 )
26 {
27   wxCDMNewProjectDialog::Create(parent, id, caption, position, size, style);
28 }
29
30 wxCDMNewProjectDialog::~wxCDMNewProjectDialog()
31 {
32 }
33
34 bool wxCDMNewProjectDialog::Create(
35     wxWindow* parent,
36     wxWindowID id,
37     const wxString& caption,
38     const wxPoint& position,
39     const wxSize& size,
40     long int style
41 )
42 {
43   wxDialog::Create(parent, id, caption, position, size, style);
44
45   this->CreateControls();
46
47   return TRUE;
48 }
49
50 const wxString wxCDMNewProjectDialog::GetProjectLocation()
51 {
52   return this->projectLocation->GetLabel();
53 }
54 const wxString wxCDMNewProjectDialog::GetProjectName()
55 {
56   return this->projectName->GetValue();
57 }
58 const wxString wxCDMNewProjectDialog::GetPackageAuthor()
59 {
60   return this->packageAuthor->GetValue();
61 }
62 const wxString wxCDMNewProjectDialog::GetPackageDescription()
63 {
64   return this->packageDescription->GetValue();
65 }
66
67 void wxCDMNewProjectDialog::CreateControls()
68 {
69   wxBoxSizer* v_sizer1 = new wxBoxSizer(wxVERTICAL);
70
71
72   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);
73   v_sizer1->Add(title, 0, wxALIGN_LEFT | wxALL | wxALIGN_CENTER_VERTICAL, 5);
74
75   wxStaticText* instruction = new wxStaticText(this, wxID_ANY, wxString("Please fill the following details."), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT);
76   v_sizer1->Add(instruction, 0, wxALIGN_LEFT | wxALL | wxALIGN_CENTER_VERTICAL, 5);
77
78   wxFlexGridSizer* formItems = new wxFlexGridSizer(4,2,9,15);
79
80   wxStaticText *stxtPrjLoc = new wxStaticText(this, -1, wxT("Project Location"));
81   wxStaticText *stxtPrjName = new wxStaticText(this, -1, wxT("Project Name"));
82   wxStaticText *stxtPrjAuth = new wxStaticText(this, -1, wxT("Default Package's Author (1 word)"));
83   wxStaticText *stxtPrjPkg = new wxStaticText(this, -1, wxT("Default Package's Description (HTML)"));
84
85   wxBoxSizer* h_sizer1 = new wxBoxSizer(wxHORIZONTAL);
86   wxButton *ddPrjLocBtn = new wxButton(this, ID_BUTTON_CHOOSE, wxString("Choose directory..."));
87   this->projectLocation = new wxStaticText(this, -1, wxString(""));
88   h_sizer1->Add(ddPrjLocBtn,0,wxALIGN_LEFT | wxLEFT | wxALIGN_CENTER_VERTICAL, 5);
89   h_sizer1->Add(this->projectLocation,0,wxALIGN_LEFT | wxLEFT | wxALIGN_CENTER_VERTICAL, 5);
90   h_sizer1->SetMinSize(wxSize(150, 20));
91
92   this->projectName = new wxTextCtrl(this, -1);
93   this->packageAuthor = new wxTextCtrl(this, -1);
94   this->packageDescription = new wxTextCtrl(this, -1, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE);
95
96   formItems->Add(stxtPrjLoc, 0, wxALIGN_CENTER_VERTICAL);
97   formItems->Add(h_sizer1, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL);
98   formItems->Add(stxtPrjName, 0, wxALIGN_CENTER_VERTICAL);
99   formItems->Add(this->projectName, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL);
100   formItems->Add(stxtPrjAuth, 0, wxALIGN_CENTER_VERTICAL);
101   formItems->Add(this->packageAuthor, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL);
102   formItems->Add(stxtPrjPkg);
103   formItems->Add(this->packageDescription, 1, wxEXPAND);
104
105   formItems->AddGrowableCol(1,1);
106   formItems->AddGrowableRow(3,1);
107
108   v_sizer1->Add(formItems, 1, wxEXPAND | wxALL, 15);
109
110   wxBoxSizer* h_sizer2 = new wxBoxSizer(wxHORIZONTAL);
111   h_sizer2->Add(new wxButton(this, ID_BUTTON_NEXT, wxString("Create Project")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 5);
112   h_sizer2->Add(new wxButton(this, ID_BUTTON_CANCEL, wxString("Cancel")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 5);
113
114   v_sizer1->Add(h_sizer2, 0, wxALIGN_RIGHT | wxRIGHT | wxBOTTOM | wxALIGN_CENTER_VERTICAL, 30);
115
116   SetSizer(v_sizer1);
117   v_sizer1->SetSizeHints(this);
118 }
119
120 void wxCDMNewProjectDialog::OnCreateProject(wxCommandEvent& event)
121 {
122   bool ready = true;
123
124   if(ready && this->projectName->GetValue() == wxString(""))
125     {
126       wxMessageBox(wxString("The project name cannot be empty"),_T("Error"),wxOK | wxICON_ERROR);
127       ready = false;
128     }
129   if(ready && this->projectLocation->GetLabel() == wxString(""))
130     {
131       wxMessageBox(wxString("The project location cannot be empty"),_T("Error"),wxOK | wxICON_ERROR);
132       ready = false;
133     }
134   if(ready && this->packageAuthor->GetValue() == wxString(""))
135     {
136       wxMessageBox(wxString("The project's author cannot be empty"),_T("Error"),wxOK | wxICON_ERROR);
137       ready = false;
138     }
139
140   if(ready)
141     {
142       this->EndModal(wxID_FORWARD);
143     }
144
145   event.Skip();
146 }
147
148 void wxCDMNewProjectDialog::OnCancel(wxCommandEvent& event)
149 {
150   this->EndModal(wxID_CANCEL);
151   event.Skip();
152 }
153
154 void wxCDMNewProjectDialog::OnChooseLocation(wxCommandEvent& event)
155 {
156   wxDirDialog* dialog = new wxDirDialog(this, "Choose the location of the new project");
157   dialog->ShowModal();
158   this->projectLocation->SetLabel(dialog->GetPath());
159   this->Update();
160   event.Skip();
161 }
162