PatchServer.cpp 59 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681
  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 );
  498. details = new Fenster();
  499. details->setStyle( Fenster::Style::Erlaubt );
  500. details->setSize( 490, 255 );
  501. f->addMember( details );
  502. updateF = new Fenster();
  503. updateF->setStyle( Fenster::Style::Erlaubt );
  504. updateF->setSize( 490, 255 );
  505. f->addMember( updateF );
  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->setLinienRahmenFarbe( 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 );
  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 );
  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 );
  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 );
  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 );
  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 );
  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 );
  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 );
  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 );
  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 );
  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 );
  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->setLinienRahmenBreite( 1 );
  635. maxClients->setLinienRahmenFarbe( 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 );
  645. serverStatus = new TextFeld();
  646. serverStatus->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Mehrfarbig );
  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 );
  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 );
  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 );
  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 );
  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 );
  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 );
  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 );
  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 );
  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->setLinienRahmenFarbe( 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->setLinienRahmenFarbe( 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->setLinienRahmenFarbe( 0xFFFFFFFF );
  748. uTS->setText( "Status" );
  749. updateT->setZeichnungZ( 1, 0, uTS );
  750. updateT->setMausEreignis( _ret1ME );
  751. updateT->setTastaturEreignis( _ret1TE );
  752. updateF->addMember( updateT );
  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 );
  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. for( int i = 0; i < updateT->getZeilenAnzahl(); i++ )
  773. {
  774. ( (TextFeld*)updateT->zZeichnung( 0, i ) )->release();
  775. if( updateT->zZeichnung( 3, i ) == obj )
  776. ( (FBalken*)updateT->zZeichnung( 1, i ) )->release();
  777. else
  778. ( (TextFeld*)updateT->zZeichnung( 1, i ) )->release();
  779. if( updateT->zZeichnung( 2, i ) )
  780. ( (KontrollKnopf*)updateT->zZeichnung( 2, i ) )->release();
  781. }
  782. delete obj;
  783. if( psc )
  784. {
  785. psc->trenne();
  786. psc->release();
  787. }
  788. if( fenster )
  789. {
  790. fenster->removeMember( f );
  791. fenster->release();
  792. }
  793. account->release();
  794. msk->release();
  795. iD->release();
  796. f->release();
  797. liste->release();
  798. details->release();
  799. updateF->release();
  800. updateStarten->release();
  801. updateT->release();
  802. aktualisieren->release();
  803. weiter->release();
  804. zurück->release();
  805. update->release();
  806. pausieren->release();
  807. stoppen->release();
  808. beenden->release();
  809. terminieren->release();
  810. setMaxClients->release();
  811. serverId->release();
  812. serverName->release();
  813. serverIp->release();
  814. serverPort->release();
  815. serverAPort->release();
  816. serverClients->release();
  817. serverMaxClients->release();
  818. serverStatus->release();
  819. serverFehler->release();
  820. maxClients->release();
  821. suchen->release();
  822. getDetails->release();
  823. updateTh->release();
  824. for( int x = 0; x < tabelle->getSpaltenAnzahl(); x++ )
  825. {
  826. for( int y = 0; y < tabelle->getZeilenAnzahl(); y++ )
  827. {
  828. Zeichnung *obj = tabelle->zZeichnung( x, y );
  829. if( obj )
  830. {
  831. if( x == tabelle->getSpaltenNummer( "auswahl" ) )
  832. ( (KontrollKnopf*)obj )->release();
  833. else
  834. ( (TextFeld*)obj )->release();
  835. }
  836. tabelle->setZeichnungZ( x, y, 0 );
  837. }
  838. }
  839. tabelle->release();
  840. schrift->release();
  841. }
  842. // nicht constant
  843. void PatchServer::setFenster( Fenster *f )
  844. {
  845. if( fenster )
  846. fenster->release();
  847. this->f->setPosition( f->getBreite() / 2 - this->f->getBreite() / 2, f->getHeight() / 2 - this->f->getHeight() / 2 );
  848. fenster = f;
  849. }
  850. void PatchServer::setSichtbar( bool s )
  851. {
  852. sichtbar = s;
  853. if( s )
  854. {
  855. if( !suchen->isRunning() && liste->hatStyle( Fenster::Style::Sichtbar ) )
  856. {
  857. for( int x = 0; x < tabelle->getSpaltenAnzahl(); x++ )
  858. {
  859. for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
  860. {
  861. Zeichnung *obj = tabelle->zZeichnung( x, y );
  862. if( obj )
  863. {
  864. if( x == tabelle->getSpaltenNummer( "auswahl" ) )
  865. ( (KontrollKnopf*)obj )->release();
  866. else
  867. ( (TextFeld*)obj )->release();
  868. }
  869. tabelle->setZeichnungZ( x, y, 0 );
  870. }
  871. }
  872. for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
  873. tabelle->removeZeile( 1 );
  874. weiter->removeStyle( Knopf::Style::Erlaubt );
  875. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  876. tabelle->removeStyle( ObjTabelle::Style::Erlaubt );
  877. suchen->start();
  878. }
  879. fenster->addMember( f );
  880. }
  881. else
  882. fenster->removeMember( f );
  883. }
  884. void PatchServer::addServer( int id, char *name, char *ip, int port, int adminPort, char *status )
  885. {
  886. Text *txt = new Text();
  887. txt->append( id );
  888. tabelle->addZeile( txt->getText() );
  889. int y = tabelle->getZeilenNummer( txt->getText() );
  890. tabelle->setZeilenHeight( y, 20 );
  891. tabelle->setZeichnungZ( 0, y, getTabellenEintrag( txt->getText(), schrift->getThis(), 0xFFFFFFFF ) );
  892. tabelle->setZeichnungZ( 1, y, getTabellenEintrag( name, schrift->getThis(), 0xFFFFFFFF ) );
  893. tabelle->setZeichnungZ( 2, y, getTabellenEintrag( ip, schrift->getThis(), 0xFFFFFFFF ) );
  894. txt->setText( "" );
  895. txt->append( port );
  896. tabelle->setZeichnungZ( 3, y, getTabellenEintrag( txt->getText(), schrift->getThis(), 0xFFFFFFFF ) );
  897. txt->setText( "" );
  898. txt->append( adminPort );
  899. tabelle->setZeichnungZ( 4, y, getTabellenEintrag( txt->getText(), schrift->getThis(), 0xFFFFFFFF ) );
  900. txt->release();
  901. tabelle->setZeichnungZ( 5, y, getTabellenEintrag( status, schrift->getThis(), getColorFromStatus( status ) ) );
  902. KontrollKnopf *knopf = new KontrollKnopf();
  903. knopf->setStyle( KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer );
  904. knopf->loadData( "data/bilder/icons.ltdb" );
  905. knopf->setMausEreignisParameter( this );
  906. knopf->setMausEreignis( patchServerAuswahlKnopfMausEreignis );
  907. tabelle->setZeichnungZ( 6, y, knopf );
  908. }
  909. void PatchServer::setServerDetails( int id, char *name, char *ip, int port, int adminPort, int clients, int maxClients, int status, Text *error )
  910. {
  911. if( !psc )
  912. {
  913. psc = new PSKlient( ip, adminPort );
  914. psc->verbinden();
  915. psc->login( account->zName()->getText(), account->zPasswort()->getText() );
  916. updateTh->setServer( ip, adminPort );
  917. }
  918. if( !error )
  919. {
  920. serverId->setText( "ID: " );
  921. serverId->zText()->append( id );
  922. serverName->setText( "Name: " );
  923. serverName->zText()->append( name );
  924. serverIp->setText( "IP: " );
  925. serverIp->zText()->append( ip );
  926. serverPort->setText( "Port: " );
  927. serverPort->zText()->append( port );
  928. serverAPort->setText( "Admin Port: " );
  929. serverAPort->zText()->append( adminPort );
  930. serverClients->setText( "Clients: " );
  931. serverClients->zText()->append( clients );
  932. this->maxClients->setText( "" );
  933. this->maxClients->zText()->append( maxClients );
  934. serverFehler->setText( "" );
  935. switch( status )
  936. {
  937. case -2: // Unbekannt
  938. serverStatus->setText( "\r0xFFFFFFFFStatus: \r0xFFFF8800Unbekannt" );
  939. break;
  940. case -1: // Unerreichbar
  941. serverStatus->setText( "\r0xFFFFFFFFStatus: \r0xFFFF0000Unerreichbar" );
  942. break;
  943. case 0: // Offline
  944. serverStatus->setText( "\r0xFFFFFFFFStatus: \r0xFFFFFF00Offline" );
  945. stoppen->setText( "Starten" );
  946. stoppen->addStyle( Knopf::Style::Erlaubt );
  947. beenden->addStyle( Knopf::Style::Erlaubt );
  948. terminieren->addStyle( Knopf::Style::Erlaubt );
  949. this->maxClients->addStyle( TextFeld::Style::Erlaubt );
  950. break;
  951. case 1: // Pausiert
  952. serverStatus->setText( "\r0xFFFFFFFFStatus: \r0xFF88FF00Pausiert" );
  953. pausieren->setText( "Fortsetzen" );
  954. pausieren->addStyle( Knopf::Style::Erlaubt );
  955. stoppen->setText( "Stoppen" );
  956. stoppen->addStyle( Knopf::Style::Erlaubt );
  957. beenden->addStyle( Knopf::Style::Erlaubt );
  958. terminieren->addStyle( Knopf::Style::Erlaubt );
  959. this->maxClients->addStyle( TextFeld::Style::Erlaubt );
  960. break;
  961. case 2: // Online
  962. serverStatus->setText( "\r0xFFFFFFFFStatus: \r0xFF00FF00Online" );
  963. pausieren->setText( "Pausieren" );
  964. pausieren->addStyle( Knopf::Style::Erlaubt );
  965. terminieren->addStyle( Knopf::Style::Erlaubt );
  966. this->maxClients->addStyle( TextFeld::Style::Erlaubt );
  967. break;
  968. case 3: // Veraltet
  969. serverStatus->setText( "\r0xFFFFFFFFStatus: \r0xFFB0FF00Veraltet" );
  970. pausieren->setText( "Pausieren" );
  971. pausieren->addStyle( Knopf::Style::Erlaubt );
  972. update->addStyle( Knopf::Style::Erlaubt );
  973. beenden->addStyle( Knopf::Style::Erlaubt );
  974. terminieren->addStyle( Knopf::Style::Erlaubt );
  975. this->maxClients->addStyle( TextFeld::Style::Erlaubt );
  976. break;
  977. }
  978. aktualisieren->addStyle( Knopf::Style::Erlaubt );
  979. zurück->addStyle( Knopf::Style::Erlaubt );
  980. update->addStyle( Knopf::Style::Erlaubt );
  981. }
  982. else
  983. {
  984. serverId->setText( "ID: " );
  985. serverName->setText( "Name: " );
  986. serverIp->setText( "IP: " );
  987. serverPort->setText( "Port: " );
  988. serverAPort->setText( "APort: " );
  989. serverClients->setText( "Clients: " );
  990. this->maxClients->setText( "" );
  991. this->serverStatus->setText( "Status: " );
  992. aktualisieren->addStyle( Knopf::Style::Erlaubt );
  993. zurück->addStyle( Knopf::Style::Erlaubt );
  994. serverFehler->setText( error );
  995. }
  996. }
  997. void PatchServer::sucheAbgeschlossen()
  998. {
  999. aktualisieren->addStyle( Knopf::Style::Erlaubt );
  1000. tabelle->addStyle( ObjTabelle::Style::Erlaubt );
  1001. }
  1002. void PatchServer::setUpdateProzent( int prozent, int gruppe )
  1003. {
  1004. for( int i = 0; i < updateT->getZeilenAnzahl(); i++ )
  1005. {
  1006. if( gruppe == TextZuInt( updateT->zZeilenName( i )->getText(), 10 ) )
  1007. {
  1008. if( updateT->zZeichnung( 3, i ) != obj )
  1009. {
  1010. updateT->lockZeichnung();
  1011. ( (TextFeld*)updateT->zZeichnung( 1, i ) )->release();
  1012. FBalken *fb = new FBalken();
  1013. fb->setStyle( FBalken::Style::Sichtbar | FBalken::Style::L_R | FBalken::Style::FFarbe | FBalken::Style::Hintergrund | FBalken::Style::Prozent | FBalken::Style::Rahmen | FBalken::Style::FRahmen );
  1014. fb->setFBgFarbe( 0xFF00FF00 );
  1015. fb->setHintergrundFarbe( 0xFFFFFFFF );
  1016. fb->setSFarbe( 0xFF000000 );
  1017. fb->setSchriftZ( schrift->getThis() );
  1018. fb->setSSize( 12 );
  1019. fb->setLinienRahmenBreite( 1 );
  1020. fb->setLinienRahmenFarbe( 0xFF55FF55 );
  1021. fb->setFRFarbe( 0xFF55FF55 );
  1022. fb->reset();
  1023. fb->setAktionAnzahl( 100 );
  1024. updateT->setZeichnungZ( 1, i, fb );
  1025. updateT->setZeichnungZ( 3, i, obj );
  1026. updateT->unlockZeichnung();
  1027. }
  1028. ( (FBalken*)updateT->zZeichnung( 1, i ) )->reset();
  1029. ( (FBalken*)updateT->zZeichnung( 1, i ) )->aktionPlus( prozent );
  1030. return;
  1031. }
  1032. }
  1033. }
  1034. void PatchServer::setUpdateFertig( bool error, int gruppe )
  1035. {
  1036. if( !gruppe )
  1037. { // gesamter Vorgang abgeschlossen
  1038. aktualisieren->addStyle( Knopf::Style::Erlaubt );
  1039. zurück->addStyle( Knopf::Style::Erlaubt );
  1040. updateStarten->addStyle( Knopf::Style::Erlaubt );
  1041. updateT->addStyle( ObjTabelle::Style::Erlaubt );
  1042. MausEreignis me;
  1043. me.id = ME_RLinks;
  1044. b->lock();
  1045. aktualisierenMausEreignis( 0, me );
  1046. b->unlock();
  1047. }
  1048. else
  1049. { // einzelner Schritt abgeschlossen
  1050. for( int i = 0; i < updateT->getZeilenAnzahl(); i++ )
  1051. {
  1052. if( gruppe == TextZuInt( updateT->zZeilenName( i )->getText(), 10 ) )
  1053. {
  1054. updateT->lockZeichnung();
  1055. ( (FBalken*)updateT->zZeichnung( 1, i ) )->release();
  1056. TextFeld *uTS = new TextFeld();
  1057. uTS->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
  1058. uTS->setSchriftZ( schrift->getThis() );
  1059. uTS->setSchriftSize( 12 );
  1060. uTS->setLinienRahmenFarbe( 0xFFFFFFFF );
  1061. if( error )
  1062. {
  1063. uTS->setText( "Fehler" );
  1064. uTS->setSchriftFarbe( 0xFFFF0000 );
  1065. }
  1066. else
  1067. {
  1068. uTS->setText( "Aktuell" );
  1069. uTS->setSchriftFarbe( 0xFF00FF00 );
  1070. }
  1071. updateT->setZeichnungZ( 1, i, uTS );
  1072. updateT->setZeichnungZ( 3, i, 0 );
  1073. updateT->unlockZeichnung();
  1074. return;
  1075. }
  1076. }
  1077. }
  1078. }
  1079. bool PatchServer::aktualisierenMausEreignis( void *o, MausEreignis me )
  1080. {
  1081. if( me.id == ME_RLinks )
  1082. {
  1083. if( liste->hatStyle( Fenster::Style::Sichtbar ) )
  1084. {
  1085. if( !suchen->isRunning() )
  1086. {
  1087. for( int x = 0; x < tabelle->getSpaltenAnzahl(); x++ )
  1088. {
  1089. for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
  1090. {
  1091. Zeichnung *obj = tabelle->zZeichnung( x, y );
  1092. if( obj )
  1093. {
  1094. if( x == tabelle->getSpaltenNummer( "auswahl" ) )
  1095. ( (KontrollKnopf*)obj )->release();
  1096. else
  1097. ( (TextFeld*)obj )->release();
  1098. }
  1099. tabelle->setZeichnungZ( x, y, 0 );
  1100. }
  1101. }
  1102. for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
  1103. tabelle->removeZeile( 1 );
  1104. weiter->removeStyle( Knopf::Style::Erlaubt );
  1105. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1106. tabelle->removeStyle( ObjTabelle::Style::Erlaubt );
  1107. suchen->start();
  1108. }
  1109. }
  1110. else if( details->hatStyle( Fenster::Style::Sichtbar ) )
  1111. {
  1112. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1113. zurück->removeStyle( Knopf::Style::Erlaubt );
  1114. update->removeStyle( Knopf::Style::Erlaubt );
  1115. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1116. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1117. beenden->removeStyle( Knopf::Style::Erlaubt );
  1118. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1119. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1120. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1121. getDetails->start();
  1122. }
  1123. else if( updateF->hatStyle( Fenster::Style::Sichtbar ) )
  1124. {
  1125. int id = -1;
  1126. for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
  1127. {
  1128. if( ( (KontrollKnopf*)tabelle->zZeichnung( 6, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
  1129. {
  1130. id = TextZuInt( tabelle->zZeilenName( i )->getText(), 10 );
  1131. break;
  1132. }
  1133. }
  1134. Array< FileGroupInfo* > list;
  1135. if( psc->getFileGroupInfoList( &list ) )
  1136. {
  1137. for( int i = 1; i < updateT->getZeilenAnzahl(); )
  1138. {
  1139. ( (TextFeld*)updateT->zZeichnung( 0, i ) )->release();
  1140. if( updateT->zZeichnung( 3, i ) == obj )
  1141. ( (FBalken*)updateT->zZeichnung( 1, i ) )->release();
  1142. else
  1143. ( (TextFeld*)updateT->zZeichnung( 1, i ) )->release();
  1144. if( updateT->zZeichnung( 2, i ) )
  1145. ( (KontrollKnopf*)updateT->zZeichnung( 2, i ) )->release();
  1146. updateT->removeZeile( i );
  1147. }
  1148. int anz = list.getEintragAnzahl();
  1149. for( int i = 0; i < anz; i++ )
  1150. {
  1151. FileGroupInfo *info = list.get( i );
  1152. updateT->addZeile( new Text( info->id ) );
  1153. TextFeld *uTN = new TextFeld();
  1154. uTN->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::VCenter );
  1155. uTN->setSchriftZ( schrift->getThis() );
  1156. uTN->setSchriftFarbe( 0xFFFFFFFF );
  1157. uTN->setSchriftSize( 12 );
  1158. uTN->setLinienRahmenFarbe( 0xFFFFFFFF );
  1159. uTN->setText( info->name );
  1160. updateT->setZeichnungZ( 0, i + 1, uTN );
  1161. TextFeld *uTS = new TextFeld();
  1162. uTS->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
  1163. uTS->setLinienRahmenFarbe( 0xFFFFFFFF );
  1164. uTS->setSchriftZ( schrift->getThis() );
  1165. uTS->setSchriftSize( 12 );
  1166. if( info->status.istGleich( "Fehlt" ) )
  1167. uTS->setSchriftFarbe( 0xFFFF0000 );
  1168. if( info->status.istGleich( "Aktuell" ) )
  1169. uTS->setSchriftFarbe( 0xFF00FF00 );
  1170. if( info->status.istGleich( "Veraltet" ) )
  1171. uTS->setSchriftFarbe( 0xFFFFFF00 );
  1172. if( info->status.istGleich( "Update" ) )
  1173. uTS->setSchriftFarbe( 0xFFFFFFFF );
  1174. uTS->setText( info->status.getText() );
  1175. updateT->setZeichnungZ( 1, i + 1, uTS );
  1176. if( info->status.istGleich( "Veraltet" ) || info->status.istGleich( "Fehlt" ) )
  1177. {
  1178. KontrollKnopf *auswahl = new KontrollKnopf();
  1179. auswahl->setStyle( KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer | KontrollKnopf::Style::Rahmen );
  1180. auswahl->loadData( "data/bilder/icons.ltdb" );
  1181. auswahl->setMausEreignisParameter( this );
  1182. auswahl->setMausEreignis( patchServerAuswahlKnopfMausEreignis );
  1183. auswahl->setLinienRahmenFarbe( 0xFFFFFFFF );
  1184. updateT->setZeichnungZ( 2, i + 1, auswahl );
  1185. }
  1186. delete info;
  1187. }
  1188. }
  1189. else
  1190. WMessageBox( 0, new Text( "Fehler" ), new Text( psc->getLetzterFehler() ), MB_ICONERROR );
  1191. }
  1192. }
  1193. return 1;
  1194. }
  1195. bool PatchServer::auswahlKnopfMausEreignis( void *o, MausEreignis me )
  1196. {
  1197. if( !o )
  1198. return 0;
  1199. if( me.id == ME_RLinks )
  1200. {
  1201. if( liste->hatStyle( Fenster::Style::Sichtbar ) )
  1202. {
  1203. for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
  1204. ( (KontrollKnopf*)tabelle->zZeichnung( 6, i ) )->removeStyle( KontrollKnopf::Style::Selected );
  1205. weiter->addStyle( Knopf::Style::Erlaubt );
  1206. }
  1207. }
  1208. return 1;
  1209. }
  1210. bool PatchServer::weiterMausEreignis( void *o, MausEreignis me )
  1211. {
  1212. if( me.id == ME_RLinks )
  1213. {
  1214. liste->removeStyle( Fenster::Style::Sichtbar );
  1215. details->addStyle( Fenster::Style::Sichtbar );
  1216. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1217. zurück->removeStyle( Knopf::Style::Erlaubt );
  1218. update->removeStyle( Knopf::Style::Erlaubt );
  1219. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1220. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1221. beenden->removeStyle( Knopf::Style::Erlaubt );
  1222. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1223. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1224. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1225. int id = -1;
  1226. for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
  1227. {
  1228. if( ( (KontrollKnopf*)tabelle->zZeichnung( 6, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
  1229. {
  1230. id = TextZuInt( tabelle->zZeilenName( i )->getText(), 10 );
  1231. break;
  1232. }
  1233. }
  1234. getDetails->setServerId( id );
  1235. getDetails->start();
  1236. }
  1237. return 1;
  1238. }
  1239. bool PatchServer::zurückMausEreignis( void *o, MausEreignis me )
  1240. {
  1241. if( me.id == ME_RLinks )
  1242. {
  1243. if( details->hatStyle( Fenster::Style::Sichtbar ) )
  1244. {
  1245. details->removeStyle( Fenster::Style::Sichtbar );
  1246. liste->addStyle( Fenster::Style::Sichtbar );
  1247. if( !suchen->isRunning() )
  1248. {
  1249. for( int x = 0; x < tabelle->getSpaltenAnzahl(); x++ )
  1250. {
  1251. for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
  1252. {
  1253. Zeichnung *obj = tabelle->zZeichnung( x, y );
  1254. if( obj )
  1255. {
  1256. if( x == tabelle->getSpaltenNummer( "auswahl" ) )
  1257. ( (KontrollKnopf*)obj )->release();
  1258. else
  1259. ( (TextFeld*)obj )->release();
  1260. }
  1261. tabelle->setZeichnungZ( x, y, 0 );
  1262. }
  1263. }
  1264. for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
  1265. tabelle->removeZeile( 1 );
  1266. weiter->removeStyle( Knopf::Style::Erlaubt );
  1267. zurück->removeStyle( Knopf::Style::Erlaubt );
  1268. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1269. suchen->start();
  1270. }
  1271. if( psc )
  1272. {
  1273. psc->trenne();
  1274. psc = (PSKlient*)psc->release();
  1275. }
  1276. }
  1277. else if( updateF->hatStyle( Fenster::Style::Sichtbar ) )
  1278. {
  1279. updateF->removeStyle( Fenster::Style::Sichtbar );
  1280. details->addStyle( Fenster::Style::Sichtbar );
  1281. aktualisierenMausEreignis( 0, me );
  1282. }
  1283. }
  1284. return 1;
  1285. }
  1286. bool PatchServer::updateMausEreignis( void *o, MausEreignis me )
  1287. {
  1288. if( me.id == ME_RLinks )
  1289. {
  1290. zurück->addStyle( Knopf::Style::Erlaubt );
  1291. weiter->removeStyle( Knopf::Style::Erlaubt );
  1292. details->removeStyle( Fenster::Style::Sichtbar );
  1293. updateF->addStyle( Fenster::Style::Sichtbar );
  1294. aktualisieren->addStyle( Knopf::Style::Erlaubt );
  1295. aktualisierenMausEreignis( 0, me );
  1296. }
  1297. return 1;
  1298. }
  1299. bool PatchServer::pausierenMausEreignis( void *o, MausEreignis me )
  1300. {
  1301. if( me.id == ME_RLinks )
  1302. {
  1303. if( pausieren->zText()->istGleich( "Pausieren" ) )
  1304. {
  1305. if( psc->pause() )
  1306. {
  1307. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1308. zurück->removeStyle( Knopf::Style::Erlaubt );
  1309. update->removeStyle( Knopf::Style::Erlaubt );
  1310. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1311. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1312. beenden->removeStyle( Knopf::Style::Erlaubt );
  1313. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1314. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1315. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1316. getDetails->start();
  1317. }
  1318. else
  1319. serverFehler->setText( psc->getLetzterFehler() );
  1320. }
  1321. else
  1322. {
  1323. if( psc->fortsetzen() )
  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. }
  1340. return 1;
  1341. }
  1342. bool PatchServer::stoppenMausEreignis( void *o, MausEreignis me )
  1343. {
  1344. if( me.id == ME_RLinks )
  1345. {
  1346. if( stoppen->zText()->istGleich( "Stoppen" ) )
  1347. {
  1348. if( psc->stop() )
  1349. {
  1350. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1351. zurück->removeStyle( Knopf::Style::Erlaubt );
  1352. update->removeStyle( Knopf::Style::Erlaubt );
  1353. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1354. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1355. beenden->removeStyle( Knopf::Style::Erlaubt );
  1356. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1357. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1358. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1359. getDetails->start();
  1360. }
  1361. else
  1362. serverFehler->setText( psc->getLetzterFehler() );
  1363. }
  1364. else
  1365. {
  1366. if( psc->start() )
  1367. {
  1368. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1369. zurück->removeStyle( Knopf::Style::Erlaubt );
  1370. update->removeStyle( Knopf::Style::Erlaubt );
  1371. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1372. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1373. beenden->removeStyle( Knopf::Style::Erlaubt );
  1374. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1375. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1376. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1377. getDetails->start();
  1378. }
  1379. else
  1380. serverFehler->setText( psc->getLetzterFehler() );
  1381. }
  1382. }
  1383. return 1;
  1384. }
  1385. bool PatchServer::beendenMausEreignis( void *o, MausEreignis me )
  1386. {
  1387. if( me.id == ME_RLinks )
  1388. {
  1389. if( psc->beenden() )
  1390. {
  1391. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1392. zurück->removeStyle( Knopf::Style::Erlaubt );
  1393. update->removeStyle( Knopf::Style::Erlaubt );
  1394. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1395. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1396. beenden->removeStyle( Knopf::Style::Erlaubt );
  1397. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1398. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1399. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1400. zurückMausEreignis( 0, me );
  1401. }
  1402. else
  1403. serverFehler->setText( psc->getLetzterFehler() );
  1404. }
  1405. return 1;
  1406. }
  1407. bool PatchServer::terminierenMausEreignis( void *o, MausEreignis me )
  1408. {
  1409. if( me.id == ME_RLinks )
  1410. {
  1411. if( psc->terminieren() )
  1412. {
  1413. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1414. zurück->removeStyle( Knopf::Style::Erlaubt );
  1415. update->removeStyle( Knopf::Style::Erlaubt );
  1416. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1417. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1418. beenden->removeStyle( Knopf::Style::Erlaubt );
  1419. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1420. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1421. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1422. zurückMausEreignis( 0, me );
  1423. }
  1424. else
  1425. serverFehler->setText( psc->getLetzterFehler() );
  1426. }
  1427. return 1;
  1428. }
  1429. bool PatchServer::setMaxClientsMausEreignis( void *o, MausEreignis me )
  1430. {
  1431. if( me.id == ME_RLinks )
  1432. {
  1433. if( psc->setMaxTasks( TextZuInt( maxClients->zText()->getText(), 10 ) ) )
  1434. {
  1435. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1436. zurück->removeStyle( Knopf::Style::Erlaubt );
  1437. update->removeStyle( Knopf::Style::Erlaubt );
  1438. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1439. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1440. beenden->removeStyle( Knopf::Style::Erlaubt );
  1441. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1442. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1443. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1444. getDetails->start();
  1445. }
  1446. else
  1447. serverFehler->setText( psc->getLetzterFehler() );
  1448. }
  1449. return 1;
  1450. }
  1451. bool PatchServer::updateStartenMausEreignis( void *o, MausEreignis me )
  1452. {
  1453. if( me.id == ME_RLinks )
  1454. {
  1455. int id = -1;
  1456. for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
  1457. {
  1458. if( ( (KontrollKnopf*)tabelle->zZeichnung( 6, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
  1459. {
  1460. id = TextZuInt( tabelle->zZeilenName( i )->getText(), 10 );
  1461. break;
  1462. }
  1463. }
  1464. if( id > 0 )
  1465. {
  1466. int anzahl = 0;
  1467. Array< int > *gruppen = new Array< int >();
  1468. for( int i = 1; i < updateT->getZeilenAnzahl(); i++ )
  1469. {
  1470. if( updateT->zZeichnung( 2, i ) && ( (KontrollKnopf*)updateT->zZeichnung( 2, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
  1471. {
  1472. int gId = TextZuInt( updateT->zZeilenName( i )->getText(), 10 );
  1473. gruppen->set( gId, anzahl );
  1474. anzahl++;
  1475. }
  1476. }
  1477. if( anzahl )
  1478. {
  1479. updateStarten->removeStyle( Knopf::Style::Erlaubt );
  1480. zurück->removeStyle( Knopf::Style::Erlaubt );
  1481. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1482. updateT->removeStyle( ObjTabelle::Style::Erlaubt );
  1483. updateTh->setUpdateListe( anzahl, gruppen );
  1484. updateTh->start();
  1485. }
  1486. gruppen->release();
  1487. }
  1488. }
  1489. return 1;
  1490. }
  1491. bool PatchServer::maxClientsTastaturEreignis( void *o, TastaturEreignis te )
  1492. {
  1493. bool ret = 0;
  1494. if( te.taste >= '0' && te.taste <= '9' )
  1495. ret = 1;
  1496. if( te.taste == T_Entf || te.taste == T_BackSpace )
  1497. ret = 1;
  1498. if( te.taste == T_Links || te.taste == T_Rechts )
  1499. ret = 1;
  1500. if( ret )
  1501. setMaxClients->addStyle( Knopf::Style::Erlaubt );
  1502. return ret;
  1503. }
  1504. // constant
  1505. // Reference Counting
  1506. Abschnitt *PatchServer::getThis()
  1507. {
  1508. ref++;
  1509. return this;
  1510. }
  1511. Abschnitt *PatchServer::release()
  1512. {
  1513. ref--;
  1514. if( !ref )
  1515. delete this;
  1516. return 0;
  1517. }
  1518. // Ereignisse
  1519. bool patchServerAktualisierenMausEreignis( void *p, void *o, MausEreignis me )
  1520. {
  1521. if( !p )
  1522. return 0;
  1523. return ( (PatchServer*)p )->aktualisierenMausEreignis( o, me );
  1524. }
  1525. bool patchServerAuswahlKnopfMausEreignis( void *p, void *o, MausEreignis me )
  1526. {
  1527. if( !p )
  1528. return 0;
  1529. return ( (PatchServer*)p )->auswahlKnopfMausEreignis( o, me );
  1530. }
  1531. bool patchServerWeiterMausEreignis( void *p, void *o, MausEreignis me )
  1532. {
  1533. if( !p )
  1534. return 0;
  1535. return ( (PatchServer*)p )->weiterMausEreignis( o, me );
  1536. }
  1537. bool patchServerZurückMausEreignis( void *p, void *o, MausEreignis me )
  1538. {
  1539. if( !p )
  1540. return 0;
  1541. return ( (PatchServer*)p )->zurückMausEreignis( o, me );
  1542. }
  1543. bool patchServerUpdateMausEreignis( void *p, void *o, MausEreignis me )
  1544. {
  1545. if( !p )
  1546. return 0;
  1547. return ( (PatchServer*)p )->updateMausEreignis( o, me );
  1548. }
  1549. bool patchServerPausierenMausEreignis( void *p, void *o, MausEreignis me )
  1550. {
  1551. if( !p )
  1552. return 0;
  1553. return ( (PatchServer*)p )->pausierenMausEreignis( o, me );
  1554. }
  1555. bool patchServerStoppenMausEreignis( void *p, void *o, MausEreignis me )
  1556. {
  1557. if( !p )
  1558. return 0;
  1559. return ( (PatchServer*)p )->stoppenMausEreignis( o, me );
  1560. }
  1561. bool patchServerBeendenMausEreignis( void *p, void *o, MausEreignis me )
  1562. {
  1563. if( !p )
  1564. return 0;
  1565. return ( (PatchServer*)p )->beendenMausEreignis( o, me );
  1566. }
  1567. bool patchServerTerminierenMausEreignis( void *p, void *o, MausEreignis me )
  1568. {
  1569. if( !p )
  1570. return 0;
  1571. return ( (PatchServer*)p )->terminierenMausEreignis( o, me );
  1572. }
  1573. bool patchServerSetMaxClientsMausEreignis( void *p, void *o, MausEreignis me )
  1574. {
  1575. if( !p )
  1576. return 0;
  1577. return ( (PatchServer*)p )->setMaxClientsMausEreignis( o, me );
  1578. }
  1579. bool patchServerUpdateStartenMausEreignis( void *p, void *o, MausEreignis me )
  1580. {
  1581. if( !p )
  1582. return 0;
  1583. return ( (PatchServer*)p )->updateStartenMausEreignis( o, me );
  1584. }
  1585. bool patchServerMaxClientsTastaturEreignis( void *p, void *o, TastaturEreignis te )
  1586. {
  1587. if( !p )
  1588. return 0;
  1589. return ( (PatchServer*)p )->maxClientsTastaturEreignis( o, te );
  1590. }