PatchServer.cpp 60 KB

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