00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "dlgeditprofile.h"
00026 #include "profilemanager.h"
00027 #include <wx/file.h>
00028 #include <wx/radiobut.h>
00029
00030 namespace WDS
00031 {
00032
00033 BEGIN_EVENT_TABLE(CDlgEditProfile, wxDialog)
00034 EVT_BUTTON( IDC_BTN_CSV, CDlgEditProfile::OnBtnTerrain )
00035 EVT_BUTTON( IDC_BTN_DAT, CDlgEditProfile::OnBtnCities )
00036 EVT_BUTTON( wxID_OK, CDlgEditProfile::OnOK )
00037 EVT_RADIOBUTTON( IDC_RB_DAT, CDlgEditProfile::OnRbDAT )
00038 EVT_RADIOBUTTON( IDC_RB_PHPMAP, CDlgEditProfile::OnRbPhpmap )
00039 END_EVENT_TABLE()
00040
00041
00042
00043
00044
00045 CDlgEditProfile::CDlgEditProfile( wxWindow *pParent, int type, CProfile* pProfile )
00046 : wxDialog(pParent, -1,
00047 (type==ADD?"Neues Profil - WDSMap":"Profil bearbeiten - WDSMap"),
00048 wxDefaultPosition, wxSize(400, 300), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER ),
00049 m_pProfile(pProfile)
00050 {
00051
00052
00053 wxBoxSizer *sTop = new wxBoxSizer( wxVERTICAL );
00054
00055
00056 wxStaticBox *staticBox = new wxStaticBox( this, -1, "Profil" );
00057 wxStaticBoxSizer *sProfile = new wxStaticBoxSizer( staticBox, wxVERTICAL );
00058
00059
00060 staticBox = new wxStaticBox( this, -1, "phpmap Account" );
00061 wxStaticBoxSizer *sPhpmap = new wxStaticBoxSizer( staticBox, wxVERTICAL );
00062 wxFlexGridSizer *sGrid = new wxFlexGridSizer( 3, 2, 5, 5 );
00063 sGrid->AddGrowableCol(1);
00064 sPhpmap->Add( sGrid, 1, wxALIGN_CENTER | wxEXPAND | wxALL, 5 );
00065
00066
00067 wxBoxSizer *sName = new wxBoxSizer( wxHORIZONTAL );
00068 wxBoxSizer *sCSV = new wxBoxSizer( wxHORIZONTAL );
00069 wxBoxSizer *sDAT = new wxBoxSizer( wxHORIZONTAL );
00070
00071
00072 wxBoxSizer *sButtons = new wxBoxSizer( wxHORIZONTAL );
00073
00074
00075
00076 wxStaticText *pLblName = new wxStaticText( this, -1, "Name" );
00077 m_pEdtName = new wxTextCtrl ( this, IDC_EDT_NAME, "Server 1 - Eisige Winde" );
00078
00079 wxStaticText *pLblCSV = new wxStaticText( this, -1, "Terrain Datei ( *.csv )" );
00080 m_pEdtCSV = new wxTextCtrl ( this, IDC_EDT_CSV, "" );
00081 m_pBtnCSV = new wxButton( this, IDC_BTN_CSV, "...", wxDefaultPosition, wxSize(25, -1) );
00082
00083 wxRadioButton *pRbDAT = new wxRadioButton( this, IDC_RB_DAT, "Stadt Datei ( *.dat )",
00084 wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
00085 m_pEdtDAT = new wxTextCtrl ( this, IDC_EDT_DAT, "" );
00086 m_pBtnDAT = new wxButton( this, IDC_BTN_DAT, "...", wxDefaultPosition, wxSize(25, -1) );
00087
00088 m_pRbPhpmap = new wxRadioButton( this, IDC_RB_PHPMAP, "Daten von phpmap Server empfangen" );
00089
00090
00091
00092
00093 wxStaticText *pLblURL = new wxStaticText( this, -1, "Server URL" );
00094 m_pEdtServer = new wxTextCtrl ( this, IDC_EDT_SERVER, "" );
00095
00096 wxStaticText *pLblUser = new wxStaticText( this, -1, "User" );
00097 m_pEdtUser = new wxTextCtrl ( this, IDC_EDT_USER, "" );
00098
00099 wxStaticText *pLblPassword = new wxStaticText( this, -1, "Passwort" );
00100 m_pEdtPassword = new wxTextCtrl ( this, IDC_EDT_PASSWORD, "",
00101 wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD );
00102
00103
00104
00105 wxButton* pBtnOk = new wxButton( this, wxID_OK, "OK" );
00106 wxButton* pBtnCancel = new wxButton( this, wxID_CANCEL, "Abbrechen" );
00107
00108 sButtons->Add( pBtnCancel, 0, wxALIGN_CENTER | wxRIGHT, 5);
00109 sButtons->Add( pBtnOk , 0, wxALIGN_CENTER, 0);
00110
00111
00112
00113 sName->Add( pLblName , 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5 );
00114 sName->Add( m_pEdtName, 1, wxALIGN_CENTER_VERTICAL, 0 );
00115
00116 sCSV ->Add( pLblCSV , 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5 );
00117 sCSV ->Add( m_pEdtCSV , 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5 );
00118 sCSV ->Add( m_pBtnCSV , 0, wxALIGN_CENTER_VERTICAL, 0 );
00119
00120 sDAT ->Add( pRbDAT , 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5 );
00121 sDAT ->Add( m_pEdtDAT , 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5 );
00122 sDAT ->Add( m_pBtnDAT , 0, wxALIGN_CENTER_VERTICAL, 0 );
00123
00124 sProfile->Add( sName , 1, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 5 );
00125 sProfile->Add( sCSV , 1, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 5 );
00126 sProfile->Add( sDAT , 1, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 5 );
00127 sProfile->Add( m_pRbPhpmap, 1, wxALIGN_CENTER_VERTICAL | wxEXPAND | wxALL, 5 );
00128
00129
00130
00131
00132
00133 sGrid->Add( pLblURL , 0, wxALIGN_CENTER_VERTICAL, 0 );
00134 sGrid->Add( m_pEdtServer , 1, wxALIGN_CENTER_VERTICAL | wxEXPAND, 0 );
00135
00136 sGrid->Add( pLblUser , 0, wxALIGN_CENTER_VERTICAL, 0 );
00137 sGrid->Add( m_pEdtUser , 1, wxALIGN_CENTER_VERTICAL | wxEXPAND, 0 );
00138
00139 sGrid->Add( pLblPassword , 0, wxALIGN_CENTER_VERTICAL, 0 );
00140 sGrid->Add( m_pEdtPassword, 1, wxALIGN_CENTER_VERTICAL | wxEXPAND, 0 );
00141
00142
00143
00144 sTop->Add( sProfile, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 10 );
00145 sTop->Add( sPhpmap , 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 10 );
00146 sTop->Add( sButtons, 0, wxALIGN_RIGHT | wxALL, 10 );
00147
00148
00149
00150 m_pEdtName ->SetToolTip( "Gib eine Beschreibung für das Profil ein wie z.B. \"Server 1 - Eisige Winde\"." );
00151 m_pEdtCSV ->SetToolTip( "Wähle eine CSV-Datei, die die Map-Informationen enthält." );
00152 m_pEdtDAT ->SetToolTip( "Wähle eine DAT-Datei, die alle Städte, Einheiten usw. enthält." );
00153 m_pBtnCSV ->SetToolTip( "Nach CSV Datei suchen." );
00154 m_pBtnDAT ->SetToolTip( "Nach DAT Datei suchen." );
00155
00156 m_pEdtServer ->SetToolTip( "Gib die Server URL ein, mit der man die phpmap erreichen kann.\n"
00157 "Beispiel: http://www.server.de/phpmap/map.php\n"
00158 "Hinweis: Du kannst die URL einfach per Copy&Paste aus deinem Browser kopieren.");
00159 m_pEdtUser ->SetToolTip( "Gib den Benutzernamen von deinem phpmap-Account ein." );
00160 m_pEdtPassword ->SetToolTip( "Gib das Passwort deines phpmap-Accounts ein." );
00161
00162
00163 SetAutoLayout( true );
00164 SetSizer( sTop );
00165
00166 sTop->SetSizeHints( this );
00167
00168
00169 SetClientSize( 500, GetSize().GetHeight() );
00170
00171 pBtnOk->SetFocus( );
00172 pBtnOk->SetDefault( );
00173
00174
00175 if ( type == ADD ) {
00176 pRbDAT->SetValue( true );
00177 m_pRbPhpmap->SetValue( false );
00178
00179 m_pEdtServer ->Disable();
00180 m_pEdtUser ->Disable();
00181 m_pEdtPassword->Disable();
00182
00183 m_pEdtDAT->Enable();
00184 m_pBtnDAT->Enable();
00185 } else {
00186
00187 m_pEdtName->SetValue( m_pProfile->GetName() );
00188 m_pEdtCSV ->SetValue( m_pProfile->GetMap () );
00189 m_pEdtDAT ->SetValue( m_pProfile->GetDat () );
00190 pRbDAT->SetValue( !m_pProfile->GetUsePhpmap() );
00191 m_pRbPhpmap->SetValue( m_pProfile->GetUsePhpmap() );
00192
00193 m_pEdtServer ->SetValue( m_pProfile->GetServer() );
00194 m_pEdtUser ->SetValue( m_pProfile->GetUser () );
00195 m_pEdtPassword->SetValue( m_pProfile->GetPassword() );
00196
00197 if ( m_pProfile->GetUsePhpmap() ) {
00198 m_pEdtServer ->Enable();
00199 m_pEdtUser ->Enable();
00200 m_pEdtPassword->Enable();
00201
00202 m_pEdtDAT->Disable();
00203 m_pBtnDAT->Disable();
00204 } else {
00205 m_pEdtServer ->Disable();
00206 m_pEdtUser ->Disable();
00207 m_pEdtPassword->Disable();
00208
00209 m_pEdtDAT->Enable();
00210 m_pBtnDAT->Enable();
00211 }
00212 }
00213 }
00214
00215 CDlgEditProfile::~CDlgEditProfile()
00216 {
00217
00218 }
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228 bool CDlgEditProfile::ValidateFiles( )
00229 {
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291 return true;
00292 }
00293
00294 wxString CDlgEditProfile::GetServer( )
00295 {
00296
00297
00298
00299 wxString result;
00300 wxString tmp = m_pEdtServer->GetValue().Strip();
00301
00302
00303 int http = tmp.First("://");
00304 if ( http != -1 ) {
00305 tmp = tmp.SubString( http+3, tmp.Length() );
00306 }
00307
00308 int port = tmp.First(":");
00309 int rest = tmp.First("/");
00310
00311 if ( rest != -1 ) {
00312 if ( port != -1 ) {
00313 result = tmp;
00314 } else {
00315 result = tmp.BeforeFirst('/');
00316 result += ":80/";
00317 result += tmp.AfterFirst('/');
00318 }
00319 } else {
00320
00321
00322 if ( port != -1 ) {
00323 result = tmp;
00324 result += "/";
00325 } else {
00326 result = tmp;
00327 result += ":80/";
00328 }
00329 }
00330
00331
00332 result = result.BeforeLast('/') + "/";
00333
00334
00335 return result;
00336 }
00337
00338
00339
00340
00341 void CDlgEditProfile::OnBtnTerrain(wxCommandEvent &event)
00342 {
00343 wxFileDialog dlgFile( this, "CSV Datei wählen", "", "", "CVS Dateien (*.csv)|*.csv|Alle Dateien (*.*)|*.*",
00344 wxOPEN | wxHIDE_READONLY );
00345 if( dlgFile.ShowModal() == wxID_OK ) {
00346 wxString strPath = dlgFile.GetPath();
00347 m_pEdtCSV->SetValue( strPath );
00348
00349
00350
00351 wxString strFile = strPath.BeforeLast( '.' ) + ".dat";
00352 if( wxFile::Exists( strFile ) ) {
00353 m_pEdtDAT->SetValue( strFile );
00354 }
00355 }
00356 }
00357
00358 void CDlgEditProfile::OnBtnCities(wxCommandEvent &event)
00359 {
00360 wxFileDialog dlgFile( this, "DAT Datei wählen", "", "", "DAT Dateien (*.dat)|*.dat|Alle Dateien (*.*)|*.*",
00361 wxOPEN | wxHIDE_READONLY );
00362 if( dlgFile.ShowModal() == wxID_OK )
00363 {
00364 wxString strPath = dlgFile.GetPath();
00365
00366 m_pEdtDAT->SetValue( strPath );
00367 }
00368 }
00369
00370 void CDlgEditProfile::OnOK( wxCommandEvent &event )
00371 {
00372 if( !ValidateFiles() )
00373 {
00374 wxMessageBox( "Die DAT-Datei passt nicht zur CSV-Datei", "Fehler - WDSMap" );
00375 return;
00376 }
00377
00378 m_pProfile->SetName ( GetName() );
00379 m_pProfile->SetMap ( GetTerrainFile() );
00380 m_pProfile->SetDat ( GetCitiesFile() );
00381 m_pProfile->SetUsePhpmap( GetUsePhpmap() );
00382 m_pProfile->SetFogOfWar ( GetUsePhpmap() );
00383 m_pProfile->SetServer ( GetServer() );
00384 m_pProfile->SetUser ( GetUser() );
00385 m_pProfile->SetPassword ( GetPassword() );
00386
00387 event.Skip( );
00388 }
00389
00390 void CDlgEditProfile::OnRbDAT( wxCommandEvent &event )
00391 {
00392 m_pEdtServer ->Disable();
00393 m_pEdtUser ->Disable();
00394 m_pEdtPassword->Disable();
00395
00396 m_pEdtDAT->Enable();
00397 m_pBtnDAT->Enable();
00398 }
00399
00400 void CDlgEditProfile::OnRbPhpmap( wxCommandEvent &event )
00401 {
00402 m_pEdtServer ->Enable();
00403 m_pEdtUser ->Enable();
00404 m_pEdtPassword->Enable();
00405
00406 m_pEdtDAT->Disable();
00407 m_pBtnDAT->Disable();
00408 }
00409
00410
00411
00412
00413 }
00414
00415