Example #1
0
static VisUIWidget *make_userinterface ()
{
	VisUIWidget *vbox;
	VisUIWidget *hbox1;
	VisUIWidget *hbox2;
	VisUIWidget *hbox3;
	VisUIWidget *label1;
	VisUIWidget *label2;
	VisUIWidget *label3;
	VisUIWidget *label4;
	VisUIWidget *checkbox1;
	VisUIWidget *checkbox2;
	VisUIWidget *numeric1;
	VisUIWidget *numeric2;
	VisUIWidget *numeric3;

	vbox = visual_ui_box_new (VISUAL_ORIENT_TYPE_VERTICAL);
	hbox1 = visual_ui_box_new (VISUAL_ORIENT_TYPE_HORIZONTAL);
	hbox2 = visual_ui_box_new (VISUAL_ORIENT_TYPE_HORIZONTAL);
	hbox3 = visual_ui_box_new (VISUAL_ORIENT_TYPE_HORIZONTAL);

	label1 = visual_ui_label_new (_("Show info for"), FALSE);
	label2 = visual_ui_label_new (_("seconds"), FALSE);
	label3 = visual_ui_label_new (_("cover art width"), FALSE);
	label4 = visual_ui_label_new (_("cover art height"), FALSE);

	checkbox1 = visual_ui_checkbox_new (_("Show song information"), TRUE);
	visual_ui_mutator_set_param (VISUAL_UI_MUTATOR (checkbox1),
			visual_param_container_get (__lv_paramcontainer, "songinfo show"));

	checkbox2 = visual_ui_checkbox_new (_("Show song information in plugins"), TRUE);
	visual_ui_mutator_set_param (VISUAL_UI_MUTATOR (checkbox2),
			visual_param_container_get (__lv_paramcontainer, "songinfo in plugin"));

	numeric1 = visual_ui_numeric_new ();
	visual_ui_mutator_set_param (VISUAL_UI_MUTATOR (numeric1),
			visual_param_container_get (__lv_paramcontainer, "songinfo timeout"));
	visual_ui_range_set_properties (VISUAL_UI_RANGE (numeric1), 1, 60, 1, 0);

	numeric2 = visual_ui_numeric_new ();
	visual_ui_mutator_set_param (VISUAL_UI_MUTATOR (numeric2),
			visual_param_container_get (__lv_paramcontainer, "songinfo cover size x"));
	visual_ui_range_set_properties (VISUAL_UI_RANGE (numeric2), 32, 256, 2, 0);

	numeric3 = visual_ui_numeric_new ();
	visual_ui_mutator_set_param (VISUAL_UI_MUTATOR (numeric3),
			visual_param_container_get (__lv_paramcontainer, "songinfo cover size y"));
	visual_ui_range_set_properties (VISUAL_UI_RANGE (numeric3), 32, 256, 2, 0);

	visual_ui_box_pack (VISUAL_UI_BOX (hbox1), label1);
	visual_ui_box_pack (VISUAL_UI_BOX (hbox1), numeric1);
	visual_ui_box_pack (VISUAL_UI_BOX (hbox1), label2);

	visual_ui_box_pack (VISUAL_UI_BOX (hbox2), label3);
	visual_ui_box_pack (VISUAL_UI_BOX (hbox2), numeric2);

	visual_ui_box_pack (VISUAL_UI_BOX (hbox3), label4);
	visual_ui_box_pack (VISUAL_UI_BOX (hbox3), numeric3);

	visual_ui_box_pack (VISUAL_UI_BOX (vbox), checkbox1);
	visual_ui_box_pack (VISUAL_UI_BOX (vbox), checkbox2);
	visual_ui_box_pack (VISUAL_UI_BOX (vbox), hbox1);
	visual_ui_box_pack (VISUAL_UI_BOX (vbox), hbox2);
	visual_ui_box_pack (VISUAL_UI_BOX (vbox), hbox3);

	return vbox;
}
Example #2
0
static VisUIWidget * check_widget(VisUIWidget * w, const char * name,
                                  bg_parameter_info_t * info)
  {
  VisUIWidget * ret = NULL;
  int i;
  int num_items;
  VisListEntry * list_entry;
  switch(w->type)
    {
    case VISUAL_WIDGET_TYPE_RANGE:       /**< Range base widget: \a VisUIRange. */
    case VISUAL_WIDGET_TYPE_ENTRY:       /**< Entry box widget: \a VisUIEntry. */
    case VISUAL_WIDGET_TYPE_MUTATOR:     /**< Mutator base widget: \a VisUIMutator. */
    case VISUAL_WIDGET_TYPE_NULL:    /**< NULL widget */
    case VISUAL_WIDGET_TYPE_WIDGET:      /**< Base widget: \a VisUIWidget. */
    case VISUAL_WIDGET_TYPE_LABEL:       /**< Label widget: \a VisUILabel. */
    case VISUAL_WIDGET_TYPE_IMAGE:       /**< Image widget: \a VisUIImage. */
    case VISUAL_WIDGET_TYPE_SEPARATOR:   /**< Separator widget: \a VisUISeparator. */
    case VISUAL_WIDGET_TYPE_COLORPALETTE:/**< Color palette widget: \a VisUIColorPalette. */
    case VISUAL_WIDGET_TYPE_CHOICE:      /**< Choice base widget: \a VisUIChoice. */
      break;
    case VISUAL_WIDGET_TYPE_CONTAINER:   /**< Container widget: \a VisUIContainer. */
    case VISUAL_WIDGET_TYPE_FRAME:       /**< Frame widget: \a VisUIFrame. */
      /* Get child */
      return check_widget(VISUAL_UI_CONTAINER(w)->child, name, info);
      break;
    case VISUAL_WIDGET_TYPE_BOX:         /**< Box widget: \a VisUIBox. */
      /* Get children */
      list_entry = NULL;
      while(visual_list_next(&VISUAL_UI_BOX(w)->childs, &list_entry))
        {
        if((ret = check_widget(list_entry->data, name, info)))
          return ret;
        }
      break;
    case VISUAL_WIDGET_TYPE_TABLE:       /**< Table widget: \a VisUITable. */
      /* Get children */
      list_entry = NULL;
      while(visual_list_next(&VISUAL_UI_TABLE(w)->childs, &list_entry))
        {
        if((ret = check_widget(((VisUITableEntry*)list_entry->data)->widget, name, info)))
          {
          return ret;
          }
        }
      break;
    case VISUAL_WIDGET_TYPE_NOTEBOOK:    /**< Notebook widget: \a VisUINotebook. */
      /* Get children */
      /* Get children */
      list_entry = NULL;
      while(visual_list_next(&VISUAL_UI_NOTEBOOK(w)->childs, &list_entry))
        {
        if((ret = check_widget(list_entry->data, name, info)))
          return ret;
        }
      break;
    case VISUAL_WIDGET_TYPE_SLIDER:      /**< Slider widget: \a VisUISlider. */
      if(strcmp(name, VISUAL_UI_MUTATOR(w)->param->name))
        return 0;
      if((VISUAL_UI_MUTATOR(w)->param->type == VISUAL_PARAM_ENTRY_TYPE_FLOAT) ||
         (VISUAL_UI_MUTATOR(w)->param->type == VISUAL_PARAM_ENTRY_TYPE_DOUBLE))
        {
        info->type = BG_PARAMETER_SLIDER_FLOAT;
        info->val_min.val_f = VISUAL_UI_RANGE(w)->min;
        info->val_max.val_f = VISUAL_UI_RANGE(w)->max;
        info->num_digits = VISUAL_UI_RANGE(w)->precision;
        if((VISUAL_UI_MUTATOR(w)->param->type == VISUAL_PARAM_ENTRY_TYPE_FLOAT))
          info->val_default.val_f = VISUAL_UI_MUTATOR(w)->param->numeric.floating;
        else
          info->val_default.val_f = VISUAL_UI_MUTATOR(w)->param->numeric.doubleflt;
        }
      else
        {
        info->type = BG_PARAMETER_SLIDER_INT;
        info->val_min.val_i = (int)VISUAL_UI_RANGE(w)->min;
        info->val_max.val_i = (int)VISUAL_UI_RANGE(w)->max;
        info->val_default.val_i = VISUAL_UI_MUTATOR(w)->param->numeric.integer;
        }
      info->flags |= BG_PARAMETER_SYNC;
      ret = w;
      break;
    case VISUAL_WIDGET_TYPE_NUMERIC:     /**< Numeric widget: \a VisUINumeric. */
      if(strcmp(name, VISUAL_UI_MUTATOR(w)->param->name))
        return 0;
      if((VISUAL_UI_MUTATOR(w)->param->type == VISUAL_PARAM_ENTRY_TYPE_FLOAT) ||
         (VISUAL_UI_MUTATOR(w)->param->type == VISUAL_PARAM_ENTRY_TYPE_DOUBLE))
        {
        info->type = BG_PARAMETER_FLOAT;
        info->val_min.val_f = VISUAL_UI_RANGE(w)->min;
        info->val_max.val_f = VISUAL_UI_RANGE(w)->max;
        info->num_digits = VISUAL_UI_RANGE(w)->precision;
        if((VISUAL_UI_MUTATOR(w)->param->type == VISUAL_PARAM_ENTRY_TYPE_FLOAT))
          info->val_default.val_f = VISUAL_UI_MUTATOR(w)->param->numeric.floating;
        else
          info->val_default.val_f = VISUAL_UI_MUTATOR(w)->param->numeric.doubleflt;
        }
      else
        {
        info->type = BG_PARAMETER_INT;
        info->val_min.val_i = (int)VISUAL_UI_RANGE(w)->min;
        info->val_max.val_i = (int)VISUAL_UI_RANGE(w)->max;
        info->val_default.val_i = VISUAL_UI_MUTATOR(w)->param->numeric.integer;
        }
      info->flags |= BG_PARAMETER_SYNC;
      ret = w;
      break;
    case VISUAL_WIDGET_TYPE_COLOR:       /**< Color widget: \a VisUIColor. */
    case VISUAL_WIDGET_TYPE_COLORBUTTON: /**< Color button widget: \a VisUIColorButton. */
      if(strcmp(name, VISUAL_UI_MUTATOR(w)->param->name))
        return 0;
      info->type = BG_PARAMETER_COLOR_RGB;
      info->flags |= BG_PARAMETER_SYNC;
      info->val_default.val_color[0] = (float)VISUAL_UI_MUTATOR(w)->param->color.r / 255.0;
      info->val_default.val_color[1] = (float)VISUAL_UI_MUTATOR(w)->param->color.g / 255.0;
      info->val_default.val_color[2] = (float)VISUAL_UI_MUTATOR(w)->param->color.b / 255.0;
      ret = w;
      break;
    case VISUAL_WIDGET_TYPE_POPUP:       /**< Popup widget: \a VisUIPopup. */
    case VISUAL_WIDGET_TYPE_LIST:        /**< List widget: \a VisUIList. */
    case VISUAL_WIDGET_TYPE_RADIO:       /**< Radio widget: \a VisUIRadio. */
      if(strcmp(name, VISUAL_UI_MUTATOR(w)->param->name))
        return 0;
      info->type = BG_PARAMETER_STRINGLIST;
      info->flags |= BG_PARAMETER_SYNC;
      num_items = 0;
      list_entry = NULL;
      while(visual_list_next(&VISUAL_UI_CHOICE(w)->choices.choices, &list_entry))
        num_items++;
      info->multi_names_nc = calloc(num_items+1, sizeof(info->multi_names_nc));
      list_entry = NULL;
      for(i = 0; i < num_items; i++)
        {
        visual_list_next(&VISUAL_UI_CHOICE(w)->choices.choices, &list_entry);
        info->multi_names_nc[i] = gavl_strdup(((VisUIChoiceEntry*)(list_entry->data))->name);

        /* Check if this is the current value */
        //        visual_param_entry_compare(((VisUIChoiceEntry*)(list_entry->data))->value,
        //                                       VISUAL_UI_MUTATOR(w)->param)
        if(!i)
          {
          info->val_default.val_str = gavl_strdup(info->multi_names_nc[i]);
          }
        }
      ret = w;
      break;
    case VISUAL_WIDGET_TYPE_CHECKBOX:     /**< Checkbox widget: \a VisUICheckbox. */
      if(strcmp(name, VISUAL_UI_MUTATOR(w)->param->name))
        return 0;
      info->type = BG_PARAMETER_CHECKBUTTON;
      info->flags |= BG_PARAMETER_SYNC;
      ret = w;
      break;
    }
  if(ret)
    info->help_string = gavl_strrep(info->help_string, w->tooltip);
  bg_parameter_info_set_const_ptrs(info);
  return ret;
  }