예제 #1
0
파일: picosm.c 프로젝트: UIKit0/picogui
int evtLogin(struct pgEvent *evt){
  picosmUI *interface = (picosmUI *)evt->extra;

  /* Advance focus to the password field if the username field is nonempty */
  if (pgGetString(pgGetWidget(interface->wLogin,PG_WP_TEXT))[0])
    pgFocus(interface->wPasswd);

  return 1;
}
예제 #2
0
파일: SDL_pgevents.c 프로젝트: bohwaz/ozex
int PG_HandleMouseButton(struct pgEvent *evt)
{        
        /* We need to focus the canvas when it's clicked */
        if (evt->extra) {
	        SDL_VideoDevice *this = (SDL_VideoDevice *) evt->extra;
		pgFocus(this->hidden->wCanvas);
	}
        SDL_PrivateMouseButton(evt->type == PG_WE_PNTR_DOWN, evt->e.pntr.chbtn,
			       evt->e.pntr.x, evt->e.pntr.y);
	return 0;
}
예제 #3
0
파일: picosm.c 프로젝트: UIKit0/picogui
int evtClear(struct pgEvent *evt){
  picosmUI *interface = (picosmUI *)evt->extra;

  pgEnterContext();
  pgSetWidget(interface->wPasswd,
	      PG_WP_TEXT, pgNewString(""),
	      0);
  pgSetWidget(interface->wLogin,
	      PG_WP_TEXT, pgNewString(""),
	      0);
  pgFocus(interface->wLogin);
  pgLeaveContext();

  return 1;
}
예제 #4
0
파일: SDL_pgevents.c 프로젝트: bohwaz/ozex
void PG_InitEvents(_THIS)
{
        /* Turn on all the mouse and keyboard triggers for our canvas, normally less important
	 * events like mouse movement are ignored to save bandwidth. */
        pgSetWidget(this->hidden->wCanvas, PG_WP_TRIGGERMASK, 
		    pgGetWidget(this->hidden->wCanvas, PG_WP_TRIGGERMASK) |
		    PG_TRIGGER_UP | PG_TRIGGER_DOWN | PG_TRIGGER_MOVE |
		    PG_TRIGGER_KEYUP | PG_TRIGGER_KEYDOWN | PG_TRIGGER_CHAR,0);

	/* Start our canvas out focused, so we get keyboard input */
	pgFocus(this->hidden->wCanvas);

        /* Set up bindings for all the above event handlers */
        pgBind(this->hidden->wApp,    PG_WE_CLOSE, &PG_HandleClose, NULL);
        pgBind(this->hidden->wCanvas, PG_WE_BUILD, &PG_HandleResize, NULL);
        pgBind(this->hidden->wCanvas, PG_WE_KBD_CHAR, &PG_HandleChar, NULL);
        pgBind(this->hidden->wCanvas, PG_WE_KBD_KEYUP, &PG_HandleKey, NULL);
        pgBind(this->hidden->wCanvas, PG_WE_KBD_KEYDOWN, &PG_HandleKey, NULL);
        pgBind(this->hidden->wCanvas, PG_WE_PNTR_MOVE, &PG_HandleMouseMotion, NULL);
        pgBind(this->hidden->wCanvas, PG_WE_PNTR_UP, &PG_HandleMouseButton, NULL);
        pgBind(this->hidden->wCanvas, PG_WE_PNTR_DOWN, &PG_HandleMouseButton, this);
}
예제 #5
0
파일: picosm.c 프로젝트: UIKit0/picogui
picosmUI *buildUI(void){
  picosmUI *newUI = (picosmUI *)malloc(sizeof(picosmUI));

  if(!(newUI->wApp = pgFindWidget("PSMApp"))){
    newUI->wApp = pgCreateWidget(PG_WIDGET_DIALOGBOX);
    pgSetWidget(newUI->wApp,
		PG_WP_NAME,pgNewString("PSMApp"),
		PG_WP_TEXT,pgNewString("PicoGUI Login"),
		0);
  }

  if(!(newUI->wButtonBox = pgFindWidget("PSMButtonBox"))){
    newUI->wButtonBox = pgNewWidget(PG_WIDGET_TOOLBAR, PG_DERIVE_INSIDE, 
				    newUI->wApp);
    pgSetWidget(newUI->wButtonBox,
		PG_WP_NAME,pgNewString("PSMButtonBox"),
		PG_WP_SIDE, PG_S_BOTTOM,
		0);
  }

  if(!(newUI->wPasswdBox = pgFindWidget("PSMPasswdBox"))){
    newUI->wPasswdBox = pgNewWidget(PG_WIDGET_BOX, PG_DERIVE_INSIDE, 
				    newUI->wApp);
    pgSetWidget(newUI->wPasswdBox,
		PG_WP_NAME,pgNewString("PSMPasswdBox"),
		PG_WP_TRANSPARENT, 1,
		0);
  }

  if(!(newUI->wLoginBox = pgFindWidget("PSMLoginBox"))){
    newUI->wLoginBox = pgNewWidget(PG_WIDGET_BOX, PG_DERIVE_INSIDE, 
				   newUI->wApp);
    pgSetWidget(newUI->wLoginBox,
		PG_WP_NAME,pgNewString("PSMLoginBox"),
		PG_WP_TRANSPARENT, 1,
		0);
  }

  if(!(newUI->wLoginLabel = pgFindWidget("PSMLoginLabel"))){
    newUI->wLoginLabel = pgNewWidget(PG_WIDGET_LABEL, PG_DERIVE_INSIDE, 
				     newUI->wLoginBox);
    pgSetWidget(newUI->wLoginLabel, 
		PG_WP_NAME,pgNewString("PSMLoginLabel"),
		PG_WP_TEXT, pgNewString("Login: "******"PSMLogin"))){
    newUI->wLogin = pgNewWidget(PG_WIDGET_FIELD, PG_DERIVE_INSIDE, 
				newUI->wLoginBox);
    pgSetWidget(newUI->wLogin, 
		PG_WP_NAME,pgNewString("PSMLogin"),
		PG_WP_SIDE, PG_S_RIGHT,
		PG_WP_SIZEMODE, PG_SZMODE_PERCENT,
		PG_WP_SIZE, 70,
		0);
    pgFocus(newUI->wLogin);
  }
    
  if(!(newUI->wPasswdLabel = pgFindWidget("PSMPasswdLabel"))){
    newUI->wPasswdLabel = pgNewWidget(PG_WIDGET_LABEL, PG_DERIVE_INSIDE, 
				      newUI->wPasswdBox);
    pgSetWidget(newUI->wPasswdLabel, 
		PG_WP_NAME,pgNewString("PSMPasswdLabel"),
		PG_WP_TEXT, pgNewString("Password: "******"PSMPasswd"))){
    newUI->wPasswd = pgNewWidget(PG_WIDGET_FIELD, PG_DERIVE_INSIDE, 
				 newUI->wPasswdBox);
  
    pgSetWidget(newUI->wPasswd, 
		PG_WP_NAME,pgNewString("PSMPasswd"),
		PG_WP_SIDE, PG_S_RIGHT,
		PG_WP_SIZEMODE, PG_SZMODE_PERCENT,
		PG_WP_PASSWORD, '*',
		PG_WP_SIZE, 70,
		0);
  }

  if(!(newUI->wClear = pgFindWidget("PSMClear"))){
    newUI->wClear = pgNewWidget(PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, 
				newUI->wButtonBox);
    pgSetWidget(newUI->wClear,
		PG_WP_NAME,pgNewString("PSMClear"),
		PG_WP_ALIGN, PG_A_CENTER,
		PG_WP_SIDE, PG_S_RIGHT,
		PG_WP_TEXT, pgNewString("Clear"),
		0);
  }

  if(!(newUI->wLogon = pgFindWidget("PSMLogon"))){
    newUI->wLogon = pgNewWidget(PG_WIDGET_BUTTON, PG_DERIVE_INSIDE,
				newUI->wButtonBox);
    pgSetWidget(newUI->wLogon,
		PG_WP_NAME,pgNewString("PSMLogon"),
		PG_WP_ALIGN, PG_A_CENTER,
		PG_WP_SIDE, PG_S_RIGHT,
		PG_WP_TEXT, pgNewString("Log On"),
		0);
  }

  if(!(newUI->wReboot = pgFindWidget("PSMReboot"))){
    newUI->wReboot = pgNewWidget(PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, 
				 newUI->wButtonBox);
    pgSetWidget(newUI->wReboot,
		PG_WP_NAME,pgNewString("PSMReboot"),
		PG_WP_ALIGN, PG_A_CENTER,
		PG_WP_SIDE, PG_S_LEFT,
		PG_WP_TEXT, pgNewString("Reboot"),
		0);
  }

  if(!(newUI->wPowerOff = pgFindWidget("PSMPowerOff"))){
    newUI->wPowerOff = pgNewWidget(PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, 
				   newUI->wButtonBox);
    pgSetWidget(newUI->wPowerOff,
		PG_WP_NAME,pgNewString("PSMPowerOff"),
		PG_WP_ALIGN, PG_A_CENTER,
		PG_WP_SIDE, PG_S_LEFT,
		PG_WP_TEXT, pgNewString("Power Off"),
		0);
  }

  return newUI;
}
예제 #6
0
/* Like a messge dialog, with an input field */
pghandle pgInputDialog(const char *title, const char *message,
		       pghandle deftxt) {
  pghandle wToolbar,wField,wOk,wCancel,from;
  pghandle str = 0;

  /* New context for us! */
  pgEnterContext();

  /* Create the important widgets */
  pgDialogBox(title);
  wToolbar = pgNewWidget(PG_WIDGET_TOOLBAR,0,0);
  pgSetWidget(PGDEFAULT,
	      PG_WP_SIDE,PG_S_BOTTOM,
	      0);
  wField = pgNewWidget(PG_WIDGET_TOOLBAR,0,0);
  pgSetWidget(PGDEFAULT,
	      PG_WP_SIDE,PG_S_BOTTOM,
	      0);
  pgNewWidget(PG_WIDGET_LABEL,0,0);
  pgSetWidget(PGDEFAULT,
	      PG_WP_SIDE,PG_S_ALL,
	      PG_WP_TEXT,pgNewString(message),
	      0);
  wField = pgNewWidget(PG_WIDGET_FIELD,PG_DERIVE_INSIDE,wField);
  pgSetWidget(PGDEFAULT,
	      PG_WP_SIDE,PG_S_BOTTOM,
	      PG_WP_SIDE,PG_S_ALL,
	      /* Only set the property if nonzero */
	      deftxt ? PG_WP_TEXT : 0,deftxt,
	      0);

  /* buttons */
  wCancel = pgNewWidget(PG_WIDGET_BUTTON,PG_DERIVE_INSIDE,wToolbar);
  pgSetWidget(PGDEFAULT,
	      PG_WP_TEXT,pgGetServerRes(PGRES_STRING_CANCEL),
	      PG_WP_SIDE,PG_S_RIGHT,
	      PG_WP_HOTKEY,pgThemeLookup(PGTH_O_POPUP_MESSAGEDLG,
					 PGTH_P_HOTKEY_CANCEL),
	      PG_WP_IMAGE,pgThemeLookup(PGTH_O_POPUP_MESSAGEDLG,
					 PGTH_P_ICON_CANCEL),
	      PG_WP_BITMASK,pgThemeLookup(PGTH_O_POPUP_MESSAGEDLG,
					  PGTH_P_ICON_CANCEL_MASK),
	      0);
  wOk = pgNewWidget(PG_WIDGET_BUTTON,PG_DERIVE_INSIDE,wToolbar);
  pgSetWidget(PGDEFAULT,
	      PG_WP_TEXT,pgGetServerRes(PGRES_STRING_OK),
	      PG_WP_SIDE,PG_S_RIGHT,
	      PG_WP_HOTKEY,pgThemeLookup(PGTH_O_POPUP_MESSAGEDLG,
					 PGTH_P_HOTKEY_OK),
	      PG_WP_IMAGE,pgThemeLookup(PGTH_O_POPUP_MESSAGEDLG,
					 PGTH_P_ICON_OK),
	      PG_WP_BITMASK,pgThemeLookup(PGTH_O_POPUP_MESSAGEDLG,
					  PGTH_P_ICON_OK_MASK),
	      0);

  /* Run */
  pgFocus(wField);
  for (;;) {
    from = pgGetEvent()->from;
    if (from == wOk) {
      /* Make a copy, because the one used in PG_WP_TEXT is deleted
       * automatically by the field widget on deletion. 
       */
      str = pgDup(pgGetWidget(wField,PG_WP_TEXT));
      /* Send it back up to the caller's context */
      pgChangeContext(str,-1);
      break;
    }
    else if (from == wCancel)
      break;
  }
  pgLeaveContext();
  return str;
}