Update of /cvsroot/darkeyetool/det/src/gui In directory sc8-pr-cvs1:/tmp/cvs-serv32734 Modified Files: KulturGUIwx.cpp PersonenKomponenteGUIwx.h PersonGUIPersonenKomponentewx.cpp ProfessionGUIwx.cpp RasseGUIwx.cpp Log Message: Auswahlen bei Char und SF implementiert Index: KulturGUIwx.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/KulturGUIwx.cpp,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** KulturGUIwx.cpp 28 Nov 2003 23:26:55 -0000 1.14 --- KulturGUIwx.cpp 5 Jan 2004 05:12:13 -0000 1.15 *************** *** 440,443 **** --- 440,444 ---- EVT_BUTTON (CHARPLUS, KulturGUIwx::OnCharPlus) EVT_BUTTON (CHARMINUS, KulturGUIwx::OnCharMinus) + EVT_BUTTON (CHARODER, KulturGUIwx::OnCharOder) EVT_LISTBOX (CHARLISTE, KulturGUIwx::OnCharListe) EVT_LISTBOX_DCLICK(CHARLISTE, KulturGUIwx::OnCharListeD) *************** *** 449,452 **** --- 450,454 ---- EVT_BUTTON (SFPLUS, KulturGUIwx::OnSFPlus) EVT_BUTTON (SFMINUS, KulturGUIwx::OnSFMinus) + EVT_BUTTON (SFODER, KulturGUIwx::OnSFOder) EVT_LISTBOX (SFLISTE, KulturGUIwx::OnSFListe) EVT_LISTBOX_DCLICK(SFLISTE, KulturGUIwx::OnSFListeD) *************** *** 707,710 **** --- 709,715 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.15 2004/01/05 05:12:13 vrandezo + // Auswahlen bei Char und SF implementiert + // // Revision 1.14 2003/11/28 23:26:55 vrandezo // Kopierenknopf Index: PersonenKomponenteGUIwx.h =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/PersonenKomponenteGUIwx.h,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** PersonenKomponenteGUIwx.h 5 Jan 2004 03:35:33 -0000 1.27 --- PersonenKomponenteGUIwx.h 5 Jan 2004 05:12:13 -0000 1.28 *************** *** 294,300 **** TALGESAMT, TALOPTIONEN, TALMODUS, CHARLISTE, MCHARLISTE, ! CHARWEG, CHARHINZU, CHARPLUS, CHARMINUS, SFLISTE, MSFLISTE, VSFLISTE, ! SFWEG, SFHINZU, SFPLUS, SFMINUS, VSFWEG, VSFHINZU, GPPLUS, GPMINUS, GPRECHNEN, NOTEBOOK, --- 294,300 ---- TALGESAMT, TALOPTIONEN, TALMODUS, CHARLISTE, MCHARLISTE, ! CHARWEG, CHARHINZU, CHARPLUS, CHARMINUS, CHARODER, SFLISTE, MSFLISTE, VSFLISTE, ! SFWEG, SFHINZU, SFPLUS, SFMINUS, VSFWEG, VSFHINZU, SFODER, GPPLUS, GPMINUS, GPRECHNEN, NOTEBOOK, *************** *** 635,638 **** --- 635,640 ---- spaltenSizer->Add(new wxButton(panel, CHARHINZU, "<", wxPoint(), wxSize(15, 20)), 0); spaltenSizer->Add(new wxBoxSizer(wxVERTICAL), 1); + spaltenSizer->Add(new wxButton(panel, CHARODER, "or", wxPoint(), wxSize(15, 20)), 0); + spaltenSizer->Add(new wxBoxSizer(wxVERTICAL), 1); spaltenSizer->Add(new wxButton(panel, CHARWEG, ">", wxPoint(), wxSize(15, 20)), 0); spaltenSizer->Add(new wxBoxSizer(wxVERTICAL), 2); *************** *** 654,660 **** zeilenSizer->Add(sonderfertigkeiten_, 1, wxEXPAND); wxBoxSizer* kontrollSizer = new wxBoxSizer(wxVERTICAL); ! kontrollSizer->Add(new wxBoxSizer(wxVERTICAL), 4); kontrollSizer->Add(new wxButton(panel, SFHINZU, "<", wxPoint(), wxSize(15, 20)), 0); kontrollSizer->Add(new wxBoxSizer(wxVERTICAL), 1); kontrollSizer->Add(new wxButton(panel, SFWEG, ">", wxPoint(), wxSize(15, 20)), 0); kontrollSizer->Add(new wxBoxSizer(wxVERTICAL), 2); --- 656,664 ---- zeilenSizer->Add(sonderfertigkeiten_, 1, wxEXPAND); wxBoxSizer* kontrollSizer = new wxBoxSizer(wxVERTICAL); ! kontrollSizer->Add(new wxBoxSizer(wxVERTICAL), 2); kontrollSizer->Add(new wxButton(panel, SFHINZU, "<", wxPoint(), wxSize(15, 20)), 0); kontrollSizer->Add(new wxBoxSizer(wxVERTICAL), 1); + kontrollSizer->Add(new wxButton(panel, SFODER, "or", wxPoint(), wxSize(15, 20)), 0); + kontrollSizer->Add(new wxBoxSizer(wxVERTICAL), 1); kontrollSizer->Add(new wxButton(panel, SFWEG, ">", wxPoint(), wxSize(15, 20)), 0); kontrollSizer->Add(new wxBoxSizer(wxVERTICAL), 2); *************** *** 1610,1621 **** void CharHinzu (const std::string& c) { DSA::CharakteristikumDefinition chdef = DSA::charakteristika()->Hole(c); ! DSA::Auswahl<DSA::Charakteristikum> a; ! a.IDHinzu(chdef.ID()); ! std::string s = _t("Dieses Charakteristikum braucht eine Spezifizierung.\nSoll diese vorgegeben sein, geben Sie sie bitte jetzt ein.\nSoll der Spieler selbst wählen, lassen Sie das Feld frei."); if (chdef.BrauchtSpezifizierung()) ! a.Kommentar(DSA::hole()->Text(s)); ! if (chdef.SchlechteEigenschaft()) a.WertHinzu(5); // TODO Konstante objekt_->charakteristika_.FuegeEin(a); --- 1614,1625 ---- void CharHinzu (const std::string& c) { DSA::CharakteristikumDefinition chdef = DSA::charakteristika()->Hole(c); ! DSA::Auswahl<DSA::Charakteristikum> a; ! a.IDHinzu(chdef.ID()); ! std::string s = _t("Dieses Charakteristikum braucht eine Spezifizierung.\nSoll diese vorgegeben sein, geben Sie sie bitte jetzt ein.\nSoll der Spieler selbst wählen, lassen Sie das Feld frei."); if (chdef.BrauchtSpezifizierung()) ! a.Kommentar(DSA::hole()->Text(s)); ! if (chdef.SchlechteEigenschaft()) a.WertHinzu(5); // TODO Konstante objekt_->charakteristika_.FuegeEin(a); *************** *** 1687,1692 **** std::string auswahl; for (DSA::CharakteristikaAuswahl::iterator i = objekt_->charakteristika_.begin(); i != objekt_->charakteristika_.end(); ++i) ! if (i->Text() == c) { ! int w = i->HoleWert(0); i->EntferneLetztenWert(); i->WertHinzu(w+1); --- 1691,1696 ---- std::string auswahl; for (DSA::CharakteristikaAuswahl::iterator i = objekt_->charakteristika_.begin(); i != objekt_->charakteristika_.end(); ++i) ! if (i->Text() == c) { ! int w = i->HoleWert(0); i->EntferneLetztenWert(); i->WertHinzu(w+1); *************** *** 1707,1721 **** std::string auswahl; for (DSA::CharakteristikaAuswahl::iterator i = objekt_->charakteristika_.begin(); i != objekt_->charakteristika_.end(); ++i) ! if (i->Text() == c) { ! int w = i->HoleWert(0); ! i->EntferneLetztenWert(); ! i->WertHinzu(w-1); ! charakteristika_->SetString(sel, i->Text().c_str()); ! } // Update(); } // OnCharMinus //@-node:<< OnCharMinus >> //@nl ! //@nonl //@-node:<< Charakteristika Events >> //@nl --- 1711,1744 ---- std::string auswahl; for (DSA::CharakteristikaAuswahl::iterator i = objekt_->charakteristika_.begin(); i != objekt_->charakteristika_.end(); ++i) ! if (i->Text() == c) { ! int w = i->HoleWert(0); ! i->EntferneLetztenWert(); ! i->WertHinzu(w-1); ! charakteristika_->SetString(sel, i->Text().c_str()); ! } // Update(); } // OnCharMinus //@-node:<< OnCharMinus >> //@nl ! //@<< OnCharOder >> ! //@+node:<< OnCharOder >> ! void OnCharOder (wxCommandEvent& WXUNUSED(event)) { ! int sel1 = charakteristika_->GetSelection(); ! int sel2 = moeglicheCharakteristika_->GetSelection(); ! if ((sel1==-1)||(sel2==-1)) { ! Log::Add(_t("Um Charakteristika mit 'oder' zu verbinden, müssen zwei Charakteristika ausgewählt sein.")); ! return; ! } ! std::string c = charakteristika_->GetStringSelection().c_str(); ! std::string cneu = moeglicheCharakteristika_->GetStringSelection().c_str(); ! for (DSA::CharakteristikaAuswahl::iterator i = objekt_->charakteristika_.begin(); i != objekt_->charakteristika_.end(); ++i) ! if (i->Text() == c) { ! i->Art("Liste"); ! i->IDHinzu(cneu); ! charakteristika_->SetString(sel1, i->Text().c_str()); ! } ! } // OnCharOder ! //@-node:<< OnCharOder >> ! //@nl //@-node:<< Charakteristika Events >> //@nl *************** *** 1742,1747 **** if (sfdef==0) sfdef = DSA::generierteSonderfertigkeiten()->Zeige(sfs); ! if (sfdef==0) return; ! DSA::Auswahl<DSA::Sonderfertigkeit> a; a.IDHinzu(sfdef->ID()); std::string s = _t("Diese Sonderfertigkeit braucht eine Spezifizierung.\nSoll diese vorgegeben sein, geben Sie sie bitte jetzt ein.\nSoll der Spieler selbst wählen, lassen Sie das Feld frei."); --- 1765,1770 ---- if (sfdef==0) sfdef = DSA::generierteSonderfertigkeiten()->Zeige(sfs); ! if (sfdef==0) return; ! DSA::Auswahl<DSA::Sonderfertigkeit> a; a.IDHinzu(sfdef->ID()); std::string s = _t("Diese Sonderfertigkeit braucht eine Spezifizierung.\nSoll diese vorgegeben sein, geben Sie sie bitte jetzt ein.\nSoll der Spieler selbst wählen, lassen Sie das Feld frei."); *************** *** 1819,1825 **** for (DSA::SonderfertigkeitenAuswahl::iterator i = objekt_->sonderfertigkeiten_.begin(); i != objekt_->sonderfertigkeiten_.end(); ++i) if (strings::BeginntMit(s, i->ID(0))) { ! int w = i->HoleWert(0); ! i->EntferneLetztenWert(); ! i->WertHinzu(w+1); sonderfertigkeiten_->SetString(sel, i->Text().c_str()); } --- 1842,1848 ---- for (DSA::SonderfertigkeitenAuswahl::iterator i = objekt_->sonderfertigkeiten_.begin(); i != objekt_->sonderfertigkeiten_.end(); ++i) if (strings::BeginntMit(s, i->ID(0))) { ! int w = i->HoleWert(0); ! i->EntferneLetztenWert(); ! i->WertHinzu(w+1); sonderfertigkeiten_->SetString(sel, i->Text().c_str()); } *************** *** 1835,1849 **** std::string s = sonderfertigkeiten_->GetStringSelection().c_str(); ! for (DSA::SonderfertigkeitenAuswahl::iterator i = objekt_->sonderfertigkeiten_.begin(); i != objekt_->sonderfertigkeiten_.end(); ++i) ! if (strings::BeginntMit(s, i->ID(0))) { ! int w = i->HoleWert(0); if (w==3) // TODO Magische Konstante Startwert Ritualkenntnisse text_->AppendText(_t("Dies ist bereits der Minimalwert.").c_str()); else { ! i->EntferneLetztenWert(); ! i->WertHinzu(w-1); sonderfertigkeiten_->SetString(sel, i->Text().c_str()); ! } } --- 1858,1872 ---- std::string s = sonderfertigkeiten_->GetStringSelection().c_str(); ! for (DSA::SonderfertigkeitenAuswahl::iterator i = objekt_->sonderfertigkeiten_.begin(); i != objekt_->sonderfertigkeiten_.end(); ++i) ! if (strings::BeginntMit(s, i->ID(0))) { ! int w = i->HoleWert(0); if (w==3) // TODO Magische Konstante Startwert Ritualkenntnisse text_->AppendText(_t("Dies ist bereits der Minimalwert.").c_str()); else { ! i->EntferneLetztenWert(); ! i->WertHinzu(w-1); sonderfertigkeiten_->SetString(sel, i->Text().c_str()); ! } } *************** *** 1894,1897 **** --- 1917,1940 ---- //@-node:<< OnVSFListeD >> //@nl + //@<< OnSFOder >> + //@+node:<< OnSFOder >> + void OnSFOder (wxCommandEvent& WXUNUSED(event)) { + int sel1 = sonderfertigkeiten_->GetSelection(); + int sel2 = moeglicheSonderfertigkeiten_->GetSelection(); + if ((sel1==-1)||(sel2==-1)) { + Log::Add(_t("Um Sonderfertigkeiten mit 'oder' zu verbinden, müssen zwei Sonderfertigkeiten ausgewählt sein.")); + return; + } + std::string s = sonderfertigkeiten_->GetStringSelection().c_str(); + std::string sneu = moeglicheSonderfertigkeiten_->GetStringSelection().c_str(); + for (DSA::SonderfertigkeitenAuswahl::iterator i = objekt_->sonderfertigkeiten_.begin(); i != objekt_->sonderfertigkeiten_.end(); ++i) + if (i->Text() == s) { + i->Art("Liste"); + i->IDHinzu(sneu); + sonderfertigkeiten_->SetString(sel1, i->Text().c_str()); + } + } // OnSFOder + //@-node:<< OnSFOder >> + //@nl //@nonl //@-node:<< Sonderfertigkeiten Events >> *************** *** 1951,1954 **** --- 1994,2000 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.28 2004/01/05 05:12:13 vrandezo + // Auswahlen bei Char und SF implementiert + // // Revision 1.27 2004/01/05 03:35:33 vrandezo // SF bei RKP-Defs sind jetzt auch Auswahlmengen statt einfacher Mengen Index: PersonGUIPersonenKomponentewx.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/PersonGUIPersonenKomponentewx.cpp,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** PersonGUIPersonenKomponentewx.cpp 5 Jan 2004 03:35:33 -0000 1.14 --- PersonGUIPersonenKomponentewx.cpp 5 Jan 2004 05:12:13 -0000 1.15 *************** *** 249,309 **** } } ! } ! ! template<class T, class U> ! void GebeEinChar(T, const std::string& id, int wert, U& ziel, wxWindow* parent, const std::string& kommentar = "") { ! T t; ! t.ID(id); ! if (wert!=0) t.Stufe(wert); ! t.Spezifizierung(kommentar); ! // if (ziel.Existiert(id)) ! // ziel.Zeige(id)->Wert(ziel.Zeige(id)->Wert()+wert); ! // else ! ziel.FuegeEin(t); ! } ! ! template<class T, class U> // wobei U DSA::SortierteMenge<T> sein muss ! void NormalisiereChar(const DSA::AuswahlMenge<T>& quelle, U& ziel, wxWindow* parent) { ! for (typename DSA::AuswahlMenge<T>::const_iterator i = quelle.begin(); i != quelle.end(); ++i) { ! if (i->Art() == _t("einfach")) { ! GebeEinChar(T(), i->ID(0), i->HoleWert(0), ziel, parent, i->Kommentar()); ! Log::Add(i->HoleWert(0)); ! } ! ! // if (i->Art() == _t("Liste")) { ! // StringListe sl; ! // for (int j = 0; j < i->IDAnzahl(); ++j) sl.push_back(i->ID(j)); ! // for (int k = 0; k < i->WertAnzahl(); ++k) { ! // if (sl.size() > 1) { ! // wxString* wxs = new wxString[sl.size()]; ! // int index = -1; ! // for (StringListe::iterator s = sl.begin(); s != sl.end(); ++s) ! // wxs[++index] = s->c_str(); ! // std::string text; ! // if (i->Kommentar()!="") text += i->Kommentar() + "\n"; ! // text += _t("Vergebe") + " " + strings::int2sStr(i->HoleWert(k), true); ! // wxSingleChoiceDialog d(parent, text.c_str(), _t("Bitte wählen").c_str(), ! // sl.size(), wxs, 0, wxOK); ! // std::string gesucht; ! // if (d.ShowModal() != wxID_OK) ! // gesucht = wxs[0].c_str(); ! // else ! // gesucht = d.GetStringSelection().c_str(); ! // delete [] wxs; ! ! // GebeEin(T(), gesucht, i->HoleWert(k), ziel, parent, i->Kommentar()); ! ! // sl.erase(std::find(sl.begin(), sl.end(), gesucht)); ! // } else { ! // GebeEin(T(), sl.begin()->c_str(), i->HoleWert(k), ziel, parent, i->Kommentar()); ! // k = i->WertAnzahl(); ! // } ! // } ! // } ! } ! } //@nonl ! //@-node:Normalisiere //@+node:GemeinsamenTeilKonstruieren void PersonGUIPersonenKomponentewx::GemeinsamenTeilKonstruieren (DSA::PersonenKomponente* p) { --- 249,312 ---- } } ! } ! //@-node:Normalisiere ! //@+node:GebeEinChar ! template<class T, class U> ! void GebeEinChar(T, const std::string& id, int wert, U& ziel, wxWindow* parent, const std::string& kommentar = "") { ! T t; ! t.ID(id); ! if (wert!=0) t.Stufe(wert); ! t.Spezifizierung(kommentar); ! // if (ziel.Existiert(id)) ! // ziel.Zeige(id)->Wert(ziel.Zeige(id)->Wert()+wert); ! // else ! ziel.FuegeEin(t); ! } ! //@nonl ! //@-node:GebeEinChar ! //@+node:NormalisiereChar ! template<class T, class U> // wobei U DSA::SortierteMenge<T> sein muss ! void NormalisiereChar(const DSA::AuswahlMenge<T>& quelle, U& ziel, wxWindow* parent) { ! for (typename DSA::AuswahlMenge<T>::const_iterator i = quelle.begin(); i != quelle.end(); ++i) { ! if (i->Art() == _t("einfach")) { ! GebeEinChar(T(), i->ID(0), i->HoleWert(0), ziel, parent, i->Kommentar()); ! Log::Add(i->HoleWert(0)); ! } ! ! if (i->Art() == _t("Liste")) { ! StringListe sl; ! for (int j = 0; j < i->IDAnzahl(); ++j) sl.push_back(i->ID(j)); ! // for (int k = 0; k < i->WertAnzahl(); ++k) { ! // if (sl.size() > 1) { ! wxString* wxs = new wxString[sl.size()]; ! int index = -1; ! for (StringListe::iterator s = sl.begin(); s != sl.end(); ++s) ! wxs[++index] = s->c_str(); ! // std::string text; ! // if (i->Kommentar()!="") text += i->Kommentar() + "\n"; ! // text += _t("Vergebe") + " " + strings::int2sStr(i->HoleWert(k), true); ! // wxSingleChoiceDialog d(parent, text.c_str(), _t("Bitte wählen").c_str(), ! // sl.size(), wxs, 0, wxOK); ! wxSingleChoiceDialog d(parent, _t("Bitte wählen").c_str(), _t("Bitte wählen").c_str(), sl.size(), wxs, 0, wxOK); ! std::string gesucht; ! if (d.ShowModal() != wxID_OK) ! gesucht = wxs[0].c_str(); ! else ! gesucht = d.GetStringSelection().c_str(); ! delete [] wxs; ! ! GebeEinChar(T(), gesucht, i->HoleWert(0), ziel, parent, i->Kommentar()); + // sl.erase(std::find(sl.begin(), sl.end(), gesucht)); + // } else { + // GebeEin(T(), sl.begin()->c_str(), i->HoleWert(k), ziel, parent, i->Kommentar()); + // k = i->WertAnzahl(); + // } + // } + } + } + } //@nonl ! //@-node:NormalisiereChar //@+node:GemeinsamenTeilKonstruieren void PersonGUIPersonenKomponentewx::GemeinsamenTeilKonstruieren (DSA::PersonenKomponente* p) { *************** *** 346,349 **** --- 349,355 ---- // $Log$ + // Revision 1.15 2004/01/05 05:12:13 vrandezo + // Auswahlen bei Char und SF implementiert + // // Revision 1.14 2004/01/05 03:35:33 vrandezo // SF bei RKP-Defs sind jetzt auch Auswahlmengen statt einfacher Mengen Index: ProfessionGUIwx.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/ProfessionGUIwx.cpp,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** ProfessionGUIwx.cpp 28 Nov 2003 23:26:55 -0000 1.15 --- ProfessionGUIwx.cpp 5 Jan 2004 05:12:13 -0000 1.16 *************** *** 327,330 **** --- 327,331 ---- EVT_BUTTON (CHARPLUS, ProfessionGUIwx::OnCharPlus) EVT_BUTTON (CHARMINUS, ProfessionGUIwx::OnCharMinus) + EVT_BUTTON (CHARODER, ProfessionGUIwx::OnCharOder) EVT_LISTBOX (CHARLISTE, ProfessionGUIwx::OnCharListe) EVT_LISTBOX_DCLICK(CHARLISTE, ProfessionGUIwx::OnCharListeD) *************** *** 336,339 **** --- 337,341 ---- EVT_BUTTON (SFPLUS, ProfessionGUIwx::OnSFPlus) EVT_BUTTON (SFMINUS, ProfessionGUIwx::OnSFMinus) + EVT_BUTTON (SFODER, ProfessionGUIwx::OnSFOder) EVT_LISTBOX (SFLISTE, ProfessionGUIwx::OnSFListe) EVT_LISTBOX_DCLICK(SFLISTE, ProfessionGUIwx::OnSFListeD) *************** *** 467,470 **** --- 469,475 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.16 2004/01/05 05:12:13 vrandezo + // Auswahlen bei Char und SF implementiert + // // Revision 1.15 2003/11/28 23:26:55 vrandezo // Kopierenknopf Index: RasseGUIwx.cpp =================================================================== RCS file: /cvsroot/darkeyetool/det/src/gui/RasseGUIwx.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** RasseGUIwx.cpp 28 Nov 2003 23:26:55 -0000 1.12 --- RasseGUIwx.cpp 5 Jan 2004 05:12:13 -0000 1.13 *************** *** 429,432 **** --- 429,433 ---- EVT_BUTTON (CHARPLUS, RasseGUIwx::OnCharPlus) EVT_BUTTON (CHARMINUS, RasseGUIwx::OnCharMinus) + EVT_BUTTON (CHARODER, RasseGUIwx::OnCharOder) EVT_LISTBOX (CHARLISTE, RasseGUIwx::OnCharListe) EVT_LISTBOX_DCLICK(CHARLISTE, RasseGUIwx::OnCharListeD) *************** *** 438,441 **** --- 439,443 ---- EVT_BUTTON (SFPLUS, RasseGUIwx::OnSFPlus) EVT_BUTTON (SFMINUS, RasseGUIwx::OnSFMinus) + EVT_BUTTON (SFODER, RasseGUIwx::OnSFOder) EVT_LISTBOX (SFLISTE, RasseGUIwx::OnSFListe) EVT_LISTBOX_DCLICK(SFLISTE, RasseGUIwx::OnSFListeD) *************** *** 722,725 **** --- 724,730 ---- //@+node:<< Version History >> // $Log$ + // Revision 1.13 2004/01/05 05:12:13 vrandezo + // Auswahlen bei Char und SF implementiert + // // Revision 1.12 2003/11/28 23:26:55 vrandezo // Kopierenknopf |