int goc_labelListener(GOC_HANDLER uchwyt, GOC_MSG wiesc, void* pBuf, unsigned int nBuf) { if ( wiesc == GOC_MSG_CREATE ) { GOC_StElement* elem = (GOC_StElement*)pBuf; GOC_HANDLER* retuchwyt = (GOC_HANDLER*)nBuf; GOC_StLabel* napis = (GOC_StLabel*)malloc(sizeof(GOC_StLabel)); memcpy(napis, elem, sizeof(GOC_StElement)); napis->tekst = NULL; napis->nText = 0; napis->start = 0; *retuchwyt = (GOC_HANDLER)napis; return GOC_ERR_OK; } else if ( wiesc == GOC_MSG_PAINT ) { return labelPaint((GOC_StLabel*)uchwyt); } else if ( wiesc == GOC_MSG_DESTROY ) { goc_labelRemLines(uchwyt); return goc_elementDestroy(uchwyt); } return GOC_ERR_UNKNOWNMSG; }
int goc_labelSetText(GOC_HANDLER u, char *tekst, GOC_BOOL licz) { GOC_StLabel *napis = (GOC_StLabel*)u; goc_labelRemLines(u); goc_labelAddLine(u, tekst); if ( licz == GOC_TRUE ) goc_elementSetWidth(u, strlen(tekst)); else if ( napis->flag & GOC_EFLAGA_SHOWN ) goc_systemSendMsg(u, GOC_MSG_PAINT, 0, 0); return GOC_ERR_OK; }
static int nasluchOk( GOC_HANDLER uchwyt, GOC_MSG wiesc, void *pBuf, unsigned int nBuf) { if ( wiesc == GOC_MSG_ACTION ) { goc_labelRemLines( napis ); goc_labelAddLine( napis, "Formularz wype³niono" ); goc_formHide( forma ); return GOC_ERR_OK; } return goc_systemDefaultAction(uchwyt, wiesc, pBuf, nBuf); }
// TODO: Dodanie odswiezenia listy, jesli jest widoczna po dodaniu pliku lub // katalogu z zachowaniem pozycji kursora static int hotKeyAddFolder( GOC_HANDLER uchwyt, GOC_MSG wiesc, void *pBuf, unsigned int nBuf) { GOC_FLAGS f = goc_elementGetFlag(pLista); if ( f & GOC_EFLAGA_PAINTED ) { goc_labelRemLines(nStatus); goc_elementIsFlag(pLista, GOC_EFLAGA_PAINTED | GOC_EFLAGA_ENABLE); goc_systemRepaintUnder(pLista); goc_systemRepaintUnder(nStatus); fflush(stdout); } else { goc_elementOrFlag(pLista, GOC_EFLAGA_PAINTED | GOC_EFLAGA_ENABLE); goc_systemFocusOn(pLista); goc_systemSendMsg(pLista, GOC_MSG_PAINT, 0, 0); } return GOC_ERR_OK; }
static int mapaCommonListener(GOC_HANDLER uchwyt, GOC_StMessage *msg) { if ( msg->id == GOC_MSG_CURSORCHANGE_ID ) { GOC_StMsgMapPoint* msgp = (GOC_StMsgMapPoint*)msg; char buf[80]; GOC_StValuePoint *v; int p; StAirport* airport = NULL; goc_labelRemLines(labelDesc); p = goc_maparawGetPoint(terrain, msgp->x, msgp->y); memset(buf, 0, 80); switch ( p ) { case 0: sprintf(buf, "Terrain: forrest" ); break; case 1: sprintf(buf, "Terrain: clear" ); break; case 2: sprintf(buf, "Terrain: river" ); break; case 3: sprintf(buf, "Terrain: mountains" ); break; default: sprintf(buf, "Terrain: unknown" ); break; } goc_labelAddLine(labelDesc, buf); v = goc_mapaposReadPoint(build, msgp->x, msgp->y); memset(buf, 0, 80); if ( v != NULL ) { switch ( v-> value & 0x0F ) { case 0x00: sprintf(buf, ""); break; case 0x01: sprintf(buf, "Build: Supply"); break; case 0x02: sprintf(buf, "Build: Factory"); break; case 0x03: sprintf(buf, "Build: City"); break; case 0x04: sprintf(buf, "Build: Airport"); airport = (StAirport*)FROMGOC(v); break; case 0x05: sprintf(buf, "Build: Village"); break; case 0x06: sprintf(buf, "Build: Fort"); break; case 0x07: sprintf(buf, "Build: Capital"); break; case 0x08: case 0x09: sprintf(buf, "Build: Bridge"); break; default: sprintf(buf, "Build: unknown" ); break; } } if ( strlen(buf) ) goc_labelAddLine(labelDesc, buf); if ( airport ) { int i; for (i=0; i<airport->nfly; i++) { sprintf(buf, " %-20s [%1s:%1d]", airport->pfly[i]->pilotName, airport->pfly[i]->cname == cn_Fighter ? "F" : "B", airport->pfly[i]->pilotExp/10); goc_labelAddLine(labelDesc, buf); } } memset(buf, 0, 80); if ( v != NULL ) { switch ( v->value & 0xF0 ) { case 0x00: break; case 0x10: sprintf(buf, "Front: green power" ); break; case 0x20: sprintf(buf, "Front: red power" ); break; case 0x30: sprintf(buf, "Front: none power" ); break; default: sprintf(buf, "Front: unknown" ); break; } } if ( strlen( buf ) ) goc_labelAddLine(labelDesc, buf); goc_systemClearArea(labelDesc); GOC_MSG_PAINT( msgPaint ); goc_systemSendMsg(labelDesc, msgPaint); return GOC_ERR_OK; } return goc_systemDefaultAction(uchwyt, msg); }