35 #include <wx/listctrl.h>
36 #include <wx/statline.h>
37 #include <wx/notebook.h>
38 #include <wx/docview.h>
62 #if wxCHECK_VERSION(3, 0, 0)
63 #define wxSAVE wxFD_SAVE
64 #define wxOVERWRITE_PROMPT wxFD_OVERWRITE_PROMPT
65 #define wxOPEN wxFD_OPEN
66 #define wxFILE_MUST_EXIST wxFD_FILE_MUST_EXIST
71 using namespace ProGe;
126 wxDialog(parent, -1, _T("Processor Implementation"),
127 wxDefaultPosition, wxDefaultSize,
128 wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER),
129 machine_(
machine), impl_(impl), plugin_(NULL), dirtyData_(
false) {
131 createContents(
this,
true,
true);
132 SetMinSize(wxSize(600, 500));
135 dynamic_cast<wxTextCtrl*
>(
FindWindow(ID_IC_DEC_PLUGIN_NAME))->
138 fuList_ =
dynamic_cast<wxListCtrl*
>(
FindWindow(ID_FU_LIST));
139 rfList_ =
dynamic_cast<wxListCtrl*
>(
FindWindow(ID_RF_LIST));
140 iuList_ =
dynamic_cast<wxListCtrl*
>(
FindWindow(ID_IU_LIST));
141 parameterList_ =
dynamic_cast<wxListCtrl*
>(
FindWindow(ID_PARAMETER_LIST));
144 fuList_->InsertColumn(0, _T(
"FU"), wxLIST_FORMAT_LEFT, 150);
145 fuList_->InsertColumn(1, _T(
"ID"), wxLIST_FORMAT_LEFT, 40);
146 fuList_->InsertColumn(2, _T(
"HDB"), wxLIST_FORMAT_LEFT, 400);
148 rfList_->InsertColumn(0, _T(
"RF"), wxLIST_FORMAT_LEFT, 150);
149 rfList_->InsertColumn(1, _T(
"ID"), wxLIST_FORMAT_LEFT, 40);
150 rfList_->InsertColumn(2, _T(
"HDB"), wxLIST_FORMAT_LEFT, 400);
152 iuList_->InsertColumn(0, _T(
"IU"), wxLIST_FORMAT_LEFT, 150);
153 iuList_->InsertColumn(1, _T(
"ID"), wxLIST_FORMAT_LEFT, 40);
154 iuList_->InsertColumn(2, _T(
"HDB"), wxLIST_FORMAT_LEFT, 400);
156 parameterList_->InsertColumn(0, _T(
"Name"), wxLIST_FORMAT_LEFT, 150);
157 parameterList_->InsertColumn(1, _T(
"Value"), wxLIST_FORMAT_LEFT, 100);
158 parameterList_->InsertColumn(
159 2, _T(
"Description"), wxLIST_FORMAT_LEFT, 300);
170 assert(pluginName.length() > 6);
171 pluginName = pluginName.substr(0, pluginName.length() - 6);
173 loadICDecoderPlugin(pluginName, pluginFile);
191 updateImplementationLists();
192 parameterList_->DeleteAllItems();
194 if (impl_.hasICDecoderPluginFile()) {
196 dynamic_cast<wxTextCtrl*
>(
FindWindow(ID_IC_DEC_PLUGIN_FILE))->
199 dynamic_cast<wxTextCtrl*
>(
FindWindow(ID_IC_DEC_PLUGIN_FILE))->
204 if (impl_.hasICDecoderPluginName()) {
205 dynamic_cast<wxTextCtrl*
>(
FindWindow(ID_IC_DEC_PLUGIN_NAME))->
209 if (impl_.hasICDecoderHDB()) {
211 dynamic_cast<wxTextCtrl*
>(
FindWindow(ID_IC_DEC_HDB_FILE))->
214 dynamic_cast<wxTextCtrl*
>(
FindWindow(ID_IC_DEC_HDB_FILE))->
220 wxTextCtrl* descCtrl =
dynamic_cast<wxTextCtrl*
>(
224 if (plugin_ != NULL) {
230 for (
int i = 0; i < plugin_->recognizedParameterCount(); i++) {
231 string paramName = plugin_->recognizedParameter(i);
233 impl_.icDecoderParameterValue(plugin_->recognizedParameter(i));
234 string paramDesc = plugin_->parameterDescription(paramName);
236 parameterList_->SetItem(
238 parameterList_->SetItem(
241 parameterList_->SetColumnWidth(2, wxLIST_AUTOSIZE);
243 descCtrl->SetValue(_T(
"\n No IC / Decoder plugin loaded."));
246 if (impl_.hasDecompressorFile()) {
248 dynamic_cast<wxTextCtrl*
>(
FindWindow(ID_DECOMPRESSOR_PATH))->
252 _T(
"Unable to set decompressor block file:\n");
268 impl_.rfImplementation(rfName);
291 updateImplementationLists();
299 fuList_->DeleteAllItems();
300 rfList_->DeleteAllItems();
301 iuList_->DeleteAllItems();
305 machine_.functionUnitNavigator();
307 for (
int i = 0; i < fuNav.
count(); i++) {
308 string fuName = fuNav.
item(i)->name();
310 if (impl_.hasFUImplementation(fuName)) {
312 impl_.fuImplementation(fuName);
330 machine_.registerFileNavigator();
332 for (
int i = 0; i < rfNav.
count(); i++) {
333 string rfName = rfNav.
item(i)->name();
335 if (impl_.hasRFImplementation(rfName)) {
337 impl_.rfImplementation(rfName);
354 machine_.immediateUnitNavigator();
356 for (
int i = 0; i < iuNav.
count(); i++) {
357 string iuName = iuNav.
item(i)->name();
359 if (impl_.hasIUImplementation(iuName)) {
361 impl_.iuImplementation(iuName);
383 const RegisterFile& rf = *machine_.registerFileNavigator().item(item);
384 if (impl_.hasRFImplementation(rf.
name())) {
386 this, rf, impl_.rfImplementation(rf.
name()));
388 if (dialog.ShowModal() == wxID_OK) {
390 updateRFList(rf.
name(), item);
397 if (dialog.ShowModal() == wxID_OK) {
398 impl_.addRFImplementation(location);
400 updateRFList(rf.
name(), item);
414 item = rfList_->GetNextItem(
415 item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
422 handleSelectRFImplementation(item);
430 handleSelectRFImplementation(e.GetIndex());
436 const ImmediateUnit& iu = *machine_.immediateUnitNavigator().item(item);
437 if (impl_.hasIUImplementation(iu.
name())) {
439 this, iu, impl_.iuImplementation(iu.
name()));
441 if (dialog.ShowModal() == wxID_OK) {
449 if (dialog.ShowModal() == wxID_OK) {
450 impl_.addIUImplementation(location);
456 TransferDataToWindow();
466 item = iuList_->GetNextItem(
467 item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
474 handleSelectIUImplementation(item);
482 handleSelectIUImplementation(e.GetIndex());
490 impl_.fuImplementation(fuName);
510 const FunctionUnit& fu = *machine_.functionUnitNavigator().item(item);
512 if (impl_.hasFUImplementation(fu.
name())) {
514 this, fu, impl_.fuImplementation(fu.
name()));
516 if (dialog.ShowModal() == wxID_OK) {
518 updateFUList(fu.
name(), item);
525 if (dialog.ShowModal() == wxID_OK) {
526 impl_.addFUImplementation(location);
528 updateFUList(fu.
name(), item);
542 item = fuList_->GetNextItem(
543 item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
550 handleSelectFUImplementation(item);
558 handleSelectFUImplementation(e.GetIndex());
568 if (rfList_->GetSelectedItemCount() == 1) {
582 if (iuList_->GetSelectedItemCount() == 1) {
596 if (fuList_->GetSelectedItemCount() == 1) {
610 if (parameterList_->GetSelectedItemCount() == 1) {
624 this, _T(
"Choose a file"), _T(
""), _T(
""),
625 _T(
"Implemenation Definition Files files (*.idf)|*.idf|All files|*"),
626 (wxOPEN | wxFILE_MUST_EXIST));
628 if (dialog.ShowModal() == wxID_OK) {
640 impl_.loadState(newIDF);
643 impl_.loadState(old);
644 wxString message = _T(
"Error reading idf '");
646 message.Append(_T(
"':\n"));
649 errorDialog.ShowModal();
655 wxString message = _T(
"Warning:\n");
656 for (
int i = 0; i < validator.
errorCount(); i++) {
660 message.Append(_T(
"\n"));
663 warningDialog.ShowModal();
671 checkImplementationFiles();
674 if (impl_.hasICDecoderPluginName() &&
675 impl_.hasICDecoderPluginFile()) {
678 impl_.icDecoderPluginName(),
679 impl_.icDecoderPluginFile());
682 wxString msg = _T(
"Warning: could not load IC decoder plugin!");
684 warningDialog.ShowModal();
687 TransferDataToWindow();
699 wxString message = _T(
"Save before exit?\n");
701 wxMessageDialog dialog(
this, message, message, wxYES|wxCANCEL|wxNO);
702 int rv = dialog.ShowModal();
720 wxString message = _T(
"Save implementation.");
721 wxString defaultDir = _T(
".");
723 wxDocument* doc = wxGetApp().docManager()->GetCurrentDocument();
724 wxString defaultFile;
726 defaultFile = doc->GetFilename();
727 defaultFile.erase(defaultFile.rfind(
'.'));
728 defaultFile += _T(
".idf");
738 defaultFile = _T(
".idf");
741 wxString fileTypes = _T(
"Implementation Definition File (.idf)|*.idf");
744 this, message, defaultDir, defaultFile, fileTypes,
745 wxSAVE | wxOVERWRITE_PROMPT);
747 if (dialog.ShowModal() == wxID_OK) {
751 std::vector<string> searchPaths;
754 impl_.makeImplFilesRelative(searchPaths);
761 wxString message = _T(
"Error writing '");
763 message.Append(_T(
"':"));
787 this, _T(
"Choose a file"), _T(
""), _T(
""),
788 _T(
"Decompressor block files (*.vhdl;*.vhd)|*.vhdl;*.vhd|"
790 (wxOPEN | wxFILE_MUST_EXIST));
792 if (dialog.ShowModal() == wxID_OK) {
794 string decompressorFile =
797 impl_.setDecompressorFile(decompressorFile);
800 TransferDataToWindow();
811 this, _T(
"Choose a file"), _T(
""), _T(
""),
812 _T(
"IC/Decoder plugins (*.so)|*.so|All files|*.*"),
813 (wxOPEN | wxFILE_MUST_EXIST));
815 if (dialog.ShowModal() == wxID_OK) {
824 if (pluginName.length() < 6 ||
825 pluginName.substr(pluginName.length() - 6) !=
"Plugin") {
827 wxString message = _T(
"Unable to determine plugin name.\n");
828 message.Append(_T(
"Plugin file must be named "));
829 message.Append(_T(
"'<plugin name>Plugin.so'"));
834 pluginName = pluginName.substr(0, pluginName.length() - 6);
835 loadICDecoderPlugin(pluginName, pluginFile);
836 impl_.clearICDecoderParameters();
839 TransferDataToWindow();
850 this, _T(
"Choose a file"), _T(
""), _T(
""),
851 _T(
"HDB Files (*.hdb)|*.hdb|All files|*.*"),
852 (wxOPEN | wxFILE_MUST_EXIST));
854 if (dialog.ShowModal() == wxID_OK) {
857 impl_.setICDecoderHDB(hdbFile);
860 TransferDataToWindow();
871 item = parameterList_->GetNextItem(
872 item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
874 if (item < 0)
return;
876 wxTextCtrl* valueCtrl =
dynamic_cast<wxTextCtrl*
>(
879 std::string name = plugin_->recognizedParameter(item);
881 impl_.setICDecoderParameter(name, value);
882 TransferDataToWindow();
894 const string& pluginName,
895 const string& pluginFile) {
897 if (plugin_ != NULL) {
904 for (vector<string>::const_iterator iter = pluginPaths.begin();
905 iter != pluginPaths.end(); iter++) {
907 pluginTool_.addSearchPath(*iter);
913 pluginTool_.registerModule(pluginFile);
915 wxString message = _T(
"Plugin file '");
917 message.Append(_T(
"' doesn't exist"));
922 wxString message = _T(
"Error loading plugin file '");
924 message.Append(_T(
"':\n"));
935 pluginTool_.importSymbol(
936 "create_generator_plugin_" + pluginName, creator, pluginFile);
940 plugin_ = creator(machine_, *bem);
943 wxString message = _T(
"Error loading plugin '");
945 message.Append(_T(
"' from '"));
947 message.Append(_T(
"':\n"));
955 impl_.setICDecoderPluginFile(pluginFile);
958 impl_.setICDecoderPluginName(pluginName);
972 for (
int i = 0; i < validator.
errorCount(); i++) {
976 message.Append(_T(
"\n"));
994 size_t missingFileCount;
995 size_t alternativesCount;
998 if (impl_.checkImplFiles(missingFileCount, alternativesCount)) {
1005 static_cast<int>(missingFileCount));
1007 static_cast<int>(alternativesCount));
1010 wxString message = missFileCountStr;
1011 message.Append(_T(
" file(s) defined in IDF couldn't be located from"));
1012 message.Append(_T(
" absolute paths or under working directory.\n"));
1013 message.Append(_T(
"\n"));
1015 if (alternativesCount > 0) {
1016 message.Append(altFileCountStr);
1017 message.Append(_T(
" of them were replaced with file(s) found under"));
1018 message.Append(_T(
" the default search paths."));
1020 message.Append(_T(
"Any alternative file paths couldn't be"));
1021 message.Append(_T(
" located for the missing files."));
1025 warningDialog.ShowModal();
1041 wxFlexGridSizer *item0 =
new wxFlexGridSizer( 1, 0, 0 );
1042 item0->AddGrowableCol( 0 );
1043 item0->AddGrowableRow( 0 );
1045 wxNotebook *item2 =
new wxNotebook( parent, ID_NOTEBOOK, wxDefaultPosition, wxDefaultSize, 0 );
1046 #if !wxCHECK_VERSION(2,5,2)
1047 wxNotebookSizer *item1 =
new wxNotebookSizer( item2 );
1049 wxWindow *item1 = item2;
1052 wxPanel *item3 =
new wxPanel( item2, -1 );
1054 item2->AddPage( item3, wxT(
"Register Files") );
1056 wxPanel *item4 =
new wxPanel( item2, -1 );
1058 item2->AddPage( item4, wxT(
"Immediate Units") );
1060 wxPanel *item5 =
new wxPanel( item2, -1 );
1062 item2->AddPage( item5, wxT(
"Function Units") );
1064 wxPanel *item6 =
new wxPanel( item2, -1 );
1066 item2->AddPage( item6, wxT(
"Instruction Compression") );
1068 wxPanel *item7 =
new wxPanel( item2, -1 );
1070 item2->AddPage( item7, wxT(
"IC / Decoder Plugin") );
1072 item0->Add( item1, 0, wxFIXED_MINSIZE|wxGROW|wxALL, 5 );
1074 wxStaticLine *item8 =
new wxStaticLine( parent, ID_LINE, wxDefaultPosition, wxSize(200,-1), wxLI_HORIZONTAL );
1075 item0->Add( item8, 0, wxFIXED_MINSIZE|wxGROW|wxALL, 5 );
1077 wxGridSizer *item9 =
new wxGridSizer( 2, 0, 0 );
1079 wxBoxSizer *item10 =
new wxBoxSizer( wxHORIZONTAL );
1081 wxButton *item11 =
new wxButton( parent, ID_LOAD_IDF, wxT(
"Load IDF..."), wxDefaultPosition, wxDefaultSize, 0 );
1082 item10->Add( item11, 0, wxFIXED_MINSIZE|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
1084 wxButton *item12 =
new wxButton( parent, ID_SAVE_IDF, wxT(
"Save IDF..."), wxDefaultPosition, wxDefaultSize, 0 );
1085 item10->Add( item12, 0, wxFIXED_MINSIZE|wxALIGN_CENTER|wxALL, 5 );
1087 wxButton *item13 =
new wxButton( parent, ID_GENERATE, wxT(
"Generate Processor"), wxDefaultPosition, wxDefaultSize, 0 );
1088 item10->Add( item13, 0, wxFIXED_MINSIZE|wxALIGN_CENTER|wxALL, 5 );
1090 item9->Add( item10, 0, wxFIXED_MINSIZE|wxALIGN_CENTER_VERTICAL, 5 );
1092 wxBoxSizer *item14 =
new wxBoxSizer( wxHORIZONTAL );
1094 wxButton *item15 =
new wxButton( parent, ID_CLOSE, wxT(
"Close"), wxDefaultPosition, wxDefaultSize, 0 );
1095 item14->Add( item15, 0, wxFIXED_MINSIZE|wxALIGN_CENTER|wxALL, 5 );
1097 item9->Add( item14, 0, wxFIXED_MINSIZE|wxALIGN_CENTER_VERTICAL, 5 );
1099 item0->Add( item9, 0, wxFIXED_MINSIZE|wxGROW|wxALL, 5 );
1103 parent->SetSizer( item0 );
1105 item0->SetSizeHints( parent );
1113 wxFlexGridSizer *item0 =
new wxFlexGridSizer( 1, 0, 0 );
1114 item0->AddGrowableCol( 0 );
1115 item0->AddGrowableRow( 0 );
1117 wxListCtrl *item1 =
new wxListCtrl( parent, ID_RF_LIST, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
1118 item0->Add( item1, 0, wxGROW|wxALL, 5 );
1120 wxBoxSizer *buttonSizer =
new wxBoxSizer( wxHORIZONTAL );
1121 wxButton *autoSelButton =
new wxButton( parent, ID_AUTO_SELECT_IMPL, wxT(
"Auto Select Implementations"), wxDefaultPosition, wxDefaultSize, 0 );
1122 buttonSizer->Add( autoSelButton, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
1124 wxButton *item2 =
new wxButton( parent, ID_SELECT_RF_IMPL, wxT(
"Select implementation..."), wxDefaultPosition, wxDefaultSize, 0 );
1125 buttonSizer->Add( item2, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
1127 item0->Add( buttonSizer, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
1131 parent->SetSizer( item0 );
1133 item0->SetSizeHints( parent );
1141 wxFlexGridSizer *item0 =
new wxFlexGridSizer( 1, 0, 0 );
1142 item0->AddGrowableCol( 0 );
1143 item0->AddGrowableRow( 0 );
1145 wxListCtrl *item1 =
new wxListCtrl( parent, ID_FU_LIST, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
1146 item0->Add( item1, 0, wxGROW|wxALL, 5 );
1148 wxBoxSizer *buttonSizer =
new wxBoxSizer( wxHORIZONTAL );
1149 wxButton *autoSelButton =
new wxButton( parent, ID_AUTO_SELECT_IMPL, wxT(
"Auto Select Implementations"), wxDefaultPosition, wxDefaultSize, 0 );
1150 buttonSizer->Add( autoSelButton, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
1152 wxButton *item2 =
new wxButton( parent, ID_SELECT_FU_IMPL, wxT(
"Select implementation..."), wxDefaultPosition, wxDefaultSize, 0 );
1153 buttonSizer->Add( item2, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
1155 item0->Add( buttonSizer, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
1159 parent->SetSizer( item0 );
1161 item0->SetSizeHints( parent );
1169 wxFlexGridSizer *item0 =
new wxFlexGridSizer( 1, 0, 0 );
1170 item0->AddGrowableCol( 0 );
1172 item0->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 );
1174 wxStaticBox *item2 =
new wxStaticBox( parent, -1, wxT(
"Instruction Decompressor:") );
1175 wxStaticBoxSizer *item1 =
new wxStaticBoxSizer( item2, wxVERTICAL );
1177 wxFlexGridSizer *item3 =
new wxFlexGridSizer( 2, 0, 0 );
1179 wxStaticText *item4 =
new wxStaticText( parent, ID_TEXT, wxT(
"Decompressor block file:"), wxDefaultPosition, wxDefaultSize, 0 );
1180 item3->Add( item4, 0, wxALL, 5 );
1182 item3->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 );
1184 wxTextCtrl *item5 =
new wxTextCtrl( parent, ID_DECOMPRESSOR_PATH, wxT(
""), wxDefaultPosition, wxSize(250,-1), wxTE_READONLY );
1185 item3->Add( item5, 0, wxALIGN_CENTER|wxALL, 5 );
1187 wxButton *item6 =
new wxButton( parent, ID_BROWSE_DECOMPRESSOR, wxT(
"Browse..."), wxDefaultPosition, wxDefaultSize, 0 );
1188 item3->Add( item6, 0, wxALIGN_CENTER|wxALL, 5 );
1190 item1->Add( item3, 0, wxGROW|wxALL, 5 );
1192 item0->Add( item1, 0, wxGROW|wxALL, 5 );
1194 item0->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 );
1198 parent->SetSizer( item0 );
1200 item0->SetSizeHints( parent );
1208 wxFlexGridSizer *item0 =
new wxFlexGridSizer( 1, 0, 0 );
1209 item0->AddGrowableCol( 0 );
1210 item0->AddGrowableRow( 0 );
1212 wxFlexGridSizer *item1 =
new wxFlexGridSizer( 1, 0, 0 );
1213 item1->AddGrowableCol( 0 );
1214 item1->AddGrowableRow( 1 );
1216 wxFlexGridSizer *item2 =
new wxFlexGridSizer( 3, 0, 0 );
1218 wxStaticText *item3 =
new wxStaticText( parent, ID_TEXT, wxT(
"Plugin file:"), wxDefaultPosition, wxDefaultSize, 0 );
1219 item2->Add( item3, 0, wxALL, 5 );
1221 wxTextCtrl *item4 =
new wxTextCtrl( parent, ID_IC_DEC_PLUGIN_FILE, wxT(
""), wxDefaultPosition, wxSize(80,-1), wxTE_READONLY );
1222 item2->Add( item4, 0, wxGROW|wxALL, 5 );
1224 wxButton *item5 =
new wxButton( parent, ID_BROWSE_IC_DEC_PLUGIN, wxT(
"Browse..."), wxDefaultPosition, wxDefaultSize, 0 );
1225 item2->Add( item5, 0, wxALIGN_CENTER|wxALL, 5 );
1227 wxStaticText *item6 =
new wxStaticText( parent, ID_TEXT, wxT(
"HDB file:"), wxDefaultPosition, wxDefaultSize, 0 );
1228 item2->Add( item6, 0, wxALL, 5 );
1230 wxTextCtrl *item7 =
new wxTextCtrl( parent, ID_IC_DEC_HDB_FILE, wxT(
""), wxDefaultPosition, wxSize(80,-1), 0 );
1231 item2->Add( item7, 0, wxGROW|wxALL, 5 );
1233 wxButton *item8 =
new wxButton( parent, ID_BROWSE_IC_DEC_HDB, wxT(
"Browse..."), wxDefaultPosition, wxDefaultSize, 0 );
1234 item2->Add( item8, 0, wxALIGN_CENTER|wxALL, 5 );
1236 wxStaticText *item9 =
new wxStaticText( parent, ID_TEXT, wxT(
"Plugin name:"), wxDefaultPosition, wxDefaultSize, 0 );
1237 item2->Add( item9, 0, wxALL, 5 );
1239 wxTextCtrl *item10 =
new wxTextCtrl( parent, ID_IC_DEC_PLUGIN_NAME, wxT(
""), wxDefaultPosition, wxSize(80,-1), wxTE_READONLY );
1240 item2->Add( item10, 0, wxGROW|wxALL, 5 );
1242 item2->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 );
1244 wxStaticText *item11 =
new wxStaticText( parent, ID_TEXT, wxT(
"Description:"), wxDefaultPosition, wxDefaultSize, 0 );
1245 item2->Add( item11, 0, wxALL, 5 );
1247 wxTextCtrl *item12 =
new wxTextCtrl( parent, ID_IC_DEC_PLUGIN_DESC, wxT(
""), wxDefaultPosition, wxSize(320,80), wxTE_MULTILINE|wxTE_READONLY );
1248 item2->Add( item12, 0, wxGROW|wxALL, 5 );
1250 item1->Add( item2, 0, wxFIXED_MINSIZE|wxGROW|wxALL, 5 );
1252 wxFlexGridSizer *item13 =
new wxFlexGridSizer( 1, 0, 0 );
1253 item13->AddGrowableCol( 0 );
1254 item13->AddGrowableRow( 1 );
1256 wxStaticText *item14 =
new wxStaticText( parent, ID_TEXT, wxT(
"Plugin parameters:"), wxDefaultPosition, wxDefaultSize, 0 );
1257 item13->Add( item14, 0, wxALL, 5 );
1259 wxListCtrl *item15 =
new wxListCtrl( parent, ID_PARAMETER_LIST, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
1260 item13->Add( item15, 0, wxGROW|wxALL, 5 );
1262 wxBoxSizer *item16 =
new wxBoxSizer( wxHORIZONTAL );
1264 wxStaticText *item17 =
new wxStaticText( parent, ID_TEXT, wxT(
"New value:"), wxDefaultPosition, wxDefaultSize, 0 );
1265 item16->Add( item17, 0, wxALIGN_CENTER|wxALL, 5 );
1267 wxTextCtrl *item18 =
new wxTextCtrl( parent, ID_PARAMETER_VALUE, wxT(
""), wxDefaultPosition, wxSize(200,-1), 0 );
1268 item16->Add( item18, 0, wxALIGN_CENTER|wxALL, 5 );
1270 wxButton *item19 =
new wxButton( parent, ID_SET_VALUE, wxT(
"Set"), wxDefaultPosition, wxDefaultSize, 0 );
1271 item16->Add( item19, 0, wxALIGN_CENTER|wxALL, 5 );
1273 item13->Add( item16, 0, wxALIGN_CENTER, 5 );
1275 item1->Add( item13, 0, wxFIXED_MINSIZE|wxGROW|wxALL, 5 );
1277 item0->Add( item1, 0, wxGROW|wxALL, 5 );
1281 parent->SetSizer( item0 );
1283 item0->SetSizeHints( parent );
1291 wxFlexGridSizer *item0 =
new wxFlexGridSizer( 1, 0, 0 );
1292 item0->AddGrowableCol( 0 );
1293 item0->AddGrowableRow( 0 );
1295 wxListCtrl *item1 =
new wxListCtrl( parent, ID_IU_LIST, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
1296 item0->Add( item1, 0, wxGROW|wxALL, 5 );
1298 wxBoxSizer *buttonSizer =
new wxBoxSizer( wxHORIZONTAL );
1299 wxButton *autoSelButton =
new wxButton( parent, ID_AUTO_SELECT_IMPL, wxT(
"Auto Select Implementations"), wxDefaultPosition, wxDefaultSize, 0 );
1300 buttonSizer->Add( autoSelButton, 0, wxALL, 5 );
1302 wxButton *item2 =
new wxButton( parent, ID_SELECT_IU_IMPL, wxT(
"Select implementation..."), wxDefaultPosition, wxDefaultSize, 0 );
1303 buttonSizer->Add( item2, 0, wxALL, 5 );
1305 item0->Add( buttonSizer, 0, wxALL, 5 );
1309 parent->SetSizer( item0 );
1311 item0->SetSizeHints( parent );