OpenASIP 2.2
Loading...
Searching...
No Matches
RFExternalPortDialog.cc
Go to the documentation of this file.
1/*
2 Copyright (c) 2002-2014 Tampere University.
3
4 This file is part of TTA-Based Codesign Environment (TCE).
5
6 Permission is hereby granted, free of charge, to any person obtaining a
7 copy of this software and associated documentation files (the "Software"),
8 to deal in the Software without restriction, including without limitation
9 the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 and/or sell copies of the Software, and to permit persons to whom the
11 Software is furnished to do so, subject to the following conditions:
12
13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software.
15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 DEALINGS IN THE SOFTWARE.
23 */
24/**
25 * @file RFExternalPortDialog.cc
26 *
27 * Declaration of RFExternalPortDialog class.
28 *
29 * @author Henry Linjamäki (henry-linjamaki-no.spam-cs.tut.fi)
30 * @note rating: red
31 */
32
34
35
36#include <wx/wx.h>
37#include <wx/checklst.h>
38#include <wx/statline.h>
39#include <wx/valgen.h>
41#include "RFExternalPort.hh"
42#include "WxConversion.hh"
43#include "ErrorDialog.hh"
44#include "RFImplementation.hh"
45
46
47using namespace HDB;
48using std::string;
49
50BEGIN_EVENT_TABLE(RFExternalPortDialog, wxDialog)
53
54/**
55 * The Constructor.
56 *
57 * @param parent Parent window of the dialog.
58 * @param id Window identifier for the dialog window.
59 * @param port RF external port to modify.
60 */
62 wxWindow* parent, wxWindowID id, RFExternalPort& port,
63 const RFImplementation& rf) :
64 wxDialog(parent, id, _T("Register File Port")),
65 port_(port), rf_(rf), depList_(NULL) {
66
67 initialize();
68}
69
70/**
71 * The Destructor.
72 */
75
76/**
77 * Creates and initializes the dialog widgets.
78 */
79void
81
82 createContents(this, true, true);
83
84 depList_ = dynamic_cast<wxCheckListBox*>(
86
91
92 FindWindow(ID_NAME)->SetValidator(wxTextValidator(wxFILTER_ASCII, &name_));
93 FindWindow(ID_WIDTH)->SetValidator(
94 wxTextValidator(wxFILTER_ASCII, &widthFormula_));
95 FindWindow(ID_DIRECTION)->SetValidator(wxGenericValidator(&direction_));
96 FindWindow(ID_DESCRIPTION)->SetValidator(
97 wxTextValidator(wxFILTER_ASCII, &description_));
98
99 depList_->Clear();
100 for (int i = 0; i < rf_.parameterCount(); i++) {
101 string parameter = rf_.parameter(i).name;
102 depList_->Append( WxConversion::toWxString(parameter));
103
104 for (int dep = 0; dep < port_.parameterDependencyCount(); dep++) {
105 if (port_.parameterDependency(dep) == parameter) {
106 depList_->Check(i);
107 }
108 }
109 }
110}
111
112
113/**
114 * Event handler for the dialog OK-button.
115 */
116void
118
119 TransferDataFromWindow();
120
121 name_ = name_.Trim(true).Trim(false);
122 widthFormula_ = widthFormula_.Trim(true).Trim(false);
123 description_ = description_.Trim(true).Trim(false);
124
125 if (name_.IsEmpty()) {
126 wxString message = _T("Name field must not be empty.");
127 ErrorDialog dialog(this, message);
128 dialog.ShowModal();
129 return;
130 }
131
132 if (widthFormula_.IsEmpty()) {
133 wxString message =
134 _T("Width formula field must not be empty.");
135 ErrorDialog dialog(this, message);
136 dialog.ShowModal();
137 return;
138 }
139
143
144 if (direction_ == 0) {
146 } else if (direction_ == 1) {
148 } else if (direction_ == 2) {
150 } else {
151 assert(false);
152 }
153
154 for (int i = 0; i < rf_.parameterCount(); i++) {
155 string parameter = WxConversion::toString(depList_->GetString(i));
156 if (depList_->IsChecked(i)) {
157 port_.setParameterDependency(parameter);
158 } else {
160 }
161 }
162
163 EndModal(wxID_OK);
164
165}
166
167/**
168 * Creates the dialog contents.
169 */
170wxSizer*
172 wxWindow *parent, bool call_fit, bool set_sizer) {
173 wxBoxSizer *item0 = new wxBoxSizer( wxVERTICAL );
174
175 wxBoxSizer *item1 = new wxBoxSizer( wxVERTICAL );
176
177 wxFlexGridSizer *item2 = new wxFlexGridSizer( 2, 0, 0 );
178
179 wxStaticText *item3 = new wxStaticText( parent, ID_LABEL_NAME, wxT("Name:"), wxDefaultPosition, wxDefaultSize, 0 );
180 item2->Add( item3, 0, wxALIGN_RIGHT|wxALL, 5 );
181
182 wxTextCtrl *item4 = new wxTextCtrl( parent, ID_NAME, wxT(""), wxDefaultPosition, wxSize(300,-1), 0 );
183 item2->Add( item4, 0, wxALIGN_CENTER|wxALL, 5 );
184
185 wxStaticText *item5 = new wxStaticText( parent, ID_LABEL_WIDTH, wxT("Width formula:"), wxDefaultPosition, wxDefaultSize, 0 );
186 item2->Add( item5, 0, wxALIGN_RIGHT|wxALL, 5 );
187
188 wxTextCtrl *item6 = new wxTextCtrl( parent, ID_WIDTH, wxT(""), wxDefaultPosition, wxSize(200,-1), 0 );
189 item2->Add( item6, 0, wxGROW|wxALL, 5 );
190
191 wxStaticText *item7 = new wxStaticText( parent, ID_LABEL_DESCRIPTION, wxT("Description:"), wxDefaultPosition, wxDefaultSize, 0 );
192 item2->Add( item7, 0, wxALIGN_RIGHT|wxALL, 5 );
193
194 wxTextCtrl *item8 = new wxTextCtrl( parent, ID_DESCRIPTION, wxT(""), wxDefaultPosition, wxSize(300,-1), 0 );
195 item2->Add( item8, 0, wxALIGN_CENTER|wxALL, 5 );
196
197 item1->Add( item2, 0, wxGROW|wxALL, 5 );
198
199 wxGridSizer *item9 = new wxGridSizer( 2, 0, 0 );
200
201 wxString strs10[] =
202 {
203 wxT("In"),
204 wxT("Out"),
205 wxT("Bidirectional")
206 };
207 wxRadioBox *item10 = new wxRadioBox( parent, ID_DIRECTION, wxT("Direction:"), wxDefaultPosition, wxDefaultSize, 3, strs10, 1, wxRA_SPECIFY_COLS );
208 item9->Add( item10, 0, wxGROW|wxALL, 5 );
209
210 wxStaticBox *item12 = new wxStaticBox( parent, -1, wxT("Parameter dependency:") );
211 wxStaticBoxSizer *item11 = new wxStaticBoxSizer( item12, wxVERTICAL );
212
213 wxWindow *item13 = new wxCheckListBox(parent, ID_PARAMETER_DEPS, wxDefaultPosition, wxSize(200, 150));
214 wxASSERT( item13 );
215 item11->Add( item13, 0, wxGROW|wxALL, 5 );
216
217 item9->Add( item11, 0, wxGROW|wxALL, 5 );
218
219 item1->Add( item9, 0, wxGROW|wxALL, 5 );
220
221 item0->Add( item1, 0, wxALIGN_CENTER|wxALL, 5 );
222
223 wxStaticLine *item14 = new wxStaticLine( parent, ID_LINE, wxDefaultPosition, wxSize(20,-1), wxLI_HORIZONTAL );
224 item0->Add( item14, 0, wxGROW|wxALL, 5 );
225
226 wxBoxSizer *item15 = new wxBoxSizer( wxHORIZONTAL );
227
228 wxButton *item16 = new wxButton( parent, wxID_CANCEL, wxT("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
229 item15->Add( item16, 0, wxALIGN_CENTER|wxALL, 5 );
230
231 wxButton *item17 = new wxButton( parent, wxID_OK, wxT("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
232 item15->Add( item17, 0, wxALIGN_CENTER|wxALL, 5 );
233
234 item0->Add( item15, 0, wxALL, 5 );
235
236 if (set_sizer)
237 {
238 parent->SetSizer( item0 );
239 if (call_fit)
240 item0->SetSizeHints( parent );
241 }
242
243 return item0;
244}
245
#define assert(condition)
END_EVENT_TABLE() using namespace IDF
EVT_BUTTON(ID_EDIT_ARCH_PORT, FUImplementationDialog::onEditArchitecturePort) EVT_BUTTON(ID_ADD_EXTERNAL_PORT
std::string widthFormula() const
void setWidthFormula(const std::string &widthFormula)
void setName(const std::string &name)
std::string parameterDependency(int index) const
void setDirection(Direction direction)
void setDescription(const std::string &description)
bool setParameterDependency(const std::string &parameter)
int parameterDependencyCount() const
std::string name() const
std::string description() const
bool unsetParameterDependency(const std::string &parameter)
Direction direction() const
Parameter parameter(int index) const
void onOK(wxCommandEvent &event)
const HDB::RFImplementation & rf_
Parent RF implementation of the port.
HDB::RFExternalPort & port_
RF port implementation to modify.
wxSizer * createContents(wxWindow *parent, bool call_fit, bool set_sizer)
Creates the dialog contents.
static wxString toWxString(const std::string &source)
static std::string toString(const wxString &source)
@ OUT
Output port.
Definition HDBTypes.hh:42
@ BIDIR
Bidirectional port.
Definition HDBTypes.hh:43
@ IN
Input port.
Definition HDBTypes.hh:41
std::string name
Name of the parameter.
Definition HDBTypes.hh:47