Пример #1
0
/*****************************************************************************
 * Open: initialize and create stuff
 *****************************************************************************/
static int Open( vlc_object_t *p_this )
{
    intf_thread_t *p_intf = (intf_thread_t *)p_this;
    xosd *p_osd;

    /* Allocate instance and initialize some members */
    p_intf->p_sys = (intf_sys_t *)malloc( sizeof( intf_sys_t ) );
    if( p_intf->p_sys == NULL )
    {
        msg_Err( p_intf, "out of memory" );
        return VLC_ENOMEM;
    }

    if( getenv( "DISPLAY" ) == NULL )
    {
        msg_Err( p_intf, "no display, please set the DISPLAY variable" );
        return VLC_EGENERIC;
    }

    /* Initialize library */
#if defined(HAVE_XOSD_VERSION_0) || defined(HAVE_XOSD_VERSION_1)
    p_osd  = p_intf->p_sys->p_osd =
        xosd_init( config_GetPsz( p_intf, "xosd-font" ),
                   config_GetPsz( p_intf,"xosd-colour" ), 3,
                   XOSD_top, 0, 1 );
    if( p_intf->p_sys->p_osd == NULL )
    {
        msg_Err( p_intf, "couldn't initialize libxosd" );
        return VLC_EGENERIC;
    }
#else
    p_osd = p_intf->p_sys->p_osd = xosd_create( 1 );
    if( p_osd == NULL )
    {
        msg_Err( p_intf, "couldn't initialize libxosd" );
        return VLC_EGENERIC;
    }
    xosd_set_colour( p_osd, config_GetPsz( p_intf,"xosd-colour" ) );
    xosd_set_timeout( p_osd, 3 );
#endif


    playlist_t *p_playlist =
            (playlist_t *)vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
                                           FIND_ANYWHERE );
    if( p_playlist == NULL )
    {
        return VLC_EGENERIC;
    }

    var_AddCallback( p_playlist, "playlist-current", PlaylistNext, p_this );
    var_AddCallback( p_playlist, "item-change", PlaylistNext, p_this );

    vlc_object_release( p_playlist );

    /* Set user preferences */
    xosd_set_font( p_intf->p_sys->p_osd,
                    config_GetPsz( p_intf, "xosd-font" ) );
    xosd_set_outline_colour( p_intf->p_sys->p_osd,"black" );
#ifdef HAVE_XOSD_VERSION_2
    xosd_set_horizontal_offset( p_intf->p_sys->p_osd,
                    config_GetInt( p_intf, "xosd-text-offset" ) );
    xosd_set_vertical_offset( p_intf->p_sys->p_osd,
                    config_GetInt( p_intf, "xosd-text-offset" ) );
#else
    xosd_set_offset( p_intf->p_sys->p_osd,
                    config_GetInt( p_intf, "xosd-text-offset" ) );
#endif
    xosd_set_shadow_offset( p_intf->p_sys->p_osd,
                    config_GetInt( p_intf, "xosd-shadow-offset" ));
    xosd_set_pos( p_intf->p_sys->p_osd,
                    config_GetInt( p_intf, "xosd-position" ) ?
                                         XOSD_bottom: XOSD_top );

    /* Initialize to NULL */
    xosd_display( p_osd, 0, XOSD_string, "XOSD interface initialized" );

    p_intf->pf_run = Run;

    p_intf->p_sys->b_need_update = VLC_TRUE;

    return VLC_SUCCESS;
}
Пример #2
0
/*
 * Apply changed from configuration dialog.
 */
static void configure_apply_cb (gpointer data)

{

  ConfigFile *cfgfile;

  show_volume=isactive(vol_on);
  show_balance=isactive(bal_on);
  show_pause=isactive(pause_on);
  show_trackname=isactive(trackname_on);
  show_stop=isactive(stop_on);
  show_repeat=isactive(repeat_on);
  show_shuffle=isactive(shuffle_on);


  if (colour)
    g_free (colour);
  if (font)
    g_free (font);

  colour = g_strdup (gtk_entry_get_text (GTK_ENTRY (colour_entry)));
  font = g_strdup (gtk_entry_get_text (GTK_ENTRY (font_entry)));
  timeout = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (timeout_spin));
  offset = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (offset_spin));
  shadow_offset = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (shadow_spin));
  if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (pos_top)))
    pos = XOSD_top;
  else
    pos = XOSD_bottom;

  if (osd)
    {
      xosd_set_colour (osd, colour);
      if (xosd_set_font (osd, font) == -1) {
	DEBUG("invalid font");
	DEBUG(font);
      }
      xosd_set_timeout (osd, timeout);
      xosd_set_offset (osd, offset);
      xosd_set_shadow_offset (osd, shadow_offset);
      xosd_set_pos (osd, pos);
    }

  cfgfile = xmms_cfg_open_default_file();
  xmms_cfg_write_string(cfgfile, "osd", "colour", colour);
  xmms_cfg_write_string(cfgfile, "osd", "font", font);
  xmms_cfg_write_int(cfgfile, "osd", "timeout", timeout);
  xmms_cfg_write_int(cfgfile, "osd", "offset", offset);
  xmms_cfg_write_int(cfgfile, "osd", "shadow_offset", shadow_offset);
  xmms_cfg_write_int(cfgfile, "osd", "pos", pos);

  xmms_cfg_write_int (cfgfile, "osd", "show_volume", show_volume );
  xmms_cfg_write_int (cfgfile, "osd", "show_balance", show_balance );
  xmms_cfg_write_int (cfgfile, "osd", "show_pause", show_pause );
  xmms_cfg_write_int (cfgfile, "osd", "show_trackname", show_trackname );
  xmms_cfg_write_int (cfgfile, "osd", "show_stop", show_stop );
  xmms_cfg_write_int (cfgfile, "osd", "show_repeat", show_repeat );
  xmms_cfg_write_int (cfgfile, "osd", "show_shuffle", show_shuffle );

  xmms_cfg_write_default_file(cfgfile);
  xmms_cfg_free(cfgfile);
}