PatchServer.cpp 59 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656
  1. #include "PatchServer.h"
  2. #include <TextFeld.h>
  3. #include <MausEreignis.h>
  4. #include "..\..\Login\Login.h"
  5. #include <Datei.h>
  6. #include <iostream>
  7. // Inhalt der PSUpdate Klasse aus PatchServer.h
  8. // Kontruktor
  9. PSUpdate::PSUpdate( PatchServer *zPSA, AdminAccount *account )
  10. {
  11. this->account = account;
  12. this->zPSA = zPSA;
  13. gruppeAnzahl = 0;
  14. gruppeId = 0;
  15. this->psc = 0;
  16. id = 0;
  17. ref = 1;
  18. }
  19. // Destruktor
  20. PSUpdate::~PSUpdate()
  21. {
  22. ende();
  23. if( psc )
  24. {
  25. psc->abbruch();
  26. psc->release();
  27. }
  28. account->release();
  29. delete[] gruppeId;
  30. }
  31. // nicht constant
  32. void PSUpdate::setServer( const char *ip, unsigned short port )
  33. {
  34. if( psc )
  35. {
  36. psc->abbruch();
  37. psc->release();
  38. }
  39. psc = new PSKlient( ip, port );
  40. }
  41. void PSUpdate::setUpdateListe( int gAnzahl, Array< int > *gId )
  42. {
  43. gruppeAnzahl = gAnzahl;
  44. delete[] gruppeId;
  45. gruppeId = 0;
  46. if( gAnzahl )
  47. {
  48. gruppeId = new int[ gAnzahl ];
  49. for( int i = 0; i < gAnzahl; i++ )
  50. gruppeId[ i ] = gId->get( i );
  51. }
  52. }
  53. void PSUpdate::thread()
  54. {
  55. if( !psc )
  56. {
  57. for( int g = 0; g < gruppeAnzahl; g++ )
  58. zPSA->setUpdateFertig( 1, gruppeId[ g ] );
  59. return;
  60. }
  61. if( !psc->login( account->zName()->getText(), account->zPasswort()->getText() ) )
  62. {
  63. for( int g = 0; g < gruppeAnzahl; g++ )
  64. zPSA->setUpdateFertig( 1, gruppeId[ g ] );
  65. return;
  66. }
  67. Array< FileGroupInfo* > fileGroupList;
  68. psc->getFileGroupInfoList( &fileGroupList );
  69. RCArray< ReferenceCounting< std::pair< int, Text > > > systemT;
  70. psc->getSystemInfoList( &systemT );
  71. int gAnz = fileGroupList.getEintragAnzahl();
  72. for( int g = 0; g < gruppeAnzahl; g++ )
  73. {
  74. Text *initPfad = new Text( "data/" );
  75. for( int i = 0; i < gAnz; i++ )
  76. {
  77. if( gruppeId[ g ] == fileGroupList.get( i )->id )
  78. {
  79. initPfad->append( (char*)fileGroupList.get( i )->name );
  80. break;
  81. }
  82. }
  83. initPfad->append( ".ini" );
  84. InitDatei *systemInit = new InitDatei( initPfad );
  85. systemInit->laden();
  86. bool cont = 0;
  87. int sAnz = systemT.getEintragAnzahl();
  88. for( int i = 0; i < sAnz; i++ ) // Prüfen, ob Lokale Version aktuell ist
  89. {
  90. if( !systemInit->wertExistiert( systemT.z( i )->second ) )
  91. {
  92. systemInit->release();
  93. zPSA->setUpdateFertig( 1, gruppeId[ g ] );
  94. cont = 1;
  95. break;
  96. }
  97. Text *pfad = new Text( systemInit->zWert( (char*)systemT.z( i )->second )->getText() );
  98. pfad->append( "/" );
  99. RCArray< ReferenceCounting< FileInfo > > dateiT;
  100. psc->getFileInfoList( systemT.z( i )->first, gruppeId[ g ], &dateiT );
  101. int dAnz = dateiT.getEintragAnzahl();
  102. bool br = 0;
  103. for( int j = 0; j < dAnz; j++ )
  104. {
  105. Text *pf = new Text( pfad->getText() );
  106. pf->append( dateiT.z( j )->path.getText() );
  107. if( !DateiExistiert( pf->getThis() ) )
  108. {
  109. pfad->release();
  110. pf->release();
  111. systemInit->release();
  112. zPSA->setUpdateFertig( 1, gruppeId[ g ] );
  113. cont = 1;
  114. br = 1;
  115. break;
  116. }
  117. if( !DateiIstVerzeichnis( pf->getThis() ) )
  118. {
  119. Datei *d = new Datei();
  120. d->setDatei( pf->getText() );
  121. Zeit *zeit = d->getLastChange();
  122. d->release();
  123. if( !zeit->istGleich( "y-m-d h:i:s", dateiT.z( j )->time.getText() ) )
  124. {
  125. zeit->release();
  126. pfad->release();
  127. pf->release();
  128. systemInit->release();
  129. zPSA->setUpdateFertig( 1, gruppeId[ g ] );
  130. cont = 1;
  131. br = 1;
  132. break;
  133. }
  134. zeit->release();
  135. }
  136. pf->release();
  137. }
  138. if( br )
  139. break;
  140. pfad->release();
  141. }
  142. if( cont )
  143. continue;
  144. if( psc->updateStarten( gruppeId[ g ] ) )
  145. {
  146. RCArray< Text > *systemA = new RCArray< Text >();
  147. RCArray< RCArray< Text > > *dateiA = new RCArray< RCArray< Text > >();
  148. Array< int > *dateiAnzahlA = new Array< int >();
  149. int systemAnzahl = 0;
  150. bool ok = psc->getDateiListe( &systemAnzahl, dateiAnzahlA, systemA, dateiA );
  151. if( !ok )
  152. {
  153. systemA->release();
  154. dateiA->release();
  155. dateiAnzahlA->release();
  156. systemInit->release();
  157. zPSA->setUpdateFertig( 1, gruppeId[ g ] );
  158. continue;
  159. }
  160. __int64 maxAktionen = 0;
  161. for( int i = 0; i < systemAnzahl; i++ )
  162. {
  163. for( int j = 0; j < dateiAnzahlA->get( i ); j++ )
  164. {
  165. Text *pfad = new Text( systemInit->zWert( systemA->z( i )->getText() )->getText() );
  166. pfad->append( "/" );
  167. pfad->append( dateiA->z( i )->z( j )->getText() );
  168. Datei *d = new Datei();
  169. d->setDatei( pfad );
  170. if( !d->istOrdner() )
  171. maxAktionen += d->getSize();
  172. d->release();
  173. }
  174. }
  175. __int64 aktionen = 0;
  176. int prozent = 0;
  177. bool br = 0;
  178. for( int i = 0; i < systemAnzahl; i++ )
  179. {
  180. for( int j = 0; j < dateiAnzahlA->get( i ); j++ )
  181. {
  182. Text *pfad = new Text( systemInit->zWert( systemA->z( i )->getText() )->getText() );
  183. pfad->append( "/" );
  184. pfad->append( dateiA->z( i )->z( j )->getText() );
  185. Datei *d = new Datei();
  186. d->setDatei( pfad );
  187. if( d->istOrdner() )
  188. {
  189. d->release();
  190. continue;
  191. }
  192. __int64 gr = d->getSize();
  193. d->open( Datei::Style::lesen );
  194. int version;
  195. int system = 0;
  196. for( int s = 0; s < sAnz; s++ )
  197. {
  198. if( systemT.z( s )->second.istGleich( systemA->z( i )->getText() ) )
  199. system = systemT.z( s )->first;
  200. }
  201. psc->getFileVersion( dateiA->z( i )->z( j )->getText(), system, gruppeId[ g ], &version );
  202. psc->lock();
  203. psc->zKlient()->sende( "\xE", 1 );
  204. char ret = 0;
  205. psc->zKlient()->getNachricht( &ret, 1 );
  206. if( ret == 1 )
  207. {
  208. psc->zKlient()->sende( (char*)&system, 4 );
  209. psc->zKlient()->sende( (char*)&version, 4 );
  210. short län = dateiA->z( i )->z( j )->getLength();
  211. psc->zKlient()->sende( (char*)&län, 2 );
  212. psc->zKlient()->sende( dateiA->z( i )->z( j )->getText(), län );
  213. psc->zKlient()->getNachricht( &ret, 1 );
  214. if( ret == 1 )
  215. {
  216. while( gr )
  217. {
  218. if( gr >= 2048 )
  219. {
  220. gr -= 2048;
  221. län = 2048;
  222. }
  223. else
  224. {
  225. län = (int)gr;
  226. gr = 0;
  227. }
  228. if( län < 0 )
  229. break;
  230. psc->zKlient()->sende( (char*)&län, 2 );
  231. char *buff = new char[ län ];
  232. d->lese( buff, län );
  233. psc->zKlient()->sende( buff, län );
  234. delete[] buff;
  235. aktionen += län;
  236. if( prozent != 100 / ( maxAktionen / (long double)aktionen ) )
  237. {
  238. prozent = (int)( 100 / ( maxAktionen / (long double)aktionen ) );
  239. zPSA->setUpdateProzent( prozent, gruppeId[ g ] );
  240. }
  241. }
  242. psc->zKlient()->sende( "\0\0", 2 );
  243. psc->zKlient()->getNachricht( &ret, 1 );
  244. }
  245. }
  246. if( prozent != 100 / ( maxAktionen / (long double)aktionen ) )
  247. {
  248. prozent = (int)( 100 / ( maxAktionen / (long double)aktionen ) );
  249. zPSA->setUpdateProzent( prozent, gruppeId[ g ] );
  250. }
  251. if( ret == 3 )
  252. {
  253. d->close();
  254. d->release();
  255. systemA->release();
  256. dateiA->release();
  257. dateiAnzahlA->release();
  258. char l = 0;
  259. psc->zKlient()->getNachricht( &l, 1 );
  260. char *txt = new char[ l + 1 ];
  261. txt[ l ] = 0;
  262. if( l )
  263. psc->zKlient()->getNachricht( txt, l );
  264. std::cout << "Error: " << txt << "\n";
  265. delete[] txt;
  266. psc->unlock();
  267. zPSA->setUpdateProzent( 0, gruppeId[ g ] );
  268. zPSA->setUpdateFertig( 1, gruppeId[ g ] );
  269. br = 1;
  270. break;
  271. }
  272. psc->unlock();
  273. d->close();
  274. d->release();
  275. }
  276. if( br )
  277. break;
  278. }
  279. if( br )
  280. continue;
  281. psc->updateFertig();
  282. systemA->release();
  283. dateiA->release();
  284. dateiAnzahlA->release();
  285. }
  286. else
  287. {
  288. systemInit->release();
  289. zPSA->setUpdateProzent( 0, gruppeId[ g ] );
  290. zPSA->setUpdateFertig( 1, gruppeId[ g ] );
  291. continue;
  292. }
  293. zPSA->setUpdateProzent( 0, gruppeId[ g ] );
  294. zPSA->setUpdateFertig( 0, gruppeId[ g ] );
  295. systemInit->release();
  296. }
  297. for( int i = 0; i < gAnz; i++ )
  298. delete fileGroupList.get( i );
  299. zPSA->setUpdateFertig( 0, 0 );
  300. run = 0;
  301. }
  302. // constant
  303. // Reference Counting
  304. PSUpdate *PSUpdate::getThis()
  305. {
  306. ref++;
  307. return this;
  308. }
  309. PSUpdate *PSUpdate::release()
  310. {
  311. ref--;
  312. if( !ref )
  313. delete this;
  314. return 0;
  315. }
  316. // Inhalt der PSDetails Klasse aus PatchServer.h
  317. // Konstruktor
  318. PSDetails::PSDetails( PatchServer *zPSA, MSKlient *mk )
  319. {
  320. this->zPSA = zPSA;
  321. this->mk = mk;
  322. id = 0;
  323. ref = 1;
  324. }
  325. // Destruktor
  326. PSDetails::~PSDetails()
  327. {
  328. ende();
  329. mk->release();
  330. }
  331. // nicht constant
  332. void PSDetails::setServerId( int id )
  333. {
  334. this->id = id;
  335. }
  336. void PSDetails::thread()
  337. {
  338. ServerDetails detail;
  339. mk->getPatchServerDetails( id, &detail );
  340. if( !mk->getPatchServerDetails( id, &detail ) )
  341. {
  342. Text *err = new Text( "Fehler: Server Rückgabe: " );
  343. err->append( mk->getLetzterFehler() );
  344. zPSA->setServerDetails( id, "", "", 0, 0, 0, 0, -2, err );
  345. }
  346. else
  347. {
  348. PSKlient *psc = new PSKlient( detail.ip, detail.adminPort );
  349. int st = psc->getStatus();
  350. if( st >= 0 )
  351. psc->trenne();
  352. psc->release();
  353. zPSA->setServerDetails( id,
  354. detail.name,
  355. detail.ip,
  356. detail.port,
  357. detail.adminPort,
  358. detail.tasks,
  359. detail.maxTasks,
  360. st,
  361. 0 );
  362. }
  363. run = 0;
  364. }
  365. // constant
  366. // Reference Counting
  367. PSDetails *PSDetails::getThis()
  368. {
  369. ref++;
  370. return this;
  371. }
  372. PSDetails *PSDetails::release()
  373. {
  374. ref--;
  375. if( !ref )
  376. delete this;
  377. return 0;
  378. }
  379. // Inhalt der PSSuche Klasse aus PatchServer.h
  380. // Konstruktor
  381. PSSuche::PSSuche( PatchServer *zPSA, MSKlient *mk )
  382. {
  383. this->zPSA = zPSA;
  384. this->mk = mk;
  385. ref = 1;
  386. }
  387. // Destruktor
  388. PSSuche::~PSSuche()
  389. {
  390. ende();
  391. mk->release();
  392. }
  393. // nicht constant
  394. void PSSuche::thread()
  395. {
  396. Array< ServerData* > list;
  397. if( mk->getPatchServerListe( &list ) )
  398. {
  399. int anz = list.getEintragAnzahl();
  400. for( int i = 0; i < anz; i++ )
  401. {
  402. int st = -1;
  403. ServerData *s = list.get( i );
  404. if( !s->status.istGleich( "Unerreichbar" ) )
  405. {
  406. PSKlient *psc = new PSKlient( s->ip.getText(), s->adminPort );
  407. st = psc->getStatus();
  408. switch( st )
  409. {
  410. case -2:
  411. s->status = "Unbekannt";
  412. break;
  413. case -1:
  414. s->status = "Unerreichbar";
  415. break;
  416. case 0:
  417. s->status = "Offline";
  418. break;
  419. case 1:
  420. s->status = "Pausiert";
  421. break;
  422. case 2:
  423. s->status = "Online";
  424. break;
  425. case 3:
  426. s->status = "Veraltet";
  427. break;
  428. }
  429. if( st >= 0 )
  430. psc->trenne();
  431. psc->release();
  432. }
  433. zPSA->addServer( s->id,
  434. s->name,
  435. s->ip,
  436. s->port,
  437. s->adminPort,
  438. s->status );
  439. delete s;
  440. }
  441. }
  442. zPSA->sucheAbgeschlossen();
  443. run = 0;
  444. }
  445. // constant
  446. // Reference Counting
  447. PSSuche *PSSuche::getThis()
  448. {
  449. ref++;
  450. return this;
  451. }
  452. PSSuche *PSSuche::release()
  453. {
  454. ref--;
  455. if( !ref )
  456. delete this;
  457. return 0;
  458. }
  459. TextFeld *getTabellenEintrag( const char *txt, Schrift *s, int farbe )
  460. {
  461. TextFeld *tmp = new TextFeld();
  462. tmp->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
  463. tmp->setSchriftZ( s );
  464. tmp->setText( txt );
  465. tmp->setSchriftFarbe( farbe );
  466. return tmp;
  467. }
  468. // Inhalt der PatchServer Klasse aus PatchServer.h
  469. // Konstruktor
  470. PatchServer::PatchServer( Schrift *s, InitDatei *d, MSKlient *msk, RessourceBild *rb, AdminAccount *acc, Bildschirm *b )
  471. : Abschnitt( b )
  472. {
  473. fenster = 0;
  474. this->msk = msk;
  475. iD = d;
  476. account = acc;
  477. schrift = s;
  478. psc = 0;
  479. f = new Fenster();
  480. f->setStyle( Fenster::Style::Sichtbar | Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered );
  481. f->setRFarbe( 0xFFFFFFFF );
  482. f->setRBreite( 1 );
  483. f->setTitel( "Patch Server" );
  484. f->setTSchriftZ( s->getThis() );
  485. f->setTSFarbe( 0xFFFFFFFF );
  486. f->setTSSize( 12 );
  487. f->setTAfFarbe( 0x1000FF00 );
  488. f->setTAfStrength( -15 );
  489. f->setTRFarbe( 0xFFFFFFFF );
  490. f->setTRBreite( 1 );
  491. f->zTTextFeld()->addStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center | TextFeld::Style::Rahmen );
  492. f->zTTextFeld()->setSize( 0, 20 );
  493. f->setSize( 492, 277 );
  494. liste = new Fenster();
  495. liste->setStyle( Fenster::Style::Sichtbar | Fenster::Style::Erlaubt );
  496. liste->setSize( 490, 255 );
  497. f->addMember( liste->getThis() );
  498. details = new Fenster();
  499. details->setStyle( Fenster::Style::Erlaubt );
  500. details->setSize( 490, 255 );
  501. f->addMember( details->getThis() );
  502. updateF = new Fenster();
  503. updateF->setStyle( Fenster::Style::Erlaubt );
  504. updateF->setSize( 490, 255 );
  505. f->addMember( updateF->getThis() );
  506. tabelle = new ObjTabelle();
  507. tabelle->setStyle( ObjTabelle::Style::Sichtbar | ObjTabelle::Style::VScroll | ObjTabelle::Style::Rahmen | ObjTabelle::Style::Raster | ObjTabelle::Style::Erlaubt );
  508. tabelle->setMausEreignis( _ret1ME );
  509. tabelle->setRahmenFarbe( 0xFFFFFFFF );
  510. tabelle->setRasterFarbe( 0xFFA0A0A0 );
  511. tabelle->setRasterBreite( 1 );
  512. tabelle->setPosition( 5, 5 );
  513. tabelle->setSize( 480, 220 );
  514. tabelle->setVertikalKlickScroll( 5 );
  515. tabelle->addSpalte( "id" );
  516. tabelle->setSpaltenBreite( 0, 40 );
  517. tabelle->addSpalte( "name" );
  518. tabelle->setSpaltenBreite( 1, 105 );
  519. tabelle->addSpalte( "ip" );
  520. tabelle->setSpaltenBreite( 2, 90 );
  521. tabelle->addSpalte( "port" );
  522. tabelle->setSpaltenBreite( 3, 50 );
  523. tabelle->addSpalte( "aport" );
  524. tabelle->setSpaltenBreite( 4, 50 );
  525. tabelle->addSpalte( "status" );
  526. tabelle->setSpaltenBreite( 5, 100 );
  527. tabelle->addSpalte( "auswahl" );
  528. tabelle->setSpaltenBreite( 6, 20 );
  529. tabelle->addZeile( "Überschrifft" );
  530. tabelle->setZeilenHeight( 0, 20 );
  531. tabelle->setZeichnungZ( 0, 0, getTabellenEintrag( "Id", s->getThis(), 0xFFFFFFFF ) );
  532. tabelle->setZeichnungZ( 1, 0, getTabellenEintrag( "Name", s->getThis(), 0xFFFFFFFF ) );
  533. tabelle->setZeichnungZ( 2, 0, getTabellenEintrag( "Ip", s->getThis(), 0xFFFFFFFF ) );
  534. tabelle->setZeichnungZ( 3, 0, getTabellenEintrag( "Port", s->getThis(), 0xFFFFFFFF ) );
  535. tabelle->setZeichnungZ( 4, 0, getTabellenEintrag( "APort", s->getThis(), 0xFFFFFFFF ) );
  536. tabelle->setZeichnungZ( 5, 0, getTabellenEintrag( "Status", s->getThis(), 0xFFFFFFFF ) );
  537. tabelle->setZeichnungZ( 6, 0, 0 );
  538. liste->addMember( tabelle->getThis() );
  539. aktualisieren = new Knopf();
  540. aktualisieren->setText( "" );
  541. aktualisieren->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
  542. aktualisieren->setHintergrundBildZ( rb->get( "neuladen.png" ) );
  543. aktualisieren->setPosition( 236, 230 );
  544. aktualisieren->setSize( 20, 20 );
  545. aktualisieren->setMausEreignisParameter( this );
  546. aktualisieren->setMausEreignis( patchServerAktualisierenMausEreignis );
  547. f->addMember( aktualisieren->getThis() );
  548. weiter = new Knopf();
  549. weiter->setText( "" );
  550. weiter->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
  551. weiter->setHintergrundBildZ( rb->get( "weiter.png" ) );
  552. weiter->setPosition( 261, 230 );
  553. weiter->setSize( 20, 20 );
  554. weiter->setMausEreignisParameter( this );
  555. weiter->setMausEreignis( patchServerWeiterMausEreignis );
  556. f->addMember( weiter->getThis() );
  557. zurück = new Knopf();
  558. zurück->setText( "" );
  559. zurück->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
  560. zurück->setHintergrundBildZ( rb->get( "zurück.png" ) );
  561. zurück->setPosition( 211, 230 );
  562. zurück->setSize( 20, 20 );
  563. zurück->setMausEreignisParameter( this );
  564. zurück->setMausEreignis( patchServerZurückMausEreignis );
  565. f->addMember( zurück->getThis() );
  566. serverId = new TextFeld();
  567. serverId->setStyle( TextFeld::Style::Sichtbar );
  568. serverId->setSchriftZ( s->getThis() );
  569. serverId->setSchriftFarbe( 0xFFFFFFFF );
  570. serverId->setSchriftSize( 12 );
  571. serverId->setText( "ID: " );
  572. serverId->setSize( 100, 20 );
  573. serverId->setPosition( 10, 10 );
  574. details->addMember( serverId->getThis() );
  575. serverName = new TextFeld();
  576. serverName->setStyle( TextFeld::Style::Sichtbar );
  577. serverName->setSchriftZ( s->getThis() );
  578. serverName->setSchriftFarbe( 0xFFFFFFFF );
  579. serverName->setSchriftSize( 12 );
  580. serverName->setText( "Name: " );
  581. serverName->setSize( 150, 20 );
  582. serverName->setPosition( 120, 10 );
  583. details->addMember( serverName->getThis() );
  584. serverIp = new TextFeld();
  585. serverIp->setStyle( TextFeld::Style::Sichtbar );
  586. serverIp->setSchriftZ( s->getThis() );
  587. serverIp->setSchriftFarbe( 0xFFFFFFFF );
  588. serverIp->setSchriftSize( 12 );
  589. serverIp->setText( "IP: " );
  590. serverIp->setSize( 120, 20 );
  591. serverIp->setPosition( 280, 10 );
  592. details->addMember( serverIp->getThis() );
  593. serverPort = new TextFeld();
  594. serverPort->setStyle( TextFeld::Style::Sichtbar );
  595. serverPort->setSchriftZ( s->getThis() );
  596. serverPort->setSchriftFarbe( 0xFFFFFFFF );
  597. serverPort->setSchriftSize( 12 );
  598. serverPort->setText( "Port: " );
  599. serverPort->setSize( 100, 20 );
  600. serverPort->setPosition( 10, 40 );
  601. details->addMember( serverPort->getThis() );
  602. serverAPort = new TextFeld();
  603. serverAPort->setStyle( TextFeld::Style::Sichtbar );
  604. serverAPort->setSchriftZ( s->getThis() );
  605. serverAPort->setSchriftFarbe( 0xFFFFFFFF );
  606. serverAPort->setSchriftSize( 12 );
  607. serverAPort->setText( "Admin Port: " );
  608. serverAPort->setSize( 200, 20 );
  609. serverAPort->setPosition( 120, 40 );
  610. details->addMember( serverAPort->getThis() );
  611. serverClients = new TextFeld();
  612. serverClients->setStyle( TextFeld::Style::Sichtbar );
  613. serverClients->setSchriftZ( s->getThis() );
  614. serverClients->setSchriftFarbe( 0xFFFFFFFF );
  615. serverClients->setSchriftSize( 12 );
  616. serverClients->setText( "Clients: " );
  617. serverClients->setSize( 100, 20 );
  618. serverClients->setPosition( 10, 70 );
  619. details->addMember( serverClients->getThis() );
  620. serverMaxClients = new TextFeld();
  621. serverMaxClients->setStyle( TextFeld::Style::Sichtbar );
  622. serverMaxClients->setSchriftZ( s->getThis() );
  623. serverMaxClients->setSchriftFarbe( 0xFFFFFFFF );
  624. serverMaxClients->setSchriftSize( 12 );
  625. serverMaxClients->setText( "Max Clients: " );
  626. serverMaxClients->setSize( 80, 20 );
  627. serverMaxClients->setPosition( 120, 70 );
  628. details->addMember( serverMaxClients->getThis() );
  629. maxClients = new TextFeld();
  630. maxClients->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::Buffered | TextFeld::Style::VCenter );
  631. maxClients->setSchriftZ( s->getThis() );
  632. maxClients->setSchriftFarbe( 0xFFFFFFFF );
  633. maxClients->setSchriftSize( 12 );
  634. maxClients->setRahmenBreite( 1 );
  635. maxClients->setRahmenFarbe( 0xFFFFFFFF );
  636. maxClients->setAlphaFeldFarbe( 0x1000FF00 );
  637. maxClients->setAlphaFeldStrength( -5 );
  638. maxClients->setText( "" );
  639. maxClients->setSize( 100, 20 );
  640. maxClients->setPosition( 200, 68 );
  641. maxClients->setMausEreignis( _ret1ME );
  642. maxClients->setTastaturEreignisParameter( this );
  643. maxClients->setTastaturEreignis( patchServerMaxClientsTastaturEreignis );
  644. details->addMember( maxClients->getThis() );
  645. serverStatus = new TextFeld();
  646. serverStatus->setStyle( TextFeld::Style::Sichtbar );
  647. serverStatus->setSchriftZ( s->getThis() );
  648. serverStatus->setSchriftFarbe( 0xFFFFFFFF );
  649. serverStatus->setSchriftSize( 12 );
  650. serverStatus->setText( "Status: " );
  651. serverStatus->setSize( 150, 20 );
  652. serverStatus->setPosition( 10, 100 );
  653. details->addMember( serverStatus->getThis() );
  654. serverFehler = new TextFeld();
  655. serverFehler->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Mehrzeilig );
  656. serverFehler->setSchriftZ( s->getThis() );
  657. serverFehler->setSchriftFarbe( 0xFFFFFFFF );
  658. serverFehler->setSchriftSize( 12 );
  659. serverFehler->setText( "" );
  660. serverFehler->setSize( 470, 60 );
  661. serverFehler->setPosition( 10, 130 );
  662. details->addMember( serverFehler->getThis() );
  663. update = new Knopf();
  664. update->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
  665. update->setText( "Update" );
  666. update->setSchriftZ( s->getThis() );
  667. update->setMausEreignisParameter( this );
  668. update->setMausEreignis( patchServerUpdateMausEreignis );
  669. update->setSize( 80, 20 );
  670. update->setPosition( 400, 100 );
  671. details->addMember( update->getThis() );
  672. pausieren = new Knopf();
  673. pausieren->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
  674. pausieren->setText( "Pausieren" );
  675. pausieren->setSchriftZ( s->getThis() );
  676. pausieren->setMausEreignisParameter( this );
  677. pausieren->setMausEreignis( patchServerPausierenMausEreignis );
  678. pausieren->setSize( 80, 20 );
  679. pausieren->setPosition( 10, 200 );
  680. details->addMember( pausieren->getThis() );
  681. stoppen = new Knopf();
  682. stoppen->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
  683. stoppen->setText( "Stoppen" );
  684. stoppen->setSchriftZ( s->getThis() );
  685. stoppen->setMausEreignisParameter( this );
  686. stoppen->setMausEreignis( patchServerStoppenMausEreignis );
  687. stoppen->setSize( 80, 20 );
  688. stoppen->setPosition( 100, 200 );
  689. details->addMember( stoppen->getThis() );
  690. beenden = new Knopf();
  691. beenden->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
  692. beenden->setText( "Beenden" );
  693. beenden->setSchriftZ( s->getThis() );
  694. beenden->setMausEreignisParameter( this );
  695. beenden->setMausEreignis( patchServerBeendenMausEreignis );
  696. beenden->setSize( 80, 20 );
  697. beenden->setPosition( 190, 200 );
  698. details->addMember( beenden->getThis() );
  699. terminieren = new Knopf();
  700. terminieren->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
  701. terminieren->setText( "Terminieren" );
  702. terminieren->setSchriftZ( s->getThis() );
  703. terminieren->setMausEreignisParameter( this );
  704. terminieren->setMausEreignis( patchServerTerminierenMausEreignis );
  705. terminieren->setSize( 80, 20 );
  706. terminieren->setPosition( 280, 200 );
  707. details->addMember( terminieren->getThis() );
  708. setMaxClients = new Knopf();
  709. setMaxClients->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
  710. setMaxClients->setText( "set Max Clients" );
  711. setMaxClients->setSchriftZ( s->getThis() );
  712. setMaxClients->setMausEreignisParameter( this );
  713. setMaxClients->setMausEreignis( patchServerSetMaxClientsMausEreignis );
  714. setMaxClients->setSize( 110, 20 );
  715. setMaxClients->setPosition( 370, 200 );
  716. details->addMember( setMaxClients->getThis() );
  717. updateT = new ObjTabelle();
  718. updateT->setStyle( ObjTabelle::Style::Sichtbar | ObjTabelle::Style::Erlaubt | ObjTabelle::Style::Rahmen | ObjTabelle::Style::VScroll );
  719. updateT->setVertikalKlickScroll( 10 );
  720. updateT->setMausEreignis( _ret1ME );
  721. updateT->setRahmenFarbe( 0xFFFFFFFF );
  722. updateT->setPosition( 5, 5 );
  723. updateT->setSize( 480, 190 );
  724. updateT->addSpalte( "Name" );
  725. updateT->addSpalte( "Status" );
  726. updateT->addSpalte( "Auswahl" );
  727. updateT->addSpalte( "Update" );
  728. updateT->setSpaltenBreite( 0, 340 );
  729. updateT->setSpaltenBreite( 1, 100 );
  730. updateT->setSpaltenBreite( 2, 22 );
  731. updateT->setSpaltenBreite( 3, 0 );
  732. updateT->addZeile( "Titel" );
  733. updateT->setZeilenHeight( 0, 20 );
  734. TextFeld *uTN = new TextFeld();
  735. uTN->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
  736. uTN->setSchriftZ( s->getThis() );
  737. uTN->setSchriftFarbe( 0xFFFFFFFF );
  738. uTN->setSchriftSize( 12 );
  739. uTN->setRahmenFarbe( 0xFFFFFFFF );
  740. uTN->setText( "Name" );
  741. updateT->setZeichnungZ( 0, 0, uTN );
  742. TextFeld *uTS = new TextFeld();
  743. uTS->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
  744. uTS->setSchriftZ( s->getThis() );
  745. uTS->setSchriftFarbe( 0xFFFFFFFF );
  746. uTS->setSchriftSize( 12 );
  747. uTS->setRahmenFarbe( 0xFFFFFFFF );
  748. uTS->setText( "Status" );
  749. updateT->setZeichnungZ( 1, 0, uTS );
  750. updateT->setMausEreignis( _ret1ME );
  751. updateT->setTastaturEreignis( _ret1TE );
  752. updateF->addMember( updateT->getThis() );
  753. updateStarten = new Knopf();
  754. updateStarten->setStyle( Knopf::Style::Normal );
  755. updateStarten->setText( "Start" );
  756. updateStarten->setSchriftZ( s->getThis() );
  757. updateStarten->setMausEreignisParameter( this );
  758. updateStarten->setMausEreignis( patchServerUpdateStartenMausEreignis );
  759. updateStarten->setSize( 80, 20 );
  760. updateStarten->setPosition( 205, 200 );
  761. updateF->addMember( updateStarten->getThis() );
  762. obj = new Zeichnung();
  763. suchen = new PSSuche( this, msk->getThis() );
  764. getDetails = new PSDetails( this, msk->getThis() );
  765. updateTh = new PSUpdate( this, account->getThis() );
  766. rb->release();
  767. ref = 1;
  768. }
  769. // Destruktor
  770. PatchServer::~PatchServer()
  771. {
  772. delete obj;
  773. if( psc )
  774. {
  775. psc->trenne();
  776. psc->release();
  777. }
  778. if( fenster )
  779. {
  780. fenster->removeMember( f );
  781. fenster->release();
  782. }
  783. account->release();
  784. msk->release();
  785. iD->release();
  786. f->release();
  787. liste->release();
  788. details->release();
  789. updateF->release();
  790. updateStarten->release();
  791. updateT->release();
  792. aktualisieren->release();
  793. weiter->release();
  794. zurück->release();
  795. update->release();
  796. pausieren->release();
  797. stoppen->release();
  798. beenden->release();
  799. terminieren->release();
  800. setMaxClients->release();
  801. serverId->release();
  802. serverName->release();
  803. serverIp->release();
  804. serverPort->release();
  805. serverAPort->release();
  806. serverClients->release();
  807. serverMaxClients->release();
  808. serverStatus->release();
  809. serverFehler->release();
  810. maxClients->release();
  811. suchen->release();
  812. getDetails->release();
  813. updateTh->release();
  814. tabelle->release();
  815. schrift->release();
  816. }
  817. // nicht constant
  818. void PatchServer::setFenster( Fenster *f )
  819. {
  820. if( fenster )
  821. fenster->release();
  822. this->f->setPosition( f->getBreite() / 2 - this->f->getBreite() / 2, f->getHeight() / 2 - this->f->getHeight() / 2 );
  823. fenster = f;
  824. }
  825. void PatchServer::setSichtbar( bool s )
  826. {
  827. sichtbar = s;
  828. if( s )
  829. {
  830. if( !suchen->isRunning() && liste->hatStyle( Fenster::Style::Sichtbar ) )
  831. {
  832. for( int x = 0; x < tabelle->getSpaltenAnzahl(); x++ )
  833. {
  834. for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
  835. {
  836. Zeichnung *obj = tabelle->zZeichnung( x, y );
  837. if( obj )
  838. {
  839. if( x == tabelle->getSpaltenNummer( "auswahl" ) )
  840. ( (KontrollKnopf*)obj )->release();
  841. else
  842. ( (TextFeld*)obj )->release();
  843. }
  844. tabelle->setZeichnungZ( x, y, 0 );
  845. }
  846. }
  847. for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
  848. tabelle->removeZeile( 1 );
  849. weiter->removeStyle( Knopf::Style::Erlaubt );
  850. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  851. tabelle->removeStyle( ObjTabelle::Style::Erlaubt );
  852. suchen->start();
  853. }
  854. fenster->addMember( f );
  855. }
  856. else
  857. fenster->removeMember( f );
  858. }
  859. void PatchServer::addServer( int id, char *name, char *ip, int port, int adminPort, char *status )
  860. {
  861. Text *txt = new Text();
  862. txt->append( id );
  863. tabelle->addZeile( txt->getText() );
  864. int y = tabelle->getZeilenNummer( txt->getText() );
  865. tabelle->setZeilenHeight( y, 20 );
  866. tabelle->setZeichnungZ( 0, y, getTabellenEintrag( txt->getText(), schrift->getThis(), 0xFFFFFFFF ) );
  867. tabelle->setZeichnungZ( 1, y, getTabellenEintrag( name, schrift->getThis(), 0xFFFFFFFF ) );
  868. tabelle->setZeichnungZ( 2, y, getTabellenEintrag( ip, schrift->getThis(), 0xFFFFFFFF ) );
  869. txt->setText( "" );
  870. txt->append( port );
  871. tabelle->setZeichnungZ( 3, y, getTabellenEintrag( txt->getText(), schrift->getThis(), 0xFFFFFFFF ) );
  872. txt->setText( "" );
  873. txt->append( adminPort );
  874. tabelle->setZeichnungZ( 4, y, getTabellenEintrag( txt->getText(), schrift->getThis(), 0xFFFFFFFF ) );
  875. txt->release();
  876. tabelle->setZeichnungZ( 5, y, getTabellenEintrag( status, schrift->getThis(), getColorFromStatus( status ) ) );
  877. KontrollKnopf *knopf = new KontrollKnopf();
  878. knopf->setStyle( KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer );
  879. knopf->loadData( "data/bilder/icons.ltdb" );
  880. knopf->setMausEreignisParameter( this );
  881. knopf->setMausEreignis( patchServerAuswahlKnopfMausEreignis );
  882. tabelle->setZeichnungZ( 6, y, knopf );
  883. }
  884. void PatchServer::setServerDetails( int id, char *name, char *ip, int port, int adminPort, int clients, int maxClients, int status, Text *error )
  885. {
  886. if( !psc )
  887. {
  888. psc = new PSKlient( ip, adminPort );
  889. psc->verbinden();
  890. psc->login( account->zName()->getText(), account->zPasswort()->getText() );
  891. updateTh->setServer( ip, adminPort );
  892. }
  893. if( !error )
  894. {
  895. serverId->setText( "ID: " );
  896. serverId->zText()->append( id );
  897. serverName->setText( "Name: " );
  898. serverName->zText()->append( name );
  899. serverIp->setText( "IP: " );
  900. serverIp->zText()->append( ip );
  901. serverPort->setText( "Port: " );
  902. serverPort->zText()->append( port );
  903. serverAPort->setText( "Admin Port: " );
  904. serverAPort->zText()->append( adminPort );
  905. serverClients->setText( "Clients: " );
  906. serverClients->zText()->append( clients );
  907. this->maxClients->setText( "" );
  908. this->maxClients->zText()->append( maxClients );
  909. serverFehler->setText( "" );
  910. switch( status )
  911. {
  912. case -2: // Unbekannt
  913. serverStatus->setText( "\r0xFFFFFFFFStatus: \r0xFFFF8800Unbekannt" );
  914. break;
  915. case -1: // Unerreichbar
  916. serverStatus->setText( "\r0xFFFFFFFFStatus: \r0xFFFF0000Unerreichbar" );
  917. break;
  918. case 0: // Offline
  919. serverStatus->setText( "\r0xFFFFFFFFStatus: \r0xFFFFFF00Offline" );
  920. stoppen->setText( "Starten" );
  921. stoppen->addStyle( Knopf::Style::Erlaubt );
  922. beenden->addStyle( Knopf::Style::Erlaubt );
  923. terminieren->addStyle( Knopf::Style::Erlaubt );
  924. this->maxClients->addStyle( TextFeld::Style::Erlaubt );
  925. break;
  926. case 1: // Pausiert
  927. serverStatus->setText( "\r0xFFFFFFFFStatus: \r0xFF88FF00Pausiert" );
  928. pausieren->setText( "Fortsetzen" );
  929. pausieren->addStyle( Knopf::Style::Erlaubt );
  930. stoppen->setText( "Stoppen" );
  931. stoppen->addStyle( Knopf::Style::Erlaubt );
  932. beenden->addStyle( Knopf::Style::Erlaubt );
  933. terminieren->addStyle( Knopf::Style::Erlaubt );
  934. this->maxClients->addStyle( TextFeld::Style::Erlaubt );
  935. break;
  936. case 2: // Online
  937. serverStatus->setText( "\r0xFFFFFFFFStatus: \r0xFF00FF00Online" );
  938. pausieren->setText( "Pausieren" );
  939. pausieren->addStyle( Knopf::Style::Erlaubt );
  940. terminieren->addStyle( Knopf::Style::Erlaubt );
  941. this->maxClients->addStyle( TextFeld::Style::Erlaubt );
  942. break;
  943. case 3: // Veraltet
  944. serverStatus->setText( "\r0xFFFFFFFFStatus: \r0xFFB0FF00Veraltet" );
  945. pausieren->setText( "Pausieren" );
  946. pausieren->addStyle( Knopf::Style::Erlaubt );
  947. update->addStyle( Knopf::Style::Erlaubt );
  948. beenden->addStyle( Knopf::Style::Erlaubt );
  949. terminieren->addStyle( Knopf::Style::Erlaubt );
  950. this->maxClients->addStyle( TextFeld::Style::Erlaubt );
  951. break;
  952. }
  953. aktualisieren->addStyle( Knopf::Style::Erlaubt );
  954. zurück->addStyle( Knopf::Style::Erlaubt );
  955. update->addStyle( Knopf::Style::Erlaubt );
  956. }
  957. else
  958. {
  959. serverId->setText( "ID: " );
  960. serverName->setText( "Name: " );
  961. serverIp->setText( "IP: " );
  962. serverPort->setText( "Port: " );
  963. serverAPort->setText( "APort: " );
  964. serverClients->setText( "Clients: " );
  965. this->maxClients->setText( "" );
  966. this->serverStatus->setText( "Status: " );
  967. aktualisieren->addStyle( Knopf::Style::Erlaubt );
  968. zurück->addStyle( Knopf::Style::Erlaubt );
  969. serverFehler->setText( error );
  970. }
  971. }
  972. void PatchServer::sucheAbgeschlossen()
  973. {
  974. aktualisieren->addStyle( Knopf::Style::Erlaubt );
  975. tabelle->addStyle( ObjTabelle::Style::Erlaubt );
  976. }
  977. void PatchServer::setUpdateProzent( int prozent, int gruppe )
  978. {
  979. for( int i = 0; i < updateT->getZeilenAnzahl(); i++ )
  980. {
  981. if( gruppe == TextZuInt( updateT->zZeilenName( i )->getText(), 10 ) )
  982. {
  983. if( updateT->zZeichnung( 3, i ) != obj )
  984. {
  985. updateT->lockZeichnung();
  986. ( (TextFeld*)updateT->zZeichnung( 1, i ) )->release();
  987. FBalken *fb = new FBalken();
  988. fb->setStyle( FBalken::Style::Sichtbar | FBalken::Style::L_R | FBalken::Style::FFarbe | FBalken::Style::Hintergrund | FBalken::Style::Prozent | FBalken::Style::Rahmen | FBalken::Style::FRahmen );
  989. fb->setFBgFarbe( 0xFF00FF00 );
  990. fb->setHintergrundFarbe( 0xFFFFFFFF );
  991. fb->setSFarbe( 0xFF000000 );
  992. fb->setSchriftZ( schrift->getThis() );
  993. fb->setSSize( 12 );
  994. fb->setRahmenBreite( 1 );
  995. fb->setRahmenFarbe( 0xFF55FF55 );
  996. fb->setFRFarbe( 0xFF55FF55 );
  997. fb->reset();
  998. fb->setAktionAnzahl( 100 );
  999. updateT->setZeichnungZ( 1, i, fb );
  1000. updateT->setZeichnungZ( 3, i, obj );
  1001. updateT->unlockZeichnung();
  1002. }
  1003. ( (FBalken*)updateT->zZeichnung( 1, i ) )->reset();
  1004. ( (FBalken*)updateT->zZeichnung( 1, i ) )->aktionPlus( prozent );
  1005. return;
  1006. }
  1007. }
  1008. }
  1009. void PatchServer::setUpdateFertig( bool error, int gruppe )
  1010. {
  1011. if( !gruppe )
  1012. { // gesamter Vorgang abgeschlossen
  1013. aktualisieren->addStyle( Knopf::Style::Erlaubt );
  1014. zurück->addStyle( Knopf::Style::Erlaubt );
  1015. updateStarten->addStyle( Knopf::Style::Erlaubt );
  1016. updateT->addStyle( ObjTabelle::Style::Erlaubt );
  1017. MausEreignis me;
  1018. me.id = ME_RLinks;
  1019. b->lock();
  1020. aktualisierenMausEreignis( 0, me );
  1021. b->unlock();
  1022. }
  1023. else
  1024. { // einzelner Schritt abgeschlossen
  1025. for( int i = 0; i < updateT->getZeilenAnzahl(); i++ )
  1026. {
  1027. if( gruppe == TextZuInt( updateT->zZeilenName( i )->getText(), 10 ) )
  1028. {
  1029. updateT->lockZeichnung();
  1030. ( (FBalken*)updateT->zZeichnung( 1, i ) )->release();
  1031. TextFeld *uTS = new TextFeld();
  1032. uTS->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
  1033. uTS->setSchriftZ( schrift->getThis() );
  1034. uTS->setSchriftSize( 12 );
  1035. uTS->setRahmenFarbe( 0xFFFFFFFF );
  1036. if( error )
  1037. {
  1038. uTS->setText( "Fehler" );
  1039. uTS->setSchriftFarbe( 0xFFFF0000 );
  1040. }
  1041. else
  1042. {
  1043. uTS->setText( "Aktuell" );
  1044. uTS->setSchriftFarbe( 0xFF00FF00 );
  1045. }
  1046. updateT->setZeichnungZ( 1, i, uTS );
  1047. updateT->setZeichnungZ( 3, i, 0 );
  1048. updateT->unlockZeichnung();
  1049. return;
  1050. }
  1051. }
  1052. }
  1053. }
  1054. bool PatchServer::aktualisierenMausEreignis( void *o, MausEreignis me )
  1055. {
  1056. if( me.id == ME_RLinks )
  1057. {
  1058. if( liste->hatStyle( Fenster::Style::Sichtbar ) )
  1059. {
  1060. if( !suchen->isRunning() )
  1061. {
  1062. for( int x = 0; x < tabelle->getSpaltenAnzahl(); x++ )
  1063. {
  1064. for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
  1065. {
  1066. Zeichnung *obj = tabelle->zZeichnung( x, y );
  1067. if( obj )
  1068. {
  1069. if( x == tabelle->getSpaltenNummer( "auswahl" ) )
  1070. ( (KontrollKnopf*)obj )->release();
  1071. else
  1072. ( (TextFeld*)obj )->release();
  1073. }
  1074. tabelle->setZeichnungZ( x, y, 0 );
  1075. }
  1076. }
  1077. for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
  1078. tabelle->removeZeile( 1 );
  1079. weiter->removeStyle( Knopf::Style::Erlaubt );
  1080. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1081. tabelle->removeStyle( ObjTabelle::Style::Erlaubt );
  1082. suchen->start();
  1083. }
  1084. }
  1085. else if( details->hatStyle( Fenster::Style::Sichtbar ) )
  1086. {
  1087. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1088. zurück->removeStyle( Knopf::Style::Erlaubt );
  1089. update->removeStyle( Knopf::Style::Erlaubt );
  1090. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1091. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1092. beenden->removeStyle( Knopf::Style::Erlaubt );
  1093. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1094. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1095. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1096. getDetails->start();
  1097. }
  1098. else if( updateF->hatStyle( Fenster::Style::Sichtbar ) )
  1099. {
  1100. int id = -1;
  1101. for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
  1102. {
  1103. if( ( (KontrollKnopf*)tabelle->zZeichnung( 6, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
  1104. {
  1105. id = TextZuInt( tabelle->zZeilenName( i )->getText(), 10 );
  1106. break;
  1107. }
  1108. }
  1109. Array< FileGroupInfo* > list;
  1110. if( psc->getFileGroupInfoList( &list ) )
  1111. {
  1112. for( int i = 1; i < updateT->getZeilenAnzahl(); )
  1113. {
  1114. ( (TextFeld*)updateT->zZeichnung( 0, i ) )->release();
  1115. if( updateT->zZeichnung( 3, i ) == obj )
  1116. ( (FBalken*)updateT->zZeichnung( 1, i ) )->release();
  1117. else
  1118. ( (TextFeld*)updateT->zZeichnung( 1, i ) )->release();
  1119. if( updateT->zZeichnung( 2, i ) )
  1120. ( (KontrollKnopf*)updateT->zZeichnung( 2, i ) )->release();
  1121. updateT->removeZeile( i );
  1122. }
  1123. int anz = list.getEintragAnzahl();
  1124. for( int i = 0; i < anz; i++ )
  1125. {
  1126. FileGroupInfo *info = list.get( i );
  1127. updateT->addZeile( new Text( info->id ) );
  1128. TextFeld *uTN = new TextFeld();
  1129. uTN->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::VCenter );
  1130. uTN->setSchriftZ( schrift->getThis() );
  1131. uTN->setSchriftFarbe( 0xFFFFFFFF );
  1132. uTN->setSchriftSize( 12 );
  1133. uTN->setRahmenFarbe( 0xFFFFFFFF );
  1134. uTN->setText( info->name );
  1135. updateT->setZeichnungZ( 0, i + 1, uTN );
  1136. TextFeld *uTS = new TextFeld();
  1137. uTS->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
  1138. uTS->setRahmenFarbe( 0xFFFFFFFF );
  1139. uTS->setSchriftZ( schrift->getThis() );
  1140. uTS->setSchriftSize( 12 );
  1141. if( info->status.istGleich( "Fehlt" ) )
  1142. uTS->setSchriftFarbe( 0xFFFF0000 );
  1143. if( info->status.istGleich( "Aktuell" ) )
  1144. uTS->setSchriftFarbe( 0xFF00FF00 );
  1145. if( info->status.istGleich( "Veraltet" ) )
  1146. uTS->setSchriftFarbe( 0xFFFFFF00 );
  1147. if( info->status.istGleich( "Update" ) )
  1148. uTS->setSchriftFarbe( 0xFFFFFFFF );
  1149. uTS->setText( info->status.getText() );
  1150. updateT->setZeichnungZ( 1, i + 1, uTS );
  1151. if( info->status.istGleich( "Veraltet" ) || info->status.istGleich( "Fehlt" ) )
  1152. {
  1153. KontrollKnopf *auswahl = new KontrollKnopf();
  1154. auswahl->setStyle( KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer | KontrollKnopf::Style::Rahmen );
  1155. auswahl->loadData( "data/bilder/icons.ltdb" );
  1156. auswahl->setMausEreignisParameter( this );
  1157. auswahl->setMausEreignis( patchServerAuswahlKnopfMausEreignis );
  1158. auswahl->setRahmenFarbe( 0xFFFFFFFF );
  1159. updateT->setZeichnungZ( 2, i + 1, auswahl );
  1160. }
  1161. delete info;
  1162. }
  1163. }
  1164. else
  1165. WMessageBox( 0, new Text( "Fehler" ), new Text( psc->getLetzterFehler() ), MB_ICONERROR );
  1166. }
  1167. }
  1168. return 1;
  1169. }
  1170. bool PatchServer::auswahlKnopfMausEreignis( void *o, MausEreignis me )
  1171. {
  1172. if( !o )
  1173. return 0;
  1174. if( me.id == ME_RLinks )
  1175. {
  1176. if( liste->hatStyle( Fenster::Style::Sichtbar ) )
  1177. {
  1178. for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
  1179. ( (KontrollKnopf*)tabelle->zZeichnung( 6, i ) )->removeStyle( KontrollKnopf::Style::Selected );
  1180. weiter->addStyle( Knopf::Style::Erlaubt );
  1181. }
  1182. }
  1183. return 1;
  1184. }
  1185. bool PatchServer::weiterMausEreignis( void *o, MausEreignis me )
  1186. {
  1187. if( me.id == ME_RLinks )
  1188. {
  1189. liste->removeStyle( Fenster::Style::Sichtbar );
  1190. details->addStyle( Fenster::Style::Sichtbar );
  1191. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1192. zurück->removeStyle( Knopf::Style::Erlaubt );
  1193. update->removeStyle( Knopf::Style::Erlaubt );
  1194. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1195. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1196. beenden->removeStyle( Knopf::Style::Erlaubt );
  1197. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1198. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1199. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1200. int id = -1;
  1201. for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
  1202. {
  1203. if( ( (KontrollKnopf*)tabelle->zZeichnung( 6, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
  1204. {
  1205. id = TextZuInt( tabelle->zZeilenName( i )->getText(), 10 );
  1206. break;
  1207. }
  1208. }
  1209. getDetails->setServerId( id );
  1210. getDetails->start();
  1211. }
  1212. return 1;
  1213. }
  1214. bool PatchServer::zurückMausEreignis( void *o, MausEreignis me )
  1215. {
  1216. if( me.id == ME_RLinks )
  1217. {
  1218. if( details->hatStyle( Fenster::Style::Sichtbar ) )
  1219. {
  1220. details->removeStyle( Fenster::Style::Sichtbar );
  1221. liste->addStyle( Fenster::Style::Sichtbar );
  1222. if( !suchen->isRunning() )
  1223. {
  1224. for( int x = 0; x < tabelle->getSpaltenAnzahl(); x++ )
  1225. {
  1226. for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
  1227. {
  1228. Zeichnung *obj = tabelle->zZeichnung( x, y );
  1229. if( obj )
  1230. {
  1231. if( x == tabelle->getSpaltenNummer( "auswahl" ) )
  1232. ( (KontrollKnopf*)obj )->release();
  1233. else
  1234. ( (TextFeld*)obj )->release();
  1235. }
  1236. tabelle->setZeichnungZ( x, y, 0 );
  1237. }
  1238. }
  1239. for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
  1240. tabelle->removeZeile( 1 );
  1241. weiter->removeStyle( Knopf::Style::Erlaubt );
  1242. zurück->removeStyle( Knopf::Style::Erlaubt );
  1243. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1244. suchen->start();
  1245. }
  1246. if( psc )
  1247. {
  1248. psc->trenne();
  1249. psc = (PSKlient*)psc->release();
  1250. }
  1251. }
  1252. else if( updateF->hatStyle( Fenster::Style::Sichtbar ) )
  1253. {
  1254. updateF->removeStyle( Fenster::Style::Sichtbar );
  1255. details->addStyle( Fenster::Style::Sichtbar );
  1256. aktualisierenMausEreignis( 0, me );
  1257. }
  1258. }
  1259. return 1;
  1260. }
  1261. bool PatchServer::updateMausEreignis( void *o, MausEreignis me )
  1262. {
  1263. if( me.id == ME_RLinks )
  1264. {
  1265. zurück->addStyle( Knopf::Style::Erlaubt );
  1266. weiter->removeStyle( Knopf::Style::Erlaubt );
  1267. details->removeStyle( Fenster::Style::Sichtbar );
  1268. updateF->addStyle( Fenster::Style::Sichtbar );
  1269. aktualisieren->addStyle( Knopf::Style::Erlaubt );
  1270. aktualisierenMausEreignis( 0, me );
  1271. }
  1272. return 1;
  1273. }
  1274. bool PatchServer::pausierenMausEreignis( void *o, MausEreignis me )
  1275. {
  1276. if( me.id == ME_RLinks )
  1277. {
  1278. if( pausieren->zText()->istGleich( "Pausieren" ) )
  1279. {
  1280. if( psc->pause() )
  1281. {
  1282. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1283. zurück->removeStyle( Knopf::Style::Erlaubt );
  1284. update->removeStyle( Knopf::Style::Erlaubt );
  1285. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1286. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1287. beenden->removeStyle( Knopf::Style::Erlaubt );
  1288. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1289. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1290. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1291. getDetails->start();
  1292. }
  1293. else
  1294. serverFehler->setText( psc->getLetzterFehler() );
  1295. }
  1296. else
  1297. {
  1298. if( psc->fortsetzen() )
  1299. {
  1300. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1301. zurück->removeStyle( Knopf::Style::Erlaubt );
  1302. update->removeStyle( Knopf::Style::Erlaubt );
  1303. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1304. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1305. beenden->removeStyle( Knopf::Style::Erlaubt );
  1306. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1307. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1308. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1309. getDetails->start();
  1310. }
  1311. else
  1312. serverFehler->setText( psc->getLetzterFehler() );
  1313. }
  1314. }
  1315. return 1;
  1316. }
  1317. bool PatchServer::stoppenMausEreignis( void *o, MausEreignis me )
  1318. {
  1319. if( me.id == ME_RLinks )
  1320. {
  1321. if( stoppen->zText()->istGleich( "Stoppen" ) )
  1322. {
  1323. if( psc->stop() )
  1324. {
  1325. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1326. zurück->removeStyle( Knopf::Style::Erlaubt );
  1327. update->removeStyle( Knopf::Style::Erlaubt );
  1328. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1329. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1330. beenden->removeStyle( Knopf::Style::Erlaubt );
  1331. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1332. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1333. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1334. getDetails->start();
  1335. }
  1336. else
  1337. serverFehler->setText( psc->getLetzterFehler() );
  1338. }
  1339. else
  1340. {
  1341. if( psc->start() )
  1342. {
  1343. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1344. zurück->removeStyle( Knopf::Style::Erlaubt );
  1345. update->removeStyle( Knopf::Style::Erlaubt );
  1346. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1347. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1348. beenden->removeStyle( Knopf::Style::Erlaubt );
  1349. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1350. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1351. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1352. getDetails->start();
  1353. }
  1354. else
  1355. serverFehler->setText( psc->getLetzterFehler() );
  1356. }
  1357. }
  1358. return 1;
  1359. }
  1360. bool PatchServer::beendenMausEreignis( void *o, MausEreignis me )
  1361. {
  1362. if( me.id == ME_RLinks )
  1363. {
  1364. if( psc->beenden() )
  1365. {
  1366. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1367. zurück->removeStyle( Knopf::Style::Erlaubt );
  1368. update->removeStyle( Knopf::Style::Erlaubt );
  1369. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1370. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1371. beenden->removeStyle( Knopf::Style::Erlaubt );
  1372. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1373. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1374. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1375. zurückMausEreignis( 0, me );
  1376. }
  1377. else
  1378. serverFehler->setText( psc->getLetzterFehler() );
  1379. }
  1380. return 1;
  1381. }
  1382. bool PatchServer::terminierenMausEreignis( void *o, MausEreignis me )
  1383. {
  1384. if( me.id == ME_RLinks )
  1385. {
  1386. if( psc->terminieren() )
  1387. {
  1388. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1389. zurück->removeStyle( Knopf::Style::Erlaubt );
  1390. update->removeStyle( Knopf::Style::Erlaubt );
  1391. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1392. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1393. beenden->removeStyle( Knopf::Style::Erlaubt );
  1394. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1395. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1396. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1397. zurückMausEreignis( 0, me );
  1398. }
  1399. else
  1400. serverFehler->setText( psc->getLetzterFehler() );
  1401. }
  1402. return 1;
  1403. }
  1404. bool PatchServer::setMaxClientsMausEreignis( void *o, MausEreignis me )
  1405. {
  1406. if( me.id == ME_RLinks )
  1407. {
  1408. if( psc->setMaxTasks( TextZuInt( maxClients->zText()->getText(), 10 ) ) )
  1409. {
  1410. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1411. zurück->removeStyle( Knopf::Style::Erlaubt );
  1412. update->removeStyle( Knopf::Style::Erlaubt );
  1413. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1414. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1415. beenden->removeStyle( Knopf::Style::Erlaubt );
  1416. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1417. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1418. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1419. getDetails->start();
  1420. }
  1421. else
  1422. serverFehler->setText( psc->getLetzterFehler() );
  1423. }
  1424. return 1;
  1425. }
  1426. bool PatchServer::updateStartenMausEreignis( void *o, MausEreignis me )
  1427. {
  1428. if( me.id == ME_RLinks )
  1429. {
  1430. int id = -1;
  1431. for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
  1432. {
  1433. if( ( (KontrollKnopf*)tabelle->zZeichnung( 6, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
  1434. {
  1435. id = TextZuInt( tabelle->zZeilenName( i )->getText(), 10 );
  1436. break;
  1437. }
  1438. }
  1439. if( id > 0 )
  1440. {
  1441. int anzahl = 0;
  1442. Array< int > *gruppen = new Array< int >();
  1443. for( int i = 1; i < updateT->getZeilenAnzahl(); i++ )
  1444. {
  1445. if( updateT->zZeichnung( 2, i ) && ( (KontrollKnopf*)updateT->zZeichnung( 2, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
  1446. {
  1447. int gId = TextZuInt( updateT->zZeilenName( i )->getText(), 10 );
  1448. gruppen->set( gId, anzahl );
  1449. anzahl++;
  1450. }
  1451. }
  1452. if( anzahl )
  1453. {
  1454. updateStarten->removeStyle( Knopf::Style::Erlaubt );
  1455. zurück->removeStyle( Knopf::Style::Erlaubt );
  1456. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1457. updateT->removeStyle( ObjTabelle::Style::Erlaubt );
  1458. updateTh->setUpdateListe( anzahl, gruppen );
  1459. updateTh->start();
  1460. }
  1461. gruppen->release();
  1462. }
  1463. }
  1464. return 1;
  1465. }
  1466. bool PatchServer::maxClientsTastaturEreignis( void *o, TastaturEreignis te )
  1467. {
  1468. bool ret = 0;
  1469. if( te.taste >= '0' && te.taste <= '9' )
  1470. ret = 1;
  1471. if( te.taste == T_Entf || te.taste == T_BackSpace )
  1472. ret = 1;
  1473. if( te.taste == T_Links || te.taste == T_Rechts )
  1474. ret = 1;
  1475. if( ret )
  1476. setMaxClients->addStyle( Knopf::Style::Erlaubt );
  1477. return ret;
  1478. }
  1479. // constant
  1480. // Reference Counting
  1481. Abschnitt *PatchServer::getThis()
  1482. {
  1483. ref++;
  1484. return this;
  1485. }
  1486. Abschnitt *PatchServer::release()
  1487. {
  1488. ref--;
  1489. if( !ref )
  1490. delete this;
  1491. return 0;
  1492. }
  1493. // Ereignisse
  1494. bool patchServerAktualisierenMausEreignis( void *p, void *o, MausEreignis me )
  1495. {
  1496. if( !p )
  1497. return 0;
  1498. return ( (PatchServer*)p )->aktualisierenMausEreignis( o, me );
  1499. }
  1500. bool patchServerAuswahlKnopfMausEreignis( void *p, void *o, MausEreignis me )
  1501. {
  1502. if( !p )
  1503. return 0;
  1504. return ( (PatchServer*)p )->auswahlKnopfMausEreignis( o, me );
  1505. }
  1506. bool patchServerWeiterMausEreignis( void *p, void *o, MausEreignis me )
  1507. {
  1508. if( !p )
  1509. return 0;
  1510. return ( (PatchServer*)p )->weiterMausEreignis( o, me );
  1511. }
  1512. bool patchServerZurückMausEreignis( void *p, void *o, MausEreignis me )
  1513. {
  1514. if( !p )
  1515. return 0;
  1516. return ( (PatchServer*)p )->zurückMausEreignis( o, me );
  1517. }
  1518. bool patchServerUpdateMausEreignis( void *p, void *o, MausEreignis me )
  1519. {
  1520. if( !p )
  1521. return 0;
  1522. return ( (PatchServer*)p )->updateMausEreignis( o, me );
  1523. }
  1524. bool patchServerPausierenMausEreignis( void *p, void *o, MausEreignis me )
  1525. {
  1526. if( !p )
  1527. return 0;
  1528. return ( (PatchServer*)p )->pausierenMausEreignis( o, me );
  1529. }
  1530. bool patchServerStoppenMausEreignis( void *p, void *o, MausEreignis me )
  1531. {
  1532. if( !p )
  1533. return 0;
  1534. return ( (PatchServer*)p )->stoppenMausEreignis( o, me );
  1535. }
  1536. bool patchServerBeendenMausEreignis( void *p, void *o, MausEreignis me )
  1537. {
  1538. if( !p )
  1539. return 0;
  1540. return ( (PatchServer*)p )->beendenMausEreignis( o, me );
  1541. }
  1542. bool patchServerTerminierenMausEreignis( void *p, void *o, MausEreignis me )
  1543. {
  1544. if( !p )
  1545. return 0;
  1546. return ( (PatchServer*)p )->terminierenMausEreignis( o, me );
  1547. }
  1548. bool patchServerSetMaxClientsMausEreignis( void *p, void *o, MausEreignis me )
  1549. {
  1550. if( !p )
  1551. return 0;
  1552. return ( (PatchServer*)p )->setMaxClientsMausEreignis( o, me );
  1553. }
  1554. bool patchServerUpdateStartenMausEreignis( void *p, void *o, MausEreignis me )
  1555. {
  1556. if( !p )
  1557. return 0;
  1558. return ( (PatchServer*)p )->updateStartenMausEreignis( o, me );
  1559. }
  1560. bool patchServerMaxClientsTastaturEreignis( void *p, void *o, TastaturEreignis te )
  1561. {
  1562. if( !p )
  1563. return 0;
  1564. return ( (PatchServer*)p )->maxClientsTastaturEreignis( o, te );
  1565. }