Пример #1
0
widget* widget_menu_new(void)
{
	int2 p = {0,0}, s = {200, 30};
	widget *w = widget_new(p, s);
	w->draw = widget_rect_draw;
	return w;
}
Пример #2
0
/**************************************************************************
  ...
**************************************************************************/
struct widget *create_checkbox(struct gui_layer *pDest, bool state, Uint32 flags)
{
  struct widget *pCBox = widget_new();
  struct CHECKBOX *pTmp = fc_calloc(1, sizeof(struct CHECKBOX));
    
  if (state) {
    pCBox->theme = pTheme->CBOX_Sell_Icon;
  } else {
    pCBox->theme = pTheme->CBOX_Unsell_Icon;
  }

  set_wflag(pCBox, (WF_FREE_STRING | WF_FREE_GFX | WF_FREE_PRIVATE_DATA | flags));
  set_wstate(pCBox, FC_WS_DISABLED);
  set_wtype(pCBox, WT_CHECKBOX);
  pCBox->mod = KMOD_NONE;
  pCBox->dst = pDest;
  pTmp->state = state;
  pTmp->pTRUE_Theme = pTheme->CBOX_Sell_Icon;
  pTmp->pFALSE_Theme = pTheme->CBOX_Unsell_Icon;
  pCBox->private_data.cbox = pTmp;

  checkbox_baseclass_redraw = pCBox->redraw;
  pCBox->redraw = redraw_icon;
  
  pCBox->size.w = pCBox->theme->w / 4;
  pCBox->size.h = pCBox->theme->h;

  return pCBox;
}
Пример #3
0
Patcher* patcher_construct (GType object_type) {
    Patcher* self;
    MenuBar* _tmp0_;
    Widget* _tmp1_;
    self = (Patcher*) g_type_create_instance (object_type);
    self->priv->menubar = (_tmp0_ = menu_bar_new (), _menu_bar_unref0 (self->priv->menubar), _tmp0_);
    self->priv->widget = (_tmp1_ = widget_new (), _widget_unref0 (self->priv->widget), _tmp1_);
    return self;
}
Пример #4
0
widget* widget_text_new(int x, int y, char* label)
{
	int2 p = {x, y}, s = {0 ,30};
	widget *w = widget_new(p, s);
	w->data = label;
	w->draw = widget_text_draw;
	w->noClick = 1;
//	w->free = widget_button_free;
	return w;
}
Пример #5
0
widget* widget_button_new(int x, int y, char* label)
{
	int2 p = {x, y}, s = {200 ,30};
	widget *w = widget_new(p, s);
	w->data = label;
	w->draw = widget_button_draw;
	w->onclick = widget_button_onclick;
	w->release = widget_button_release;
//	w->free = widget_button_free;
	return w;
}
Пример #6
0
widget* widget_window_new(int x, int y, char* title)
{
	int2 p = {x, y}, s = {400, 300};
	widget *w = widget_new(p, s);
	w->draw = widget_window_draw;
	w->data = hcopy(title);
	w->click = widget_window_click;
	w->onclick = widget_window_onclick;
	w->release = widget_window_release;
	w->free = widget_button_free;
	return w;
}
Пример #7
0
widget* widget_list_new(int x, int y, char **list, int count)
{
	int2 p = {x,y}, s = {150, 150};
	widget *w = widget_new(p, s);
	w->draw = widget_list_draw;
	w->click = widget_list_click;
	w->onclick = widget_list_onclick;
	w->data = list;
	w->free = widget_list_free;
	w->count = count;
	w->selected = -1;
	return w;
}
Пример #8
0
rectangle_t * rectangle_new(widget_t * parent)
{
	rectangle_t * obj = (rectangle_t *) calloc(1, sizeof(struct s_rectangle_instance));
	MEMORY_ALLOC_CHECK_RETURN(obj, NULL);

	obj->log = my_log_new("Rectangle", MESSAGE);
	obj->glyph = widget_new(parent, obj, (void (*)(void *, const area_t *))draw, (void(*)(void *))abstract_delete);
	obj->fill_color = color(0,0,0);
	obj->is_filled = false;
	obj->border_color = color(0,0,0);
	obj->border_tickness = 1;
	obj->has_border = false;
	obj->corner_radius = 0;

	return obj;
}
Пример #9
0
Файл: tk.c Проект: mattjakob/s3d
Widget* tk_widget(int type, real x, real y, int (*f)(), void *d)
{
  Widget *w = widget_new(type, x, y, 0.2, f);
  if (wi >= wn) 
    error("tk");
  w->id = wi++;
  wa[w->id] = w;
  mvwindow(w->id, 0, 1, 0, 1);
  mvviewport(w->id, w->xo, w->xo + w->xs, w->yo, w->yo + w->ys);
  switch (type) {
  case TK_BUTTON:
    button_make(w, d); break;
  default:
    error("tk"); break;
  }
  return w;
}
Пример #10
0
/**************************************************************************
  ...
**************************************************************************/
struct widget * create_textcheckbox(struct gui_layer *pDest, bool state,
		  SDL_String16 *pStr, Uint32 flags)
{
  struct widget *pCBox;
  struct CHECKBOX *pTmp;
  SDL_Surface *pSurf, *pIcon;
  struct widget *pTmpWidget;

  if (!pStr) {
    return create_checkbox(pDest, state, flags);
  }
  
  pTmp = fc_calloc(1, sizeof(struct CHECKBOX));
    
  if (state) {
    pSurf = pTheme->CBOX_Sell_Icon;
  } else {
    pSurf = pTheme->CBOX_Unsell_Icon;
  }
    
  pIcon = create_icon_from_theme(pSurf, 0);
  pCBox = create_iconlabel(pIcon, pDest, pStr, (flags | WF_FREE_PRIVATE_DATA));

  pStr->style &= ~SF_CENTER;

  pCBox->theme = pSurf;
  FREESURFACE(pIcon);

  set_wtype(pCBox, WT_TCHECKBOX);
  pTmp->state = state;
  pTmp->pTRUE_Theme = pTheme->CBOX_Sell_Icon;
  pTmp->pFALSE_Theme = pTheme->CBOX_Unsell_Icon;
  pCBox->private_data.cbox = pTmp;

  pTmpWidget = widget_new();
  /* we can't use pCBox->redraw here, because it is of type iconlabel */
  textcheckbox_baseclass_redraw = pTmpWidget->redraw;
  FREEWIDGET(pTmpWidget);
  pCBox->redraw = redraw_textcheckbox;
  
  return pCBox;
}
Пример #11
0
/**************************************************************************
  Create ( malloc ) Edit Widget structure.

  Edit Theme graphic is taken from pTheme->Edit surface;
  Text is taken from 'pString16'.

  'length' parametr determinate width of Edit rect.

  This function determinate future size of Edit ( width, high ) and
  save this in: pWidget->size rectangle ( SDL_Rect )

  function return pointer to allocated Edit Widget.
**************************************************************************/
struct widget * create_edit(SDL_Surface *pBackground, struct gui_layer *pDest,
		SDL_String16 *pString16, Uint16 length, Uint32 flags)
{
  SDL_Rect buf = {0, 0, 0, 0};

  struct widget *pEdit = widget_new();

  pEdit->theme = pTheme->Edit;
  pEdit->theme2 = pBackground; /* FIXME: make somewhere use of it */
  pEdit->string16 = pString16;
  set_wflag(pEdit, (WF_FREE_STRING | WF_FREE_GFX | flags));
  set_wstate(pEdit, FC_WS_DISABLED);
  set_wtype(pEdit, WT_EDIT);
  pEdit->mod = KMOD_NONE;
  
  baseclass_redraw = pEdit->redraw;
  pEdit->redraw = redraw_edit;
  
  if (pString16) {
    pEdit->string16->style |= SF_CENTER;
    buf = str16size(pString16);
    buf.h += adj_size(4);
  }

  length = MAX(length, buf.w + adj_size(10));

  correct_size_bcgnd_surf(pTheme->Edit, &length, &buf.h);

  pEdit->size.w = length;
  pEdit->size.h = buf.h;

  if(pDest) {
    pEdit->dst = pDest;
  } else {
    pEdit->dst = add_gui_layer(pEdit->size.w, pEdit->size.h);
  }

  return pEdit;
}
Пример #12
0
/**************************************************************************
  Create ( malloc ) Icon2 Widget ( flat Button )
**************************************************************************/
struct widget * create_icon2(SDL_Surface *pIcon, struct gui_layer *pDest, Uint32 flags)
{

  struct widget *pIcon_Widget = widget_new();

  pIcon_Widget->theme = pIcon;

  set_wflag(pIcon_Widget, (WF_FREE_STRING | WF_FREE_GFX | flags));
  set_wstate(pIcon_Widget, FC_WS_DISABLED);
  set_wtype(pIcon_Widget, WT_ICON2);
  pIcon_Widget->mod = KMOD_NONE;
  pIcon_Widget->dst = pDest;

  baseclass_redraw = pIcon_Widget->redraw;  
  pIcon_Widget->redraw = redraw_icon2;
  
  if (pIcon) {
    pIcon_Widget->size.w = pIcon->w + adj_size(4);
    pIcon_Widget->size.h = pIcon->h + adj_size(4);
  }

  return pIcon_Widget;
}
Пример #13
0
int gui_init(int argc, char **argv)
{
	if (gui == NULL) {
		gui = (struct _GuiCore*)malloc(sizeof(struct _GuiCore));
		if (gui == NULL) return -1;
	}

	
	memset(gui, 0, sizeof(struct _GuiCore) );
	gui->running = 1;
	gui->need_update = 1;

	register_widget("Window"     , &window_ops      );
	register_widget("ListBox"    , &listbox_ops     );
	register_widget("ListBoxItem", &listboxitem_ops );
	register_widget("Button"     , &button_ops      );
	register_widget("Image"      , &image_ops       );
	register_widget("label"      , &label_ops       );
	register_widget("NoteBook"   , &notebook_ops    );
	register_widget("MessageBox"   , &msgbox_ops    );
//	register_widget("MessageBox" , &messagebox_ops	);

	gui->signal_hash = hash_new(1, signal_Free      );
	gui->font_hash   = hash_new(1, FontDesc_Free    );
	gui->image_hash  = hash_new(9, ImageDesc_Free   );
	gui->theme_hash  = hash_new(1, Theme_Free       );

	gui->win_stack   = stack_new(NULL);
	gui->root_widget = widget_new("root", "Window", NULL);
	gui->argc = argc;
	gui->argv = argv;

	if (gui_load("./gui.xml") != 0 ) return -1;
	if (sdl_init(gui->width, gui->height, gui->bpp) != 0) return -1;

	return 0;
}
Пример #14
0
/**************************************************************************
  Create ( malloc ) Icon (theme)Button Widget structure.

  Icon graphic is taken from 'pIcon' surface (don't change with button
  changes );  Button Theme graphic is taken from pTheme->Button surface;
  Text is taken from 'pString16'.

  This function determinate future size of Button ( width, high ) and
  save this in: pWidget->size rectangle ( SDL_Rect )

  function return pointer to allocated Button Widget.
**************************************************************************/
struct widget * create_icon_button(SDL_Surface *pIcon, struct gui_layer *pDest,
			  SDL_String16 *pStr, Uint32 flags)
{
  SDL_Rect buf = {0, 0, 0, 0};
  int w = 0, h = 0;
  struct widget *pButton;

  if (!pIcon && !pStr) {
    return NULL;
  }

  pButton = widget_new();

  pButton->theme = pTheme->Button;
  pButton->theme2 = pIcon;
  pButton->string16 = pStr;
  set_wflag(pButton, (WF_FREE_STRING | flags));
  set_wstate(pButton, FC_WS_DISABLED);
  set_wtype(pButton, WT_I_BUTTON);
  pButton->mod = KMOD_NONE;
  pButton->dst = pDest;

  baseclass_redraw = pButton->redraw;  
  pButton->redraw = redraw_ibutton;

  if (pStr) {
    pButton->string16->style |= SF_CENTER;
    /* if BOLD == true then longest wight */
    if (!(pStr->style & TTF_STYLE_BOLD)) {
      pStr->style |= TTF_STYLE_BOLD;
      buf = str16size(pStr);
      pStr->style &= ~TTF_STYLE_BOLD;
    } else {
      buf = str16size(pStr);
    }

    w = MAX(w, buf.w);
    h = MAX(h, buf.h);
  }

  if (pIcon) {
    if (pStr) {
      if ((flags & WF_ICON_UNDER_TEXT) || (flags & WF_ICON_ABOVE_TEXT)) {
	w = MAX(w, pIcon->w + adj_size(2));
	h = MAX(h, buf.h + pIcon->h + adj_size(4));
      } else {
	w = MAX(w, buf.w + pIcon->w + adj_size(20));
	h = MAX(h, pIcon->h + adj_size(2));
      }
    } else {
      w = MAX(w, pIcon->w + adj_size(2));
      h = MAX(h, pIcon->h + adj_size(2));
    }
  } else {
    w += adj_size(10);
    h += adj_size(2);
  }

  correct_size_bcgnd_surf(pTheme->Button, &w, &h);

  pButton->size.w = w;
  pButton->size.h = h;

  return pButton;
}