int SDL_WidgetSetDims(SDL_Widget *widget,short x, short y, short w, short h) { SDL_Window *window; if(widget == NULL) return 0; widget->Rect.x = x; widget->Rect.y = y; widget->Rect.w = w; widget->Rect.h = h; window = SDL_WindowManagerGetWindow(widget); if(window) { if(widget->Surface) SDL_FreeSurface(widget->Surface); widget->Surface = SDL_GetSubSurface(window->surface,widget); } SDL_SignalEmit(widget,"realize",NULL); return 1; }
int SDL_ProgressBarEventHandler(SDL_Widget *widget, SDL_Event *event) { SDL_ProgressBar *ProgressBar=(SDL_ProgressBar*)widget; switch(event->type) { case SDL_MOUSEBUTTONDOWN: if(SDL_WidgetIsInside(widget,event->motion.x,event->motion.y)) { if(ProgressBar->Orientation == HORIZONTAL) { ProgressBar->State=PROGRESSBAR_DRAG; ProgressBar->CurrentLine = event->motion.x - widget->Rect.x; ProgressBar_CurrentValue(ProgressBar); SDL_WidgetRedrawEvent(widget); } } break; case SDL_MOUSEMOTION: if(ProgressBar->Orientation == HORIZONTAL) { if(ProgressBar->State==PROGRESSBAR_DRAG) { ProgressBar->CurrentLine = event->motion.x - widget->Rect.x; ProgressBar_CurrentValue(ProgressBar); SDL_WidgetRedrawEvent(widget); } } break; case SDL_MOUSEBUTTONUP: if(ProgressBar->State == PROGRESSBAR_DRAG || SDL_WidgetIsInside(widget,event->motion.x,event->motion.y)) { if(ProgressBar->Orientation == VERTICAL) { ProgressBar->CurrentLine = event->motion.y - widget->Rect.y; ProgressBar_CurrentValue(ProgressBar); SDL_WidgetRedrawEvent(widget); } else if(ProgressBar->Orientation == HORIZONTAL) { ProgressBar->CurrentLine = event->motion.x - widget->Rect.x; ProgressBar_CurrentValue(ProgressBar); SDL_WidgetRedrawEvent(widget); } ProgressBar->State=PROGRESSBAR_NORMAL; SDL_SignalEmit(widget,"clicked"); } break; default: break; } return 0; }
int SDL_WidgetEvent(SDL_Widget *widget,SDL_Event *event) { switch(event->type) { case SDL_KEYDOWN: SDL_SignalEmit(widget,"keydown",event); break; case SDL_KEYUP: SDL_SignalEmit(widget,"keyup",event); break; case SDL_MOUSEMOTION: SDL_SignalEmit(widget,"mousemotion",event); break; case SDL_MOUSEBUTTONDOWN: SDL_SignalEmit(widget,"mousebuttondown",event); break; case SDL_MOUSEBUTTONUP: SDL_SignalEmit(widget,"mousebuttonup",event); break; case SDL_MOUSEDOUBLECLICK: SDL_SignalEmit(widget,"mousedoubleclick",event); break; default: break; } return 1; }
static int SDL_ScrollbarPixeloffset(SDL_Scrollbar *Scrollbar) { SDL_Widget *widget=(SDL_Widget*)Scrollbar; int retval = 0; if(Scrollbar->CurrentValue < Scrollbar->MinValue) Scrollbar->CurrentValue = Scrollbar->MinValue; if(Scrollbar->CurrentValue > Scrollbar->MaxValue) Scrollbar->CurrentValue = Scrollbar->MaxValue; if(Scrollbar->Orientation == VERTICAL) { int height = widget->Rect.h * Scrollbar->NormalStepValue / Scrollbar->MaxValue; /* Height is the button height */ if(height < 6) height = 6; Scrollbar->PixelValue = Scrollbar->CurrentValue * (widget->Rect.h - height) / Scrollbar->MaxValue; if(Scrollbar->PixelValue > widget->Rect.h - height) Scrollbar->PixelValue = widget->Rect.h - height; retval = 1; } else { int width = widget->Rect.w * Scrollbar->NormalStepValue / Scrollbar->MaxValue; /* Width is the button height */ if(width < 6) width = 6; Scrollbar->PixelValue = Scrollbar->CurrentValue * (widget->Rect.w - width) / Scrollbar->MaxValue; if(Scrollbar->PixelValue > widget->Rect.w - width) Scrollbar->PixelValue = widget->Rect.w - width; retval = 1; } SDL_SignalEmit(widget,"value-changed",widget); SDL_WidgetRedrawEvent(widget); return retval; }
static void SDL_ButtonSignalMouseButtonDown(SDL_Object *object,void *signaldata,void *userdata) { SDL_Button *Button = (SDL_Button*) object; SDL_Event *event = (SDL_Event *) signaldata; SDL_Widget *widget = (SDL_Widget*) object; if(SDL_WidgetIsInside(widget,event->motion.x,event->motion.y) && event->button.button == 1) { Button->State = SDL_BUTTON_STATE_DOWN; SDL_SignalEmit(widget,"clicked",NULL); SDL_WidgetRedrawEvent(widget); } else Button->State = SDL_BUTTON_STATE_UP; }
//--------------------------------------------------------------- void processKeyInput(SDL_KeyboardEvent *key) { extern SDL_Widget *button_ok; extern int answer; extern char has_char; extern fresh_display; printf("Scancode: 0x%02X\t", key->keysym.scancode); printf("Key Name: %s\n", SDL_GetKeyName(key->keysym.sym)); printf( "key unicode: %d, %c\n", key->keysym.unicode, key->keysym.unicode); // printf("button_ok: %x\n", button_ok); // printf("button_ensure: %x\n", button_ensure); has_char = SDL_GetKeyName(key->keysym.sym)[0]; switch (key->keysym.sym) { /* case SDLK_ESCAPE: SDL_SignalEmit( button_leave, "clicked", NULL); break; */ case SDLK_RETURN: if (button_ok) { SDL_SignalEmit( button_ok, "clicked", NULL); } else if (button_ensure) { SDL_SignalEmit( button_ensure, "clicked", NULL); } else if (button_poweroff) { SDL_SignalEmit( button_poweroff, "clicked", NULL); } break; case SDLK_y: if (!answer) { SDL_SignalEmit( button_yes, "clicked", NULL); } break; case SDLK_n: if (!answer) { SDL_SignalEmit( button_no, "clicked", NULL); } break; case SDLK_r: if (button_retest) { SDL_SignalEmit( button_retest, "clicked", NULL ); } break; case SDLK_ESCAPE: fresh_display = 0; break; default: break; } }
void SDL_ScrollbarSetCurrentValue(SDL_Widget *widget,int CurrentValue) { SDL_Scrollbar *Scrollbar=(SDL_Scrollbar*)widget; if(CurrentValue < 0) CurrentValue = 0; if(CurrentValue >= Scrollbar->MaxValue) CurrentValue = Scrollbar->MaxValue - 1; if(Scrollbar->CurrentValue != CurrentValue) { Scrollbar->CurrentValue = CurrentValue; Scrollbar->PixelValue = Scrollbar->CurrentValue * widget->Rect.h / Scrollbar->MaxValue; SDL_SignalEmit(widget,"value-changed",widget); SDL_WidgetRedrawEvent(widget); } }
int SDL_ScrollbarSetMaxValue(SDL_Widget *widget,int MaxValue) { SDL_Scrollbar *Scrollbar=(SDL_Scrollbar*)widget; if(MaxValue == 0) return 0; if(MaxValue < Scrollbar->CurrentValue) { Scrollbar->CurrentValue = MaxValue; SDL_SignalEmit(widget,"value-changed",widget); } Scrollbar->MaxValue = MaxValue; SDL_ScrollbarPixeloffset(Scrollbar); SDL_WidgetRedrawEvent(widget); return 1; }
int go_thread(void *data) { extern SDL_Window *window; extern int flow_count; extern lua_State *L; extern char *radios[]; extern int ITEM_NUMBER; extern SDL_Widget *button_ensure; extern int all_pass; int r; char buf[128] = {0}; char run_file[1024] = {0}; char log_file[1024] = {0}; char *path, *tmp; sprintf(buf, "%s test", radios[flow_count]); printItemHead(buf); // record log tmp = (char *)getTableElement(L, "self", "STAT"); sprintf(buf, "%slog", tmp); path = (char *)getTableElement(L, "logs", buf); sprintf( log_file, "%s", path); // sprintf( buf, "%s test start", radios[flow_count]); // recordlog( log_file, buf); path = (char *)getTableElement(L, "con", "PATH"); sprintf( run_file, "%sfunction/%s/run.lua",path,radios[flow_count]); printf( "go-run.lua: %s\n", run_file); // printf("Current dir: %s\n", getcwd(NULL, 0)); // chdir(radios[flow_count]); // printf("Current dir: %s\n", getcwd(NULL, 0)); // r = run(L, "run.lua"); r = run(L, run_file); // chdir(".."); // printf("Current dir: %s\n", getcwd(NULL, 0)); if (r == 0) { printPass("This item test PASS."); if (flow_count >= ITEM_NUMBER - 1) { all_pass = 1; } sprintf( buf, "%s test PASS!", radios[flow_count]); } else { printFail("This item test FAIL."); sprintf( buf, "%s test FAILED!", radios[flow_count]); } recordlog( log_file, buf); if ( r == 0 ) { drawButtonEnsure(); SDL_Delay(500); flow_count++; refreshWin(); if (getTableBooleanElement(L, "con", "AUTOTEST")) SDL_SignalEmit( button_ensure, "clicked", NULL); } else { if (getTableBooleanElement(L, "con", "RETEST_IF_FAIL")) drawButtonRetest(); if (getTableBooleanElement(L, "con", "GJ_IF_FAIL")) drawButtonPoweroff(); else { drawButtonEnsure(); flow_count++; } refreshWin(); } }
static void SDL_ScrollbarSignalMouseMotion(SDL_Object *object,void *signaldata,void *userdata) { SDL_Scrollbar *Scrollbar=(SDL_Scrollbar*)object; SDL_Widget *widget=(SDL_Widget*)object; SDL_Event *Event=(SDL_Event*)signaldata; if(Scrollbar->State == SCROLLBAR_DRAG) { if(Scrollbar->Orientation == VERTICAL) { int height; height = widget->Rect.h * Scrollbar->NormalStepValue / Scrollbar->MaxValue; /* Height is the button height */ if(height < 6) height = 6; Scrollbar->PixelValue = Event->motion.y - widget->Rect.y - Scrollbar->offset; if(Scrollbar->PixelValue > widget->Rect.h - height) Scrollbar->PixelValue = widget->Rect.h - height; if(Scrollbar->PixelValue < 0) Scrollbar->PixelValue = 0; Scrollbar->CurrentValue = ((Scrollbar->MaxValue - Scrollbar->MinValue)* Scrollbar->PixelValue) / (widget->Rect.h - height); if(Scrollbar->CurrentValue < 0) Scrollbar->CurrentValue = 0; SDL_SignalEmit(widget,"value-changed",widget); SDL_WidgetRedrawEvent(widget); } else { int width; width = widget->Rect.w *Scrollbar->NormalStepValue / Scrollbar->MaxValue; /* Height is the button height */ if(width < 6) width = 6; Scrollbar->PixelValue = Event->motion.x - widget->Rect.x - Scrollbar->offset; if(Scrollbar->PixelValue > widget->Rect.w - width) Scrollbar->PixelValue = widget->Rect.w - width; if(Scrollbar->PixelValue < 0) Scrollbar->PixelValue = 0; Scrollbar->CurrentValue = ((Scrollbar->MaxValue - Scrollbar->MinValue) * Scrollbar->PixelValue) / (widget->Rect.w - width); if(Scrollbar->CurrentValue < 0) Scrollbar->CurrentValue = 0; SDL_SignalEmit(widget,"value-changed",widget); SDL_WidgetRedrawEvent(widget); } } }