PatchServer.cpp 48 KB

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