]> Creatis software - crea.git/blob - lib/creaDevManagerLib/wxCDMNewProjectDialog.cpp
6a33d26280652f931bc58c8cc5c9590ca72cfb6f
[crea.git] / lib / creaDevManagerLib / wxCDMNewProjectDialog.cpp
1 /*
2 # ---------------------------------------------------------------------
3 #
4 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image 
5 #                        pour la Santé)
6 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
7 #
8 #  This software is governed by the CeCILL-B license under French law and 
9 #  abiding by the rules of distribution of free software. You can  use, 
10 #  modify and/ or redistribute the software under the terms of the CeCILL-B 
11 #  license as circulated by CEA, CNRS and INRIA at the following URL 
12 #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 
13 #  or in the file LICENSE.txt.
14 #
15 #  As a counterpart to the access to the source code and  rights to copy,
16 #  modify and redistribute granted by the license, users are provided only
17 #  with a limited warranty  and the software's author,  the holder of the
18 #  economic rights,  and the successive licensors  have only  limited
19 #  liability. 
20 #
21 #  The fact that you are presently reading this means that you have had
22 #  knowledge of the CeCILL-B license and that you accept its terms.
23 # ------------------------------------------------------------------------ */ 
24
25
26 /*
27  * wxCDMNewProjectDialog.cpp
28  *
29  *  Created on: 13/11/2012
30  *      Author: daniel
31  */
32
33 #include "wxCDMNewProjectDialog.h"
34
35 #include "creaDevManagerIds.h"
36
37 BEGIN_EVENT_TABLE(wxCDMNewProjectDialog, wxDialog)
38   EVT_BUTTON(ID_BUTTON_NEXT, wxCDMNewProjectDialog::OnCreateProject)
39   EVT_BUTTON(ID_BUTTON_CANCEL, wxCDMNewProjectDialog::OnCancel)
40   EVT_BUTTON(ID_BUTTON_CHOOSE, wxCDMNewProjectDialog::OnChooseLocation)
41 END_EVENT_TABLE()
42
43 wxCDMNewProjectDialog::wxCDMNewProjectDialog(
44     wxWindow* parent,
45     wxWindowID id,
46     const wxString& caption,
47     const wxPoint& position,
48     const wxSize& size,
49     long style
50 )
51 {
52   wxCDMNewProjectDialog::Create(parent, id, caption, position, size, style);
53 }
54
55 wxCDMNewProjectDialog::~wxCDMNewProjectDialog()
56 {
57 }
58
59 bool wxCDMNewProjectDialog::Create(
60     wxWindow* parent,
61     wxWindowID id,
62     const wxString& caption,
63     const wxPoint& position,
64     const wxSize& size,
65     long int style
66 )
67 {
68   wxDialog::Create(parent, id, caption, position, size, style);
69
70   this->CreateControls();
71
72   return TRUE;
73 }
74
75 const wxString wxCDMNewProjectDialog::GetProjectLocation()
76 {
77   return this->projectLocation->GetLabel();
78 }
79 const wxString wxCDMNewProjectDialog::GetProjectName()
80 {
81   return this->projectName->GetValue();
82 }
83 const wxString wxCDMNewProjectDialog::GetPackageAuthor()
84 {
85   return this->packageAuthor->GetValue();
86 }
87 const wxString wxCDMNewProjectDialog::GetPackageDescription()
88 {
89   return this->packageDescription->GetValue();
90 }
91
92 void wxCDMNewProjectDialog::CreateControls()
93 {
94   wxBoxSizer* v_sizer1 = new wxBoxSizer(wxVERTICAL);
95
96
97   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);
98   v_sizer1->Add(title, 0, wxALIGN_LEFT | wxALL | wxALIGN_CENTER_VERTICAL, 5);
99
100   wxStaticText* instruction = new wxStaticText(this, wxID_ANY, wxString("Please fill the following details."), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT);
101   v_sizer1->Add(instruction, 0, wxALIGN_LEFT | wxALL | wxALIGN_CENTER_VERTICAL, 5);
102
103   wxFlexGridSizer* formItems = new wxFlexGridSizer(4,2,9,15);
104
105   wxStaticText *stxtPrjLoc = new wxStaticText(this, -1, wxT("Project Location"));
106   wxStaticText *stxtPrjName = new wxStaticText(this, -1, wxT("Project Name"));
107   wxStaticText *stxtPrjAuth = new wxStaticText(this, -1, wxT("Default Package's Author (1 word)"));
108   wxStaticText *stxtPrjPkg = new wxStaticText(this, -1, wxT("Default Package's Description (HTML)"));
109
110   wxBoxSizer* h_sizer1 = new wxBoxSizer(wxHORIZONTAL);
111   wxButton *ddPrjLocBtn = new wxButton(this, ID_BUTTON_CHOOSE, wxString("Choose directory..."));
112   this->projectLocation = new wxStaticText(this, -1, wxString(""));
113   h_sizer1->Add(ddPrjLocBtn,0,wxALIGN_LEFT | wxLEFT | wxALIGN_CENTER_VERTICAL, 5);
114   h_sizer1->Add(this->projectLocation,0,wxALIGN_LEFT | wxLEFT | wxALIGN_CENTER_VERTICAL, 5);
115   h_sizer1->SetMinSize(wxSize(150, 20));
116
117   this->projectName = new wxTextCtrl(this, -1);
118   this->packageAuthor = new wxTextCtrl(this, -1);
119   this->packageDescription = new wxTextCtrl(this, -1, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE);
120
121   formItems->Add(stxtPrjLoc, 0, wxALIGN_CENTER_VERTICAL);
122   formItems->Add(h_sizer1, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL);
123   formItems->Add(stxtPrjName, 0, wxALIGN_CENTER_VERTICAL);
124   formItems->Add(this->projectName, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL);
125   formItems->Add(stxtPrjAuth, 0, wxALIGN_CENTER_VERTICAL);
126   formItems->Add(this->packageAuthor, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL);
127   formItems->Add(stxtPrjPkg);
128   formItems->Add(this->packageDescription, 1, wxEXPAND);
129
130   formItems->AddGrowableCol(1,1);
131   formItems->AddGrowableRow(3,1);
132
133   v_sizer1->Add(formItems, 1, wxEXPAND | wxALL, 15);
134
135   wxBoxSizer* h_sizer2 = new wxBoxSizer(wxHORIZONTAL);
136   h_sizer2->Add(new wxButton(this, ID_BUTTON_NEXT, wxString("Create Project")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 5);
137   h_sizer2->Add(new wxButton(this, ID_BUTTON_CANCEL, wxString("Cancel")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 5);
138
139   v_sizer1->Add(h_sizer2, 0, wxALIGN_RIGHT | wxRIGHT | wxBOTTOM | wxALIGN_CENTER_VERTICAL, 30);
140
141   SetSizer(v_sizer1);
142   v_sizer1->SetSizeHints(this);
143 }
144
145 void wxCDMNewProjectDialog::OnCreateProject(wxCommandEvent& event)
146 {
147   bool ready = true;
148
149   if(ready && this->projectName->GetValue() == wxString(""))
150     {
151       wxMessageBox(wxString("The project name cannot be empty"),_T("Error"),wxOK | wxICON_ERROR);
152       ready = false;
153     }
154   if(ready && this->projectLocation->GetLabel() == wxString(""))
155     {
156       wxMessageBox(wxString("The project location cannot be empty"),_T("Error"),wxOK | wxICON_ERROR);
157       ready = false;
158     }
159   if(ready && this->packageAuthor->GetValue() == wxString(""))
160     {
161       wxMessageBox(wxString("The project's author cannot be empty"),_T("Error"),wxOK | wxICON_ERROR);
162       ready = false;
163     }
164
165   if(ready)
166     {
167       this->EndModal(wxID_FORWARD);
168     }
169
170   event.Skip();
171 }
172
173 void wxCDMNewProjectDialog::OnCancel(wxCommandEvent& event)
174 {
175   this->EndModal(wxID_CANCEL);
176   event.Skip();
177 }
178
179 void wxCDMNewProjectDialog::OnChooseLocation(wxCommandEvent& event)
180 {
181   wxDirDialog* dialog = new wxDirDialog(this, "Choose the location of the new project");
182   dialog->ShowModal();
183   this->projectLocation->SetLabel(dialog->GetPath());
184   this->Update();
185   event.Skip();
186 }
187