Main Page   Class Hierarchy   Compound List   File List   Compound Members  

dialogs.cpp

00001 /*
00002  * Purpose: All modal dialogs for AddressManager
00003  * Author:  Frank Buß
00004  * Created: 2002
00005  */
00006 
00007 // ==========================================================================
00008 // headers, declarations, constants
00009 // ==========================================================================
00010 
00011 #include "wx/wx.h"
00012 
00013 #include "wx/statline.h"
00014 #include "wx/minifram.h"
00015 
00016 #include "dialogs.h"
00017 
00018 #include "wx/arrimpl.cpp"
00019 WX_DEFINE_OBJARRAY(ColumnFieldArray);
00020 
00021 // --------------------------------------------------------------------------
00022 // constants
00023 // --------------------------------------------------------------------------
00024 extern char * addresses_xpm[];
00025 
00026 // IDs for the controls and the menu commands
00027 enum
00028 {
00029     ID_LISTBOX = 1,
00030     ID_NEW_BUTTON,
00031     ID_RENAME_BUTTON,
00032     ID_UP_BUTTON,
00033     ID_REMOVE_BUTTON,
00034     ID_DOWN_BUTTON
00035 };
00036 
00037 // --------------------------------------------------------------------------
00038 // event tables and other macros for wxWindows
00039 // --------------------------------------------------------------------------
00040 
00041 // Event tables
00042 BEGIN_EVENT_TABLE(ColumnDialog, wxDialog)
00043     EVT_LISTBOX(ID_LISTBOX, ColumnDialog::OnListBox)
00044     EVT_BUTTON(ID_NEW_BUTTON, ColumnDialog::OnNewButton)
00045     EVT_BUTTON(ID_RENAME_BUTTON, ColumnDialog::OnRenameButton)
00046     EVT_BUTTON(ID_UP_BUTTON, ColumnDialog::OnUpButton)
00047     EVT_BUTTON(ID_REMOVE_BUTTON, ColumnDialog::OnRemoveButton)
00048     EVT_BUTTON(ID_DOWN_BUTTON, ColumnDialog::OnDownButton)
00049 END_EVENT_TABLE()
00050 
00051 
00052 // ==========================================================================
00053 // implementation
00054 // ==========================================================================
00055 
00056 // --------------------------------------------------------------------------
00057 // ColumnDialog
00058 // --------------------------------------------------------------------------
00059 
00060 
00061 ColumnField::ColumnField(wxString name, int oldIndex, int oldWidth)
00062 {
00063     m_name = name;
00064     m_oldIndex = oldIndex;
00065     m_oldWidth = oldWidth;
00066 }
00067 
00068 bool ColumnField::isNew()
00069 {
00070     return m_oldIndex == -1;
00071 }
00072 
00073 int ColumnField::getOldIndex()
00074 {
00075     return m_oldIndex;
00076 }
00077 
00078 int ColumnField::getOldWidth()
00079 {
00080     return m_oldWidth;
00081 }
00082 
00083 wxString ColumnField::getName()
00084 {
00085     return m_name;
00086 }
00087 
00088 void ColumnField::setName(wxString name)
00089 {
00090     m_name = name;
00091 }
00092 
00093 
00094 ColumnDialog::ColumnDialog(wxWindow *parent, ColumnFieldArray& columns)
00095                  : wxDialog(parent, -1,
00096                             _("Tabellenkonfiguration"),
00097                             wxDefaultPosition,
00098                             wxDefaultSize,
00099                             wxDEFAULT_DIALOG_STYLE | wxDIALOG_MODAL)
00100 {
00101     m_columns = columns;
00102    
00103     // create and populate the list of columns
00104     m_listBox = new wxListBox( this, ID_LISTBOX,
00105         wxDefaultPosition,
00106         wxDefaultSize,
00107         0, NULL,
00108         wxLB_SINGLE | wxLB_NEEDED_SB | wxLB_HSCROLL );
00109 
00110     for (unsigned i = 0; i < m_columns.GetCount(); i++) {
00111         wxString name = m_columns[i].getName();
00112         m_listBox->Append(name, &m_columns[i]);
00113     }
00114 
00115     wxBoxSizer* topSizer = new wxBoxSizer(wxHORIZONTAL);
00116     topSizer->Add(new wxStaticText(this, -1, "Neue Tabellenspalte:"), 0, wxALIGN_CENTER | wxLEFT | wxTOP, 10);
00117     m_newColumnTextCtrl = new wxTextCtrl(this, -1);
00118     topSizer->Add(m_newColumnTextCtrl, 1, wxLEFT | wxTOP, 10);
00119     topSizer->Add(new wxButton(this, ID_NEW_BUTTON, "Hinzufügen"), 0, wxALIGN_RIGHT | wxLEFT | wxTOP | wxRIGHT, 10);
00120 
00121     wxBoxSizer* middleSizer = new wxBoxSizer(wxHORIZONTAL);
00122     middleSizer->Add(m_listBox, 0, wxLEFT | wxTOP | wxEXPAND, 10);
00123 
00124     wxBoxSizer* listButtonsSizer = new wxBoxSizer(wxVERTICAL);
00125     listButtonsSizer->Add(new wxButton(this, ID_UP_BUTTON, "/\\"), 0, wxLEFT | wxTOP | wxEXPAND, 10);
00126     listButtonsSizer->Add(new wxButton(this, ID_REMOVE_BUTTON, "Löschen"), 0, wxLEFT | wxTOP | wxEXPAND, 10);
00127     listButtonsSizer->Add(new wxButton(this, ID_DOWN_BUTTON, "\\/"), 0, wxLEFT | wxTOP | wxEXPAND, 10);
00128 
00129     middleSizer->Add(listButtonsSizer, 0, wxCENTRE);
00130 
00131     middleSizer->Add(CreateTextSizer(_("Geben Sie im Textfeld\n"
00132                                         "'Neue Tabellenspalte' den\n"
00133                                         "Namen einer neuen\n"
00134                                         "Tabellenspalte ein und klicken\n"
00135                                         "auf 'Hinzufügen' wenn Sie eine\n"
00136                                         "neue Tabellenspalte erstellen\n"
00137                                         "möchten, oder wählen Sie in der\n"
00138                                         "Liste links eine bestehende\n"
00139                                         "Tabellenspalte aus, wenn Sie\n"
00140                                         "diese verschieben, löschen\n"
00141                                         "oder umbennen möchten.")),
00142                                   0, wxLEFT | wxTOP | wxRIGHT, 10);
00143 
00144     wxBoxSizer* bottomSizer = new wxBoxSizer(wxHORIZONTAL);
00145     bottomSizer->Add(new wxStaticText(this, -1, "Gewählte Tabellenspalte:"), 0, wxALIGN_CENTER | wxLEFT | wxTOP, 10);
00146     m_editColumnTextCtrl = new wxTextCtrl(this, -1);
00147     m_editColumnTextCtrl->Enable(false);
00148     bottomSizer->Add(m_editColumnTextCtrl, 1, wxALIGN_CENTER | wxLEFT | wxTOP, 10);
00149     m_editButton = new wxButton(this, ID_RENAME_BUTTON, "Umbenennen");
00150     m_editButton->Enable(false);
00151     bottomSizer->Add(m_editButton, 0, wxALIGN_RIGHT | wxLEFT | wxTOP | wxRIGHT, 10);
00152 
00153     wxBoxSizer* okCancelSizer = new wxBoxSizer(wxHORIZONTAL);
00154     okCancelSizer->Add(new wxButton(this, wxID_OK, "OK"), 0, wxTOP, 10);
00155     okCancelSizer->Add(new wxButton(this, wxID_CANCEL, "Abbrechen"), 0, wxALL, 10);
00156 
00157     wxBoxSizer *topsizer = new wxBoxSizer(wxVERTICAL);
00158     topsizer->Add(topSizer, 0, wxEXPAND);
00159     topsizer->Add(middleSizer, 1, wxEXPAND);
00160     topsizer->Add(bottomSizer, 0, wxEXPAND);
00161     topsizer->Add(okCancelSizer, 0, wxALIGN_RIGHT);
00162 
00163     SetAutoLayout(TRUE);     // tell dialog to use sizer
00164     SetSizer(topsizer);      // actually set the sizer
00165 
00166     topsizer->Fit(this);            // set size to minimum size as calculated by the sizer
00167     topsizer->SetSizeHints(this);   // set size hints to honour mininum size
00168 
00169     Centre(wxBOTH | wxCENTRE_ON_SCREEN);
00170 }
00171 
00172 ColumnDialog::~ColumnDialog()
00173 {
00174     for (int i = 0; i < m_listBox->GetCount(); i++) {
00175         ColumnField* pField = (ColumnField*)m_listBox->GetClientData(i);
00176         if (pField->isNew()) delete pField;
00177     }
00178 }
00179 
00180 void ColumnDialog::OnListBox(wxCommandEvent& event)
00181 {
00182     int sel = event.GetSelection();
00183     if (sel != -1) {
00184         m_editColumnTextCtrl->SetValue(m_listBox->GetString(sel));
00185         m_editColumnTextCtrl->Enable(true);
00186         m_editButton->Enable(true);
00187     }
00188 }
00189 
00190 void ColumnDialog::OnNewButton(wxCommandEvent &event)
00191 {
00192     wxString name = m_newColumnTextCtrl->GetValue();
00193     name.Trim(true);
00194     name.Trim(false);
00195     if (name.Length() == 0) {
00196         wxMessageDialog dialog(this, "Der Name einer Tabellenspalte kann nicht leer sein.",
00197             "Address Manager", wxOK | wxICON_INFORMATION);
00198         dialog.ShowModal();
00199         return;
00200     }
00201     for (int i = 0; i < m_listBox->GetCount(); i++) {
00202         if (m_listBox->GetString(i) == name) {
00203             wxMessageDialog dialog(this, "Es existiert bereits eine Tabellenspalte gleichen Namens.",
00204                 "Address Manager", wxOK | wxICON_INFORMATION);
00205             dialog.ShowModal();
00206             return;
00207         }
00208     }
00209     m_listBox->Append(name, new ColumnField(name));
00210     m_listBox->Select(m_listBox->GetCount() - 1);
00211     m_editColumnTextCtrl->SetValue(name);
00212     m_editColumnTextCtrl->Enable(true);
00213     m_editButton->Enable(true);
00214 }
00215 
00216 void ColumnDialog::OnRenameButton(wxCommandEvent &event)
00217 {
00218     int sel = m_listBox->GetSelection();
00219     if (sel != -1) {
00220         wxString name = m_editColumnTextCtrl->GetValue();
00221         name.Trim(true);
00222         name.Trim(false);
00223         if (name.Length() == 0) {
00224             wxMessageDialog dialog(this, "Der Name einer Tabellenspalte kann nicht leer sein.",
00225                 "Address Manager", wxOK | wxICON_INFORMATION);
00226             dialog.ShowModal();
00227             return;
00228         }
00229         for (int i = 0; i < m_listBox->GetCount(); i++) {
00230             if (i != sel && m_listBox->GetString(i) == name) {
00231                 wxMessageDialog dialog(this, "Es existiert bereits eine Tabellenspalte gleichen Namens.",
00232                     "Address Manager", wxOK | wxICON_INFORMATION);
00233                 dialog.ShowModal();
00234                 return;
00235             }
00236         }
00237         m_listBox->SetString(sel, name);
00238         ColumnField* pField = (ColumnField*) m_listBox->GetClientData(sel);
00239         pField->setName(name);
00240     }
00241 }
00242 
00243 void ColumnDialog::OnUpButton(wxCommandEvent &event)
00244 {
00245     int sel = m_listBox->GetSelection();
00246     if (sel > 0) {
00247         void* pClientData = m_listBox->GetClientData(sel - 1);
00248         wxString name = m_listBox->GetString(sel - 1);
00249         m_listBox->SetClientData(sel - 1, m_listBox->GetClientData(sel));
00250         m_listBox->SetString(sel - 1, m_listBox->GetString(sel));
00251         m_listBox->SetClientData(sel, pClientData);
00252         m_listBox->SetString(sel, name);
00253         m_listBox->Select(sel - 1);
00254     }
00255 }
00256 
00257 void ColumnDialog::OnRemoveButton(wxCommandEvent &event)
00258 {
00259     int sel = m_listBox->GetSelection();
00260     if (sel != -1) {
00261         if (m_listBox->GetCount() == 1) {
00262             wxMessageDialog dialog(this, "Es muß mindestens eine Tabellenspalte vorhanden sein.",
00263                 "Address Manager", wxOK | wxICON_INFORMATION);
00264             dialog.ShowModal();
00265             return;
00266         }
00267         ColumnField* pField = (ColumnField*) m_listBox->GetClientData(sel);
00268         m_listBox->Delete(sel);
00269         m_editColumnTextCtrl->SetValue("");
00270         m_editColumnTextCtrl->Enable(false);
00271         m_editButton->Enable(false);
00272         if (pField->isNew()) delete pField;
00273     }
00274 }
00275 
00276 void ColumnDialog::OnDownButton(wxCommandEvent &event)
00277 {
00278     int sel = m_listBox->GetSelection();
00279     if (sel != -1 && sel < m_listBox->GetCount() - 1) {
00280         void* pClientData = m_listBox->GetClientData(sel + 1);
00281         wxString name = m_listBox->GetString(sel + 1);
00282         m_listBox->SetClientData(sel + 1, m_listBox->GetClientData(sel));
00283         m_listBox->SetString(sel + 1, m_listBox->GetString(sel));
00284         m_listBox->SetClientData(sel, pClientData);
00285         m_listBox->SetString(sel, name);
00286         m_listBox->Select(sel + 1);
00287     }
00288 }
00289 
00290 
00291 ColumnFieldArray ColumnDialog::getNewColumns()
00292 {
00293     ColumnFieldArray columns;
00294     for (int i = 0; i < m_listBox->GetCount(); i++) {
00295         columns.Add(*((ColumnField*)m_listBox->GetClientData(i)));
00296     }
00297     return columns;
00298 }
00299 
00300 
00301 // --------------------------------------------------------------------------
00302 // SortDialog
00303 // --------------------------------------------------------------------------
00304 
00305 BEGIN_EVENT_TABLE(SortDialog, wxDialog)
00306     EVT_BUTTON(wxID_OK, SortDialog::OnOK)
00307 END_EVENT_TABLE()
00308 
00309 
00310 SortDialog::SortDialog(wxWindow *parent, ColumnFieldArray& columns)
00311                  : wxDialog(parent, -1,
00312                             _("Sortieren"),
00313                             wxDefaultPosition,
00314                             wxDefaultSize,
00315                             wxDEFAULT_DIALOG_STYLE | wxDIALOG_MODAL)
00316 {
00317     m_columns = columns;
00318    
00319     // create and populate the list of columns
00320     m_sort1Choice = new wxChoice(this, -1, wxDefaultPosition, wxDefaultSize, 0, NULL);
00321     m_sort2Choice = new wxChoice(this, -1, wxDefaultPosition, wxDefaultSize, 0, NULL);
00322     m_sort3Choice = new wxChoice(this, -1, wxDefaultPosition, wxDefaultSize, 0, NULL);
00323 
00324     for (unsigned i = 0; i < m_columns.GetCount(); i++) {
00325         wxString name = m_columns[i].getName();
00326         m_sort1Choice->Append(name, &m_columns[i]);
00327         m_sort2Choice->Append(name, &m_columns[i]);
00328         m_sort3Choice->Append(name, &m_columns[i]);
00329     }
00330     m_sort1Choice->SetSelection(0);
00331     m_sort2Choice->SetSelection(0);
00332     m_sort3Choice->SetSelection(0);
00333 
00334     wxBoxSizer* sort1HeadSizer = new wxBoxSizer(wxHORIZONTAL);
00335     wxBoxSizer* sort1ContentSizer = new wxBoxSizer(wxHORIZONTAL);
00336     sort1HeadSizer->Add(new wxStaticText(this, -1, "Sortieren nach"), 0, wxCENTER | wxLEFT | wxTOP, 10);
00337     sort1HeadSizer->Add(new wxStaticLine(this, -1), 1, wxCENTER | wxLEFT | wxRIGHT | wxTOP, 10);
00338     sort1ContentSizer->Add(m_sort1Choice, 0, wxLEFT | wxTOP, 10);
00339     m_sort1CheckboxUp = new wxRadioButton(this, -1, "Aufsteigend", wxDefaultPosition, wxDefaultSize, wxRB_GROUP);
00340     m_sort1CheckboxDown = new wxRadioButton(this, -1, "Absteigend");
00341     wxBoxSizer* rb1Sizer = new wxBoxSizer(wxVERTICAL);
00342     rb1Sizer->Add(m_sort1CheckboxUp, 0, wxTOP, 5);
00343     rb1Sizer->Add(m_sort1CheckboxDown, 0, wxTOP, 5);
00344     sort1ContentSizer->Add(rb1Sizer, 0, wxLEFT | wxRIGHT, 10);
00345 
00346     wxBoxSizer* sort2HeadSizer = new wxBoxSizer(wxHORIZONTAL);
00347     wxBoxSizer* sort2ContentSizer = new wxBoxSizer(wxHORIZONTAL);
00348     sort2HeadSizer->Add(new wxStaticText(this, -1, "Anschließend nach"), 0, wxCENTER | wxLEFT | wxTOP, 10);
00349     sort2HeadSizer->Add(new wxStaticLine(this, -1), 1, wxCENTER | wxLEFT | wxRIGHT | wxTOP, 10);
00350     sort2ContentSizer->Add(m_sort2Choice, 0, wxLEFT | wxTOP, 10);
00351     m_sort2CheckboxUp = new wxRadioButton(this, -1, "Aufsteigend", wxDefaultPosition, wxDefaultSize, wxRB_GROUP);
00352     m_sort2CheckboxDown = new wxRadioButton(this, -1, "Absteigend");
00353     wxBoxSizer* rb2Sizer = new wxBoxSizer(wxVERTICAL);
00354     rb2Sizer->Add(m_sort2CheckboxUp, 0, wxTOP, 5);
00355     rb2Sizer->Add(m_sort2CheckboxDown, 0, wxTOP, 5);
00356     sort2ContentSizer->Add(rb2Sizer, 0, wxLEFT | wxRIGHT, 10);
00357 
00358     wxBoxSizer* sort3HeadSizer = new wxBoxSizer(wxHORIZONTAL);
00359     wxBoxSizer* sort3ContentSizer = new wxBoxSizer(wxHORIZONTAL);
00360     sort3HeadSizer->Add(new wxStaticText(this, -1, "Zuletzt nach"), 0, wxCENTER | wxLEFT | wxTOP, 10);
00361     sort3HeadSizer->Add(new wxStaticLine(this, -1), 1, wxCENTER | wxLEFT | wxRIGHT | wxTOP, 10);
00362     sort3ContentSizer->Add(m_sort3Choice, 0, wxLEFT | wxTOP, 10);
00363     m_sort3CheckboxUp = new wxRadioButton(this, -1, "Aufsteigend", wxDefaultPosition, wxDefaultSize, wxRB_GROUP);
00364     m_sort3CheckboxDown = new wxRadioButton(this, -1, "Absteigend");
00365     wxBoxSizer* rb3Sizer = new wxBoxSizer(wxVERTICAL);
00366     rb3Sizer->Add(m_sort3CheckboxUp, 0, wxTOP, 5);
00367     rb3Sizer->Add(m_sort3CheckboxDown, 0, wxTOP, 5);
00368     sort3ContentSizer->Add(rb3Sizer, 0, wxLEFT | wxRIGHT, 10);
00369 
00370     wxBoxSizer* okCancelSizer = new wxBoxSizer(wxHORIZONTAL);
00371     wxButton* okButton = new wxButton(this, wxID_OK, "OK");
00372     okButton->SetDefault();
00373     okCancelSizer->Add(okButton, 0, wxTOP, 10);
00374     okCancelSizer->Add(new wxButton(this, wxID_CANCEL, "Abbrechen"), 0, wxALL, 10);
00375 
00376     wxBoxSizer *topsizer = new wxBoxSizer(wxVERTICAL);
00377     topsizer->Add(sort1HeadSizer, 0, wxEXPAND);
00378     topsizer->Add(sort1ContentSizer, 0, wxLEFT | wxRIGHT, 10);
00379     topsizer->Add(sort2HeadSizer, 0, wxEXPAND);
00380     topsizer->Add(sort2ContentSizer, 0, wxLEFT | wxRIGHT, 10);
00381     topsizer->Add(sort3HeadSizer, 0, wxEXPAND);
00382     topsizer->Add(sort3ContentSizer, 0, wxLEFT | wxRIGHT, 10);
00383     topsizer->Add(okCancelSizer, 0, wxTOP | wxALIGN_RIGHT, 10);
00384 
00385     SetAutoLayout(TRUE);     // tell dialog to use sizer
00386     SetSizer(topsizer);      // actually set the sizer
00387 
00388     topsizer->Fit(this);            // set size to minimum size as calculated by the sizer
00389     topsizer->SetSizeHints(this);   // set size hints to honour mininum size
00390 
00391     Centre(wxBOTH | wxCENTRE_ON_SCREEN);
00392 }
00393 
00394 ColumnFieldArray SortDialog::getSortOrder()
00395 {
00396     ColumnFieldArray columns;
00397     int sel1 = m_sort1Choice->GetSelection();
00398     int sel2 = m_sort2Choice->GetSelection();
00399     int sel3 = m_sort3Choice->GetSelection();
00400     if (sel1 != 0) columns.Add(*((ColumnField*)m_sort1Choice->GetClientData(sel1)));
00401     if (sel2 != 0) columns.Add(*((ColumnField*)m_sort2Choice->GetClientData(sel2)));
00402     if (sel3 != 0) columns.Add(*((ColumnField*)m_sort3Choice->GetClientData(sel3)));
00403     return columns;
00404 }
00405 
00406 void SortDialog::OnOK(wxCommandEvent& event)
00407 {
00408     int sel1 = m_sort1Choice->GetSelection();
00409     int sel2 = m_sort2Choice->GetSelection();
00410     int sel3 = m_sort3Choice->GetSelection();
00411     if (sel1 == 0 && sel2 == 0 && sel3 == 0) {
00412         wxMessageDialog dialog(this, "Bitte wählen Sie zumindest eine Tabellenspalte, nach der sortiert werden soll,\n"
00413             "oder brechen Sie die Auswahl mit Klick auf die Abbrechen-Schaltfläche ab.",
00414             "Address Manager", wxOK | wxICON_INFORMATION);
00415         dialog.ShowModal();
00416         return;
00417     }
00418     if (sel2 != 0 && sel1 == 0) {
00419         wxMessageDialog dialog(this, "Bitte wählen Sie auch die Tabellenspalte aus, nach der zuerst sortiert wird,\n"
00420             "oder wählen Sie nur bei 'Sortieren nach' eine Tabellenspalte aus.",
00421             "Address Manager", wxOK | wxICON_INFORMATION);
00422         dialog.ShowModal();
00423         return;
00424     }
00425     if (sel3 != 0 && (sel1 == 0 || sel2 == 0)) {
00426         wxMessageDialog dialog(this, "Bitte wählen Sie auch die Tabellenspalte aus, nach der zuerst und als zweites sortiert wird,\n"
00427             "oder wählen Sie nur bei 'Sortieren nach' und / oder bei 'Anschließend nach' eine Tabellenspalte aus.",
00428             "Address Manager", wxOK | wxICON_INFORMATION);
00429         dialog.ShowModal();
00430         return;
00431     }
00432     if ((sel1 != 0 && sel1 == sel2) || (sel1 != 0 && sel1 == sel3) || (sel2 != 0 && sel2 == sel3)) {
00433         wxMessageDialog dialog(this, "Bitte wählen Sie nur unterschiedliche Tabellenspalten oder '(keine)' aus.",
00434             "Address Manager", wxOK | wxICON_INFORMATION);
00435         dialog.ShowModal();
00436         return;
00437     }
00438 
00439     wxDialog::OnOK(event);
00440 }
00441 
00442 
00443 // --------------------------------------------------------------------------
00444 // AddressManagerAboutDialog
00445 // --------------------------------------------------------------------------
00446 
00447 AddressManagerAboutDialog::AddressManagerAboutDialog(wxWindow *parent)
00448                : wxDialog(parent, -1,
00449                           _("Über Address Manager"),
00450                           wxDefaultPosition,
00451                           wxDefaultSize,
00452                           wxDEFAULT_DIALOG_STYLE | wxDIALOG_MODAL)
00453 {
00454     // layout components
00455     wxBitmap bmp = wxBitmap(addresses_xpm);
00456     wxStaticBitmap *sbmp = new wxStaticBitmap(this, -1, bmp);
00457     wxBoxSizer *vertSizer = new wxBoxSizer( wxVERTICAL );
00458     wxBoxSizer *picAndTextSizer = new wxBoxSizer( wxHORIZONTAL );
00459     picAndTextSizer->Add( sbmp, 0, wxCENTRE | wxTOP | wxLEFT, 10);
00460     picAndTextSizer->Add( CreateTextSizer(_("Address Manager Version 1.0\n\n"
00461                                   "(c) 2002 Frank Buß, fb@frank-buss.de")),
00462                                   0, wxCENTRE | wxTOP | wxLEFT | wxRIGHT, 10);
00463     vertSizer->Add(picAndTextSizer, 0);
00464     vertSizer->Add(CreateButtonSizer(wxOK), 0, wxCENTRE | wxALL, 10);
00465 
00466     // activate
00467     SetSizer(vertSizer);
00468     SetAutoLayout(true);
00469     vertSizer->SetSizeHints(this);
00470     vertSizer->Fit(this);
00471     Centre(wxBOTH | wxCENTRE_ON_SCREEN);
00472 }

Generated on Thu May 2 15:13:51 2002 for Wino by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001