Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-2-2
Commits
ba0c772b
Commit
ba0c772b
authored
Jan 20, 2003
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* all: begin to up to date the gtk/gnome interface. All comments are
welcome, and please reports bugs :)
parent
bd5872fb
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
1424 additions
and
40 deletions
+1424
-40
modules/gui/gtk/common.h
modules/gui/gtk/common.h
+8
-1
modules/gui/gtk/display.c
modules/gui/gtk/display.c
+5
-2
modules/gui/gtk/gnome.c
modules/gui/gtk/gnome.c
+48
-1
modules/gui/gtk/gnome.glade
modules/gui/gtk/gnome.glade
+164
-0
modules/gui/gtk/gnome_interface.c
modules/gui/gtk/gnome_interface.c
+238
-28
modules/gui/gtk/gtk.c
modules/gui/gtk/gtk.c
+47
-2
modules/gui/gtk/gtk.glade
modules/gui/gtk/gtk.glade
+164
-0
modules/gui/gtk/gtk_callbacks.c
modules/gui/gtk/gtk_callbacks.c
+94
-2
modules/gui/gtk/gtk_callbacks.h
modules/gui/gtk/gtk_callbacks.h
+22
-1
modules/gui/gtk/gtk_interface.c
modules/gui/gtk/gtk_interface.c
+191
-1
modules/gui/gtk/gtk_support.h
modules/gui/gtk/gtk_support.h
+1
-1
modules/gui/gtk/menu.c
modules/gui/gtk/menu.c
+442
-1
No files found.
modules/gui/gtk/common.h
View file @
ba0c772b
...
...
@@ -2,7 +2,7 @@
* gtk_common.h: private Gtk+ interface description
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* $Id: common.h,v 1.
5 2003/01/03 14:44:46 sam
Exp $
* $Id: common.h,v 1.
6 2003/01/20 20:07:06 fenrir
Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
...
...
@@ -44,8 +44,12 @@ struct intf_sys_t
vlc_bool_t
b_window_changed
;
/* window display toggled ? */
vlc_bool_t
b_playlist_changed
;
/* playlist display toggled ? */
vlc_bool_t
b_slider_free
;
/* slider status */
vlc_bool_t
b_deinterlace_update
;
/* menus handlers */
vlc_bool_t
b_aout_update
;
vlc_bool_t
b_vout_update
;
vlc_bool_t
b_program_update
;
/* do we need to update programs
menu */
vlc_bool_t
b_title_update
;
/* do we need to update title menus */
...
...
@@ -85,6 +89,9 @@ struct intf_sys_t
GtkLabel
*
p_label_title
;
GtkLabel
*
p_label_chapter
;
guint
i_part
;
/* current chapter */
/* audio part */
vlc_bool_t
b_mute
;
};
/*****************************************************************************
...
...
modules/gui/gtk/display.c
View file @
ba0c772b
...
...
@@ -2,7 +2,7 @@
* display.c: Gtk+ tools for main interface
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* $Id: display.c,v 1.
6 2002/12/18 14:17:11 sam
Exp $
* $Id: display.c,v 1.
7 2003/01/20 20:07:06 fenrir
Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Stphane Borel <stef@via.ecp.fr>
...
...
@@ -177,7 +177,10 @@ gint E_(GtkModeManage)( intf_thread_t * p_intf )
p_intf
->
p_sys
->
b_audio_update
=
1
;
p_intf
->
p_sys
->
b_spu_update
=
1
;
p_intf
->
p_sys
->
i_part
=
0
;
#if 0
p_intf->p_sys->b_aout_update = 1;
p_intf->p_sys->b_vout_update = 1;
#endif
p_intf
->
p_sys
->
p_input
->
stream
.
b_changed
=
0
;
msg_Dbg
(
p_intf
,
"stream has changed, refreshing interface"
);
}
...
...
modules/gui/gtk/gnome.c
View file @
ba0c772b
...
...
@@ -2,7 +2,7 @@
* gnome.c : Gnome plugin for vlc
*****************************************************************************
* Copyright (C) 2000 VideoLAN
* $Id: gnome.c,v 1.
5 2003/01/03 14:44:46 sam
Exp $
* $Id: gnome.c,v 1.
6 2003/01/20 20:07:06 fenrir
Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
...
...
@@ -111,6 +111,11 @@ static int Open( vlc_object_t *p_this )
/* Initialize Gnome thread */
p_intf
->
p_sys
->
b_playing
=
0
;
p_intf
->
p_sys
->
b_deinterlace_update
=
0
;
p_intf
->
p_sys
->
b_aout_update
=
0
;
p_intf
->
p_sys
->
b_vout_update
=
0
;
p_intf
->
p_sys
->
b_popup_changed
=
0
;
p_intf
->
p_sys
->
b_window_changed
=
0
;
p_intf
->
p_sys
->
b_playlist_changed
=
0
;
...
...
@@ -120,6 +125,7 @@ static int Open( vlc_object_t *p_this )
p_intf
->
p_sys
->
b_slider_free
=
1
;
p_intf
->
p_sys
->
i_part
=
0
;
p_intf
->
p_sys
->
b_mute
=
0
;
return
VLC_SUCCESS
;
}
...
...
@@ -367,6 +373,9 @@ static void Manage( intf_thread_t *p_intf )
if
(
p_intf
->
p_sys
->
p_input
)
{
input_thread_t
*
p_input
=
p_intf
->
p_sys
->
p_input
;
aout_instance_t
*
p_aout
=
NULL
;
vout_thread_t
*
p_vout
=
NULL
;
vlc_bool_t
b_need_menus
=
VLC_FALSE
;
vlc_mutex_lock
(
&
p_input
->
stream
.
stream_lock
);
...
...
@@ -421,6 +430,44 @@ static void Manage( intf_thread_t *p_intf )
p_input
->
stream
.
p_selected_area
->
i_part
)
{
p_intf
->
p_sys
->
b_chapter_update
=
1
;
b_need_menus
=
VLC_TRUE
;
}
/* Does the audio output require to update the menus ? */
p_aout
=
(
aout_instance_t
*
)
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
{
vlc_value_t
val
;
if
(
var_Get
(
(
vlc_object_t
*
)
p_aout
,
"intf-change"
,
&
val
)
>=
0
&&
val
.
b_bool
)
{
p_intf
->
p_sys
->
b_aout_update
=
1
;
b_need_menus
=
1
;
}
vlc_object_release
(
(
vlc_object_t
*
)
p_aout
);
}
/* Does the video output require to update the menus ? */
p_vout
=
(
vout_thread_t
*
)
vlc_object_find
(
p_intf
,
VLC_OBJECT_VOUT
,
FIND_ANYWHERE
);
if
(
p_vout
!=
NULL
)
{
vlc_value_t
val
;
if
(
var_Get
(
(
vlc_object_t
*
)
p_vout
,
"intf-change"
,
&
val
)
>=
0
&&
val
.
b_bool
)
{
p_intf
->
p_sys
->
b_vout_update
=
1
;
b_need_menus
=
1
;
}
vlc_object_release
(
(
vlc_object_t
*
)
p_vout
);
}
if
(
b_need_menus
)
{
GtkSetupMenus
(
p_intf
);
}
}
...
...
modules/gui/gtk/gnome.glade
View file @
ba0c772b
...
...
@@ -338,6 +338,100 @@
</widget>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_config_audio
</name>
<label>
_Audio
</label>
<right_justify>
False
</right_justify>
<widget>
<class>
GtkMenu
</class>
<name>
menubar_config_audio_menu
</name>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_volume_up
</name>
<signal>
<name>
activate
</name>
<handler>
GtkVolumeUp
</handler>
<last_modification_time>
Mon, 20 Jan 2003 16:30:55 GMT
</last_modification_time>
</signal>
<label>
Volume Up
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_volume_down
</name>
<signal>
<name>
activate
</name>
<handler>
GtkVolumeDown
</handler>
<last_modification_time>
Mon, 20 Jan 2003 16:30:55 GMT
</last_modification_time>
</signal>
<label>
Volume Down
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_volume_mute
</name>
<signal>
<name>
activate
</name>
<handler>
GtkVolumeMute
</handler>
<last_modification_time>
Mon, 20 Jan 2003 16:30:55 GMT
</last_modification_time>
</signal>
<label>
Mute
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
separator16
</name>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_audio_channels
</name>
<label>
Channels
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_audio_device
</name>
<label>
Device
</label>
<right_justify>
False
</right_justify>
</widget>
</widget>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_config_video_menu
</name>
<label>
_Video
</label>
<right_justify>
False
</right_justify>
<widget>
<class>
GtkMenu
</class>
<name>
menubar_config_video_menu_menu
</name>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_video_device
</name>
<label>
Screen
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_deinterlace
</name>
<label>
Deinterlace
</label>
<right_justify>
False
</right_justify>
</widget>
</widget>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_help
</name>
...
...
@@ -1113,12 +1207,82 @@
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
popup_video_device
</name>
<label>
Screen
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
popup_deinterlace
</name>
<label>
Deinterlace
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
separator8
</name>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
popup_volume_up
</name>
<signal>
<name>
activate
</name>
<handler>
GtkVolumeUp
</handler>
<last_modification_time>
Mon, 20 Jan 2003 16:33:43 GMT
</last_modification_time>
</signal>
<label>
Volume Up
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
popup_volume_down
</name>
<signal>
<name>
activate
</name>
<handler>
GtkVolumeDown
</handler>
<last_modification_time>
Mon, 20 Jan 2003 16:33:43 GMT
</last_modification_time>
</signal>
<label>
Volume Down
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
popup_volume_mute
</name>
<signal>
<name>
activate
</name>
<handler>
GtkVolumeMute
</handler>
<last_modification_time>
Mon, 20 Jan 2003 16:33:43 GMT
</last_modification_time>
</signal>
<label>
Mute
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
popup_audio_channels
</name>
<label>
Channels
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
popup_audio_device
</name>
<label>
Device
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
separator17
</name>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
popup_next
</name>
...
...
modules/gui/gtk/gnome_interface.c
View file @
ba0c772b
/* This file was created automatically by glade and fixed by bootstrap
.sh
*/
/* This file was created automatically by glade and fixed by bootstrap */
#include <vlc/vlc.h>
...
...
@@ -134,6 +134,66 @@ static GnomeUIInfo menubar_settings_menu_uiinfo[] =
GNOMEUIINFO_END
};
static
GnomeUIInfo
menubar_config_audio_menu_uiinfo
[]
=
{
{
GNOME_APP_UI_ITEM
,
N_
(
"Volume Up"
),
NULL
,
(
gpointer
)
GtkVolumeUp
,
NULL
,
NULL
,
GNOME_APP_PIXMAP_NONE
,
NULL
,
0
,
(
GdkModifierType
)
0
,
NULL
},
{
GNOME_APP_UI_ITEM
,
N_
(
"Volume Down"
),
NULL
,
(
gpointer
)
GtkVolumeDown
,
NULL
,
NULL
,
GNOME_APP_PIXMAP_NONE
,
NULL
,
0
,
(
GdkModifierType
)
0
,
NULL
},
{
GNOME_APP_UI_ITEM
,
N_
(
"Mute"
),
NULL
,
(
gpointer
)
GtkVolumeMute
,
NULL
,
NULL
,
GNOME_APP_PIXMAP_NONE
,
NULL
,
0
,
(
GdkModifierType
)
0
,
NULL
},
GNOMEUIINFO_SEPARATOR
,
{
GNOME_APP_UI_ITEM
,
N_
(
"Channels"
),
NULL
,
(
gpointer
)
NULL
,
NULL
,
NULL
,
GNOME_APP_PIXMAP_NONE
,
NULL
,
0
,
(
GdkModifierType
)
0
,
NULL
},
{
GNOME_APP_UI_ITEM
,
N_
(
"Device"
),
NULL
,
(
gpointer
)
NULL
,
NULL
,
NULL
,
GNOME_APP_PIXMAP_NONE
,
NULL
,
0
,
(
GdkModifierType
)
0
,
NULL
},
GNOMEUIINFO_END
};
static
GnomeUIInfo
menubar_config_video_menu_menu_uiinfo
[]
=
{
{
GNOME_APP_UI_ITEM
,
N_
(
"Screen"
),
NULL
,
(
gpointer
)
NULL
,
NULL
,
NULL
,
GNOME_APP_PIXMAP_NONE
,
NULL
,
0
,
(
GdkModifierType
)
0
,
NULL
},
{
GNOME_APP_UI_ITEM
,
N_
(
"Deinterlace"
),
NULL
,
(
gpointer
)
NULL
,
NULL
,
NULL
,
GNOME_APP_PIXMAP_NONE
,
NULL
,
0
,
(
GdkModifierType
)
0
,
NULL
},
GNOMEUIINFO_END
};
static
GnomeUIInfo
menubar_help_menu_uiinfo
[]
=
{
GNOMEUIINFO_MENU_ABOUT_ITEM
(
GtkAboutShow
,
NULL
),
...
...
@@ -145,6 +205,20 @@ static GnomeUIInfo menubar_uiinfo[] =
GNOMEUIINFO_MENU_FILE_TREE
(
menubar_file_menu_uiinfo
),
GNOMEUIINFO_MENU_VIEW_TREE
(
menubar_view_menu_uiinfo
),
GNOMEUIINFO_MENU_SETTINGS_TREE
(
menubar_settings_menu_uiinfo
),
{
GNOME_APP_UI_SUBTREE
,
N_
(
"_Audio"
),
NULL
,
menubar_config_audio_menu_uiinfo
,
NULL
,
NULL
,
GNOME_APP_PIXMAP_NONE
,
NULL
,
0
,
(
GdkModifierType
)
0
,
NULL
},
{
GNOME_APP_UI_SUBTREE
,
N_
(
"_Video"
),
NULL
,
menubar_config_video_menu_menu_uiinfo
,
NULL
,
NULL
,
GNOME_APP_PIXMAP_NONE
,
NULL
,
0
,
(
GdkModifierType
)
0
,
NULL
},
GNOMEUIINFO_MENU_HELP_TREE
(
menubar_help_menu_uiinfo
),
GNOMEUIINFO_END
};
...
...
@@ -344,10 +418,60 @@ create_intf_window (void)
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
menubar_uiinfo
[
3
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_
help
"
,
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_
config_audio
"
,
menubar_uiinfo
[
3
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
menubar_config_audio_menu_uiinfo
[
0
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_volume_up"
,
menubar_config_audio_menu_uiinfo
[
0
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
menubar_config_audio_menu_uiinfo
[
1
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_volume_down"
,
menubar_config_audio_menu_uiinfo
[
1
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
menubar_config_audio_menu_uiinfo
[
2
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_volume_mute"
,
menubar_config_audio_menu_uiinfo
[
2
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
menubar_config_audio_menu_uiinfo
[
3
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"separator16"
,
menubar_config_audio_menu_uiinfo
[
3
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
menubar_config_audio_menu_uiinfo
[
4
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_audio_channels"
,
menubar_config_audio_menu_uiinfo
[
4
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
menubar_config_audio_menu_uiinfo
[
5
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_audio_device"
,
menubar_config_audio_menu_uiinfo
[
5
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
menubar_uiinfo
[
4
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_config_video_menu"
,
menubar_uiinfo
[
4
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
menubar_config_video_menu_menu_uiinfo
[
0
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_video_device"
,
menubar_config_video_menu_menu_uiinfo
[
0
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
menubar_config_video_menu_menu_uiinfo
[
1
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_deinterlace"
,
menubar_config_video_menu_menu_uiinfo
[
1
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
menubar_uiinfo
[
5
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_help"
,
menubar_uiinfo
[
5
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
menubar_help_menu_uiinfo
[
0
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_about"
,
menubar_help_menu_uiinfo
[
0
].
widget
,
...
...
@@ -619,7 +743,6 @@ create_intf_window (void)
gtk_widget_show
(
button_title_prev
);
gtk_box_pack_start
(
GTK_BOX
(
title_chapter_box
),
button_title_prev
,
FALSE
,
FALSE
,
0
);
gtk_tooltips_set_tip
(
tooltips
,
button_title_prev
,
_
(
"Select previous title"
),
NULL
);
gtk_button_set_relief
(
GTK_BUTTON
(
button_title_prev
),
GTK_RELIEF_NONE
);
button_title_next
=
gnome_stock_button
(
GNOME_STOCK_BUTTON_NEXT
);
gtk_widget_ref
(
button_title_next
);
...
...
@@ -627,7 +750,6 @@ create_intf_window (void)
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
button_title_next
);
gtk_box_pack_start
(
GTK_BOX
(
title_chapter_box
),
button_title_next
,
FALSE
,
FALSE
,
0
);
gtk_button_set_relief
(
GTK_BUTTON
(
button_title_next
),
GTK_RELIEF_NONE
);
vseparator1
=
gtk_vseparator_new
();
gtk_widget_ref
(
vseparator1
);
...
...
@@ -664,7 +786,6 @@ create_intf_window (void)
gtk_widget_show
(
button_chapter_prev
);
gtk_box_pack_start
(
GTK_BOX
(
dvd_chapter_box
),
button_chapter_prev
,
FALSE
,
FALSE
,
0
);
gtk_tooltips_set_tip
(
tooltips
,
button_chapter_prev
,
_
(
"Select previous chapter"
),
NULL
);
gtk_button_set_relief
(
GTK_BUTTON
(
button_chapter_prev
),
GTK_RELIEF_NONE
);
button_chapter_next
=
gnome_stock_button
(
GNOME_STOCK_BUTTON_UP
);
gtk_widget_ref
(
button_chapter_next
);
...
...
@@ -673,7 +794,6 @@ create_intf_window (void)
gtk_widget_show
(
button_chapter_next
);
gtk_box_pack_start
(
GTK_BOX
(
dvd_chapter_box
),
button_chapter_next
,
FALSE
,
FALSE
,
0
);
gtk_tooltips_set_tip
(
tooltips
,
button_chapter_next
,
_
(
"Select next chapter"
),
NULL
);
gtk_button_set_relief
(
GTK_BUTTON
(
button_chapter_next
),
GTK_RELIEF_NONE
);
network_box
=
gtk_hbox_new
(
TRUE
,
0
);
gtk_widget_ref
(
network_box
);
...
...
@@ -891,6 +1011,56 @@ static GnomeUIInfo intf_popup_uiinfo[] =
GNOME_APP_PIXMAP_NONE
,
NULL
,
0
,
(
GdkModifierType
)
0
,
NULL
},
{
GNOME_APP_UI_ITEM
,
N_
(
"Screen"
),
NULL
,
(
gpointer
)
NULL
,
NULL
,
NULL
,
GNOME_APP_PIXMAP_NONE
,
NULL
,
0
,
(
GdkModifierType
)
0
,
NULL
},
{
GNOME_APP_UI_ITEM
,
N_
(
"Deinterlace"
),
NULL
,
(
gpointer
)
NULL
,
NULL
,
NULL
,
GNOME_APP_PIXMAP_NONE
,
NULL
,
0
,
(
GdkModifierType
)
0
,
NULL
},
GNOMEUIINFO_SEPARATOR
,
{
GNOME_APP_UI_ITEM
,
N_
(
"Volume Up"
),
NULL
,
(
gpointer
)
GtkVolumeUp
,
NULL
,
NULL
,
GNOME_APP_PIXMAP_NONE
,
NULL
,
0
,
(
GdkModifierType
)
0
,
NULL
},
{
GNOME_APP_UI_ITEM
,
N_
(
"Volume Down"
),
NULL
,
(
gpointer
)
GtkVolumeDown
,
NULL
,
NULL
,
GNOME_APP_PIXMAP_NONE
,
NULL
,
0
,
(
GdkModifierType
)
0
,
NULL
},
{
GNOME_APP_UI_ITEM
,
N_
(
"Mute"
),
NULL
,
(
gpointer
)
GtkVolumeMute
,
NULL
,
NULL
,
GNOME_APP_PIXMAP_NONE
,
NULL
,
0
,
(
GdkModifierType
)
0
,
NULL
},
{
GNOME_APP_UI_ITEM
,
N_
(
"Channels"
),
NULL
,
(
gpointer
)
NULL
,
NULL
,
NULL
,
GNOME_APP_PIXMAP_NONE
,
NULL
,
0
,
(
GdkModifierType
)
0
,
NULL
},
{
GNOME_APP_UI_ITEM
,
N_
(
"Device"
),
NULL
,
(
gpointer
)
NULL
,
NULL
,
NULL
,
GNOME_APP_PIXMAP_NONE
,
NULL
,
0
,
(
GdkModifierType
)
0
,
NULL
},
GNOMEUIINFO_SEPARATOR
,
{
GNOME_APP_UI_ITEM
,
N_
(
"Next"
),
...
...
@@ -1013,59 +1183,99 @@ create_intf_popup (void)
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
intf_popup_uiinfo
[
9
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"
separator8
"
,
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"
popup_video_device
"
,
intf_popup_uiinfo
[
9
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
intf_popup_uiinfo
[
10
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_
next
"
,
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_
deinterlace
"
,
intf_popup_uiinfo
[
10
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
intf_popup_uiinfo
[
11
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"
popup_prev
"
,
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"
separator8
"
,
intf_popup_uiinfo
[
11
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
intf_popup_uiinfo
[
12
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_
jum
p"
,
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_
volume_u
p"
,
intf_popup_uiinfo
[
12
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
intf_popup_uiinfo
[
13
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_
program
"
,
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_
volume_down
"
,
intf_popup_uiinfo
[
13
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_set_sensitive
(
intf_popup_uiinfo
[
13
].
widget
,
FALSE
);
gtk_widget_ref
(
intf_popup_uiinfo
[
14
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_
navigation
"
,
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_
volume_mute
"
,
intf_popup_uiinfo
[
14
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_set_sensitive
(
intf_popup_uiinfo
[
14
].
widget
,
FALSE
);
gtk_widget_ref
(
intf_popup_uiinfo
[
15
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_audio"
,
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_audio
_channels
"
,
intf_popup_uiinfo
[
15
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_set_sensitive
(
intf_popup_uiinfo
[
15
].
widget
,
FALSE
);
gtk_widget_ref
(
intf_popup_uiinfo
[
16
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_
subpictures
"
,
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_
audio_device
"
,
intf_popup_uiinfo
[
16
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_set_sensitive
(
intf_popup_uiinfo
[
16
].
widget
,
FALSE
);
gtk_widget_ref
(
intf_popup_uiinfo
[
17
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"separator1
3
"
,
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"separator1
7
"
,
intf_popup_uiinfo
[
17
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
intf_popup_uiinfo
[
18
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_
file
"
,
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_
next
"
,
intf_popup_uiinfo
[
18
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
intf_popup_uiinfo
[
19
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_prev"
,
intf_popup_uiinfo
[
19
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
intf_popup_uiinfo
[
20
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_jump"
,
intf_popup_uiinfo
[
20
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
intf_popup_uiinfo
[
21
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_program"
,
intf_popup_uiinfo
[
21
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_set_sensitive
(
intf_popup_uiinfo
[
21
].
widget
,
FALSE
);
gtk_widget_ref
(
intf_popup_uiinfo
[
22
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_navigation"
,
intf_popup_uiinfo
[
22
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_set_sensitive
(
intf_popup_uiinfo
[
22
].
widget
,
FALSE
);
gtk_widget_ref
(
intf_popup_uiinfo
[
23
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_audio"
,
intf_popup_uiinfo
[
23
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_set_sensitive
(
intf_popup_uiinfo
[
23
].
widget
,
FALSE
);
gtk_widget_ref
(
intf_popup_uiinfo
[
24
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_subpictures"
,
intf_popup_uiinfo
[
24
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_set_sensitive
(
intf_popup_uiinfo
[
24
].
widget
,
FALSE
);
gtk_widget_ref
(
intf_popup_uiinfo
[
25
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"separator13"
,
intf_popup_uiinfo
[
25
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
intf_popup_uiinfo
[
26
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_file"
,
intf_popup_uiinfo
[
26
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
popup_file_menu_uiinfo
[
0
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_open"
,
popup_file_menu_uiinfo
[
0
].
widget
,
...
...
@@ -1091,24 +1301,24 @@ create_intf_popup (void)
popup_file_menu_uiinfo
[
4
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
intf_popup_uiinfo
[
19
].
widget
);
gtk_widget_ref
(
intf_popup_uiinfo
[
27
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_playlist"
,
intf_popup_uiinfo
[
19
].
widget
,
intf_popup_uiinfo
[
27
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
intf_popup_uiinfo
[
2
0
].
widget
);
gtk_widget_ref
(
intf_popup_uiinfo
[
2
8
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_preferences"
,
intf_popup_uiinfo
[
2
0
].
widget
,
intf_popup_uiinfo
[
2
8
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
intf_popup_uiinfo
[
2
1
].
widget
);
gtk_widget_ref
(
intf_popup_uiinfo
[
2
9
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"separator2"
,
intf_popup_uiinfo
[
2
1
].
widget
,
intf_popup_uiinfo
[
2
9
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_ref
(
intf_popup_uiinfo
[
22
].
widget
);
gtk_widget_ref
(
intf_popup_uiinfo
[
30
].
widget
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_exit"
,
intf_popup_uiinfo
[
22
].
widget
,
intf_popup_uiinfo
[
30
].
widget
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
return
intf_popup
;
...
...
modules/gui/gtk/gtk.c
View file @
ba0c772b
...
...
@@ -2,7 +2,7 @@
* gtk.c : Gtk+ plugin for vlc
*****************************************************************************
* Copyright (C) 2000-2001 VideoLAN
* $Id: gtk.c,v 1.1
0 2003/01/03 14:44:46 sam
Exp $
* $Id: gtk.c,v 1.1
1 2003/01/20 20:07:06 fenrir
Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
...
...
@@ -111,6 +111,11 @@ static int Open( vlc_object_t *p_this )
/* Initialize Gtk+ thread */
p_intf
->
p_sys
->
b_playing
=
0
;
p_intf
->
p_sys
->
b_deinterlace_update
=
0
;
p_intf
->
p_sys
->
b_aout_update
=
0
;
p_intf
->
p_sys
->
b_vout_update
=
0
;
p_intf
->
p_sys
->
b_popup_changed
=
0
;
p_intf
->
p_sys
->
b_window_changed
=
0
;
p_intf
->
p_sys
->
b_playlist_changed
=
0
;
...
...
@@ -126,6 +131,7 @@ static int Open( vlc_object_t *p_this )
p_intf
->
p_sys
->
i_part
=
0
;
p_intf
->
p_sys
->
b_mute
=
0
;
return
VLC_SUCCESS
;
}
...
...
@@ -384,6 +390,9 @@ static int Manage( intf_thread_t *p_intf )
if
(
p_intf
->
p_sys
->
p_input
)
{
input_thread_t
*
p_input
=
p_intf
->
p_sys
->
p_input
;
aout_instance_t
*
p_aout
=
NULL
;
vout_thread_t
*
p_vout
=
NULL
;
vlc_bool_t
b_need_menus
=
VLC_FALSE
;
vlc_mutex_lock
(
&
p_input
->
stream
.
stream_lock
);
...
...
@@ -436,6 +445,42 @@ static int Manage( intf_thread_t *p_intf )
p_input
->
stream
.
p_selected_area
->
i_part
)
{
p_intf
->
p_sys
->
b_chapter_update
=
1
;
b_need_menus
=
VLC_TRUE
;
}
/* Does the audio output require to update the menus ? */
p_aout
=
(
aout_instance_t
*
)
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
{
vlc_value_t
val
;
if
(
var_Get
(
(
vlc_object_t
*
)
p_aout
,
"intf-change"
,
&
val
)
>=
0
&&
val
.
b_bool
)
{
p_intf
->
p_sys
->
b_aout_update
=
1
;
b_need_menus
=
1
;
}
vlc_object_release
(
(
vlc_object_t
*
)
p_aout
);
}
/* Does the video output require to update the menus ? */
p_vout
=
(
vout_thread_t
*
)
vlc_object_find
(
p_intf
,
VLC_OBJECT_VOUT
,
FIND_ANYWHERE
);
if
(
p_vout
!=
NULL
)
{
vlc_value_t
val
;
if
(
var_Get
(
(
vlc_object_t
*
)
p_vout
,
"intf-change"
,
&
val
)
>=
0
&&
val
.
b_bool
)
{
p_intf
->
p_sys
->
b_vout_update
=
1
;
b_need_menus
=
1
;
}
vlc_object_release
(
(
vlc_object_t
*
)
p_vout
);
}
if
(
b_need_menus
)
{
GtkSetupMenus
(
p_intf
);
}
}
...
...
modules/gui/gtk/gtk.glade
View file @
ba0c772b
...
...
@@ -356,6 +356,100 @@
</widget>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_config_audio
</name>
<label>
_Audio
</label>
<right_justify>
False
</right_justify>
<widget>
<class>
GtkMenu
</class>
<name>
menubar_config_audio_menu
</name>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_volume_up
</name>
<signal>
<name>
activate
</name>
<handler>
GtkVolumeUp
</handler>
<last_modification_time>
Mon, 20 Jan 2003 10:11:53 GMT
</last_modification_time>
</signal>
<label>
Volume Up
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_volume_down
</name>
<signal>
<name>
activate
</name>
<handler>
GtkVolumeDown
</handler>
<last_modification_time>
Mon, 20 Jan 2003 10:11:53 GMT
</last_modification_time>
</signal>
<label>
Volume Down
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_volume_mute
</name>
<signal>
<name>
activate
</name>
<handler>
GtkVolumeMute
</handler>
<last_modification_time>
Mon, 20 Jan 2003 10:11:53 GMT
</last_modification_time>
</signal>
<label>
Mute
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
separator15
</name>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_audio_channels
</name>
<label>
Channels
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_audio_device
</name>
<label>
Device
</label>
<right_justify>
False
</right_justify>
</widget>
</widget>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_config_video
</name>
<label>
_Video
</label>
<right_justify>
False
</right_justify>
<widget>
<class>
GtkMenu
</class>
<name>
menubar_config_video_menu
</name>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_video_device
</name>
<label>
Screen
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_deinterlace
</name>
<label>
Deinterlace
</label>
<right_justify>
False
</right_justify>
</widget>
</widget>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
menubar_help
</name>
...
...
@@ -1107,12 +1201,82 @@
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
popup_video_device
</name>
<label>
Screen
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
popup_deinterlace
</name>
<label>
Deinterlace
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
separator5
</name>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
popup_volume_up
</name>
<signal>
<name>
activate
</name>
<handler>
GtkVolumeUp
</handler>
<last_modification_time>
Mon, 20 Jan 2003 10:16:02 GMT
</last_modification_time>
</signal>
<label>
Volume Up
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
popup_volume_down
</name>
<signal>
<name>
activate
</name>
<handler>
GtkVolumeDown
</handler>
<last_modification_time>
Mon, 20 Jan 2003 10:18:25 GMT
</last_modification_time>
</signal>
<label>
Volume Down
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
popup_volume_mute
</name>
<signal>
<name>
activate
</name>
<handler>
GtkVolumeMute
</handler>
<last_modification_time>
Mon, 20 Jan 2003 10:18:25 GMT
</last_modification_time>
</signal>
<label>
Mute
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
popup_audio_channels
</name>
<label>
Channels
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
popup_audio_device
</name>
<label>
Device
</label>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
separator16
</name>
<right_justify>
False
</right_justify>
</widget>
<widget>
<class>
GtkMenuItem
</class>
<name>
popup_next
</name>
...
...
modules/gui/gtk/gtk_callbacks.c
View file @
ba0c772b
...
...
@@ -2,7 +2,7 @@
* gtk_callbacks.c : Callbacks for the Gtk+ plugin.
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
* $Id: gtk_callbacks.c,v 1.
7 2003/01/17 19:17:09 sam
Exp $
* $Id: gtk_callbacks.c,v 1.
8 2003/01/20 20:07:06 fenrir
Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Stphane Borel <stef@via.ecp.fr>
...
...
@@ -32,6 +32,7 @@
#include <vlc/vlc.h>
#include <vlc/intf.h>
#include <vlc/vout.h>
#include <vlc/aout.h>
#include <unistd.h>
...
...
@@ -568,7 +569,6 @@ gboolean GtkMessagesShow( GtkWidget *widget,
return
TRUE
;
}
void
GtkMessagesOk
(
GtkButton
*
button
,
gpointer
user_data
)
...
...
@@ -598,3 +598,95 @@ GtkOpenNotebookChanged (GtkNotebook *notebook,
GtkOpenChanged
(
GTK_WIDGET
(
notebook
),
user_data
);
}
/****************************************************************************
* Audio management
****************************************************************************/
void
GtkVolumeUp
(
GtkMenuItem
*
menuitem
,
gpointer
user_data
)
{
intf_thread_t
*
p_intf
=
GtkGetIntf
(
menuitem
);
aout_instance_t
*
p_aout
;
p_aout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
{
if
(
p_intf
->
p_sys
->
b_mute
)
{
audio_volume_t
i_volume
;
aout_VolumeMute
(
p_aout
,
&
i_volume
);
p_intf
->
p_sys
->
b_mute
=
(
i_volume
==
0
)
?
1
:
0
;
}
aout_VolumeUp
(
p_aout
,
1
,
NULL
);
vlc_object_release
(
(
vlc_object_t
*
)
p_aout
);
}
}
void
GtkVolumeDown
(
GtkMenuItem
*
menuitem
,
gpointer
user_data
)
{
intf_thread_t
*
p_intf
=
GtkGetIntf
(
menuitem
);
aout_instance_t
*
p_aout
;
p_aout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
{
if
(
p_intf
->
p_sys
->
b_mute
)
{
audio_volume_t
i_volume
;
aout_VolumeMute
(
p_aout
,
&
i_volume
);
p_intf
->
p_sys
->
b_mute
=
(
i_volume
==
0
)
?
1
:
0
;
}
aout_VolumeDown
(
p_aout
,
1
,
NULL
);
vlc_object_release
(
(
vlc_object_t
*
)
p_aout
);
}
}
void
GtkVolumeMute
(
GtkMenuItem
*
menuitem
,
gpointer
user_data
)
{
intf_thread_t
*
p_intf
=
GtkGetIntf
(
menuitem
);
aout_instance_t
*
p_aout
;
audio_volume_t
i_volume
;
p_aout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
{
aout_VolumeMute
(
p_aout
,
&
i_volume
);
p_intf
->
p_sys
->
b_mute
=
(
i_volume
==
0
)
?
1
:
0
;
vlc_object_release
(
(
vlc_object_t
*
)
p_aout
);
}
}
void
GtkMenubarDeinterlace
(
GtkMenuItem
*
menuitem
,
gpointer
user_data
)
{
intf_thread_t
*
p_intf
=
GtkGetIntf
(
menuitem
);
if
(
p_intf
)
msg_Dbg
(
p_intf
,
"GtkMenubarDeinterlace"
);
}
void
GtkPopupDeinterlace
(
GtkRadioMenuItem
*
radiomenuitem
,
gpointer
user_data
)
{
intf_thread_t
*
p_intf
=
GtkGetIntf
(
radiomenuitem
);
if
(
p_intf
)
msg_Dbg
(
p_intf
,
"GtkPopupDeinterlace"
);
}
modules/gui/gtk/gtk_callbacks.h
View file @
ba0c772b
...
...
@@ -2,7 +2,7 @@
* gtk_callbacks.h : Callbacks for the gtk plugin.
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
* $Id: gtk_callbacks.h,v 1.
2 2002/09/30 11:05:39 sam
Exp $
* $Id: gtk_callbacks.h,v 1.
3 2003/01/20 20:07:06 fenrir
Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Stphane Borel <stef@via.ecp.fr>
...
...
@@ -153,3 +153,24 @@ GtkFileCancel (GtkButton *button,
void
GtkClose
(
GtkMenuItem
*
menuitem
,
gpointer
user_data
);
void
GtkVolumeUp
(
GtkMenuItem
*
menuitem
,
gpointer
user_data
);
void
GtkVolumeDown
(
GtkMenuItem
*
menuitem
,
gpointer
user_data
);
void
GtkVolumeMute
(
GtkMenuItem
*
menuitem
,
gpointer
user_data
);
void
GtkMenubarDeinterlace
(
GtkMenuItem
*
menuitem
,
gpointer
user_data
);
void
GtkPopupDeinterlace
(
GtkRadioMenuItem
*
radiomenuitem
,
gpointer
user_data
);
modules/gui/gtk/gtk_interface.c
View file @
ba0c772b
/* This file was created automatically by glade and fixed by bootstrap
.sh
*/
/* This file was created automatically by glade and fixed by bootstrap */
#include <vlc/vlc.h>
...
...
@@ -53,6 +53,20 @@ create_intf_window (void)
GtkWidget
*
menubar_subpictures
;
GtkWidget
*
separator8
;
GtkWidget
*
menubar_preferences
;
GtkWidget
*
menubar_config_audio
;
GtkWidget
*
menubar_config_audio_menu
;
GtkAccelGroup
*
menubar_config_audio_menu_accels
;
GtkWidget
*
menubar_volume_up
;
GtkWidget
*
menubar_volume_down
;
GtkWidget
*
menubar_volume_mute
;
GtkWidget
*
separator15
;
GtkWidget
*
menubar_audio_channels
;
GtkWidget
*
menubar_audio_device
;
GtkWidget
*
menubar_config_video
;
GtkWidget
*
menubar_config_video_menu
;
GtkAccelGroup
*
menubar_config_video_menu_accels
;
GtkWidget
*
menubar_video_device
;
GtkWidget
*
menubar_deinterlace
;
GtkWidget
*
menubar_help
;
GtkWidget
*
menubar_help_menu
;
GtkAccelGroup
*
menubar_help_menu_accels
;
...
...
@@ -444,6 +458,99 @@ create_intf_window (void)
gtk_container_add
(
GTK_CONTAINER
(
menubar_settings_menu
),
menubar_preferences
);
gtk_tooltips_set_tip
(
tooltips
,
menubar_preferences
,
_
(
"Configure the application"
),
NULL
);
menubar_config_audio
=
gtk_menu_item_new_with_label
(
""
);
tmp_key
=
gtk_label_parse_uline
(
GTK_LABEL
(
GTK_BIN
(
menubar_config_audio
)
->
child
),
_
(
"_Audio"
));
gtk_widget_add_accelerator
(
menubar_config_audio
,
"activate_item"
,
accel_group
,
tmp_key
,
GDK_MOD1_MASK
,
(
GtkAccelFlags
)
0
);
gtk_widget_ref
(
menubar_config_audio
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_config_audio"
,
menubar_config_audio
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
menubar_config_audio
);
gtk_container_add
(
GTK_CONTAINER
(
menubar
),
menubar_config_audio
);
menubar_config_audio_menu
=
gtk_menu_new
();
gtk_widget_ref
(
menubar_config_audio_menu
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_config_audio_menu"
,
menubar_config_audio_menu
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
menubar_config_audio
),
menubar_config_audio_menu
);
menubar_config_audio_menu_accels
=
gtk_menu_ensure_uline_accel_group
(
GTK_MENU
(
menubar_config_audio_menu
));
menubar_volume_up
=
gtk_menu_item_new_with_label
(
_
(
"Volume Up"
));
gtk_widget_ref
(
menubar_volume_up
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_volume_up"
,
menubar_volume_up
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
menubar_volume_up
);
gtk_container_add
(
GTK_CONTAINER
(
menubar_config_audio_menu
),
menubar_volume_up
);
menubar_volume_down
=
gtk_menu_item_new_with_label
(
_
(
"Volume Down"
));
gtk_widget_ref
(
menubar_volume_down
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_volume_down"
,
menubar_volume_down
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
menubar_volume_down
);
gtk_container_add
(
GTK_CONTAINER
(
menubar_config_audio_menu
),
menubar_volume_down
);
menubar_volume_mute
=
gtk_menu_item_new_with_label
(
_
(
"Mute"
));
gtk_widget_ref
(
menubar_volume_mute
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_volume_mute"
,
menubar_volume_mute
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
menubar_volume_mute
);
gtk_container_add
(
GTK_CONTAINER
(
menubar_config_audio_menu
),
menubar_volume_mute
);
separator15
=
gtk_menu_item_new
();
gtk_widget_ref
(
separator15
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"separator15"
,
separator15
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
separator15
);
gtk_container_add
(
GTK_CONTAINER
(
menubar_config_audio_menu
),
separator15
);
gtk_widget_set_sensitive
(
separator15
,
FALSE
);
menubar_audio_channels
=
gtk_menu_item_new_with_label
(
_
(
"Channels"
));
gtk_widget_ref
(
menubar_audio_channels
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_audio_channels"
,
menubar_audio_channels
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
menubar_audio_channels
);
gtk_container_add
(
GTK_CONTAINER
(
menubar_config_audio_menu
),
menubar_audio_channels
);
menubar_audio_device
=
gtk_menu_item_new_with_label
(
_
(
"Device"
));
gtk_widget_ref
(
menubar_audio_device
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_audio_device"
,
menubar_audio_device
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
menubar_audio_device
);
gtk_container_add
(
GTK_CONTAINER
(
menubar_config_audio_menu
),
menubar_audio_device
);
menubar_config_video
=
gtk_menu_item_new_with_label
(
""
);
tmp_key
=
gtk_label_parse_uline
(
GTK_LABEL
(
GTK_BIN
(
menubar_config_video
)
->
child
),
_
(
"_Video"
));
gtk_widget_add_accelerator
(
menubar_config_video
,
"activate_item"
,
accel_group
,
tmp_key
,
GDK_MOD1_MASK
,
(
GtkAccelFlags
)
0
);
gtk_widget_ref
(
menubar_config_video
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_config_video"
,
menubar_config_video
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
menubar_config_video
);
gtk_container_add
(
GTK_CONTAINER
(
menubar
),
menubar_config_video
);
menubar_config_video_menu
=
gtk_menu_new
();
gtk_widget_ref
(
menubar_config_video_menu
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_config_video_menu"
,
menubar_config_video_menu
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
menubar_config_video
),
menubar_config_video_menu
);
menubar_config_video_menu_accels
=
gtk_menu_ensure_uline_accel_group
(
GTK_MENU
(
menubar_config_video_menu
));
menubar_video_device
=
gtk_menu_item_new_with_label
(
_
(
"Screen"
));
gtk_widget_ref
(
menubar_video_device
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_video_device"
,
menubar_video_device
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
menubar_video_device
);
gtk_container_add
(
GTK_CONTAINER
(
menubar_config_video_menu
),
menubar_video_device
);
menubar_deinterlace
=
gtk_menu_item_new_with_label
(
_
(
"Deinterlace"
));
gtk_widget_ref
(
menubar_deinterlace
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_window
),
"menubar_deinterlace"
,
menubar_deinterlace
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
menubar_deinterlace
);
gtk_container_add
(
GTK_CONTAINER
(
menubar_config_video_menu
),
menubar_deinterlace
);
menubar_help
=
gtk_menu_item_new_with_label
(
""
);
tmp_key
=
gtk_label_parse_uline
(
GTK_LABEL
(
GTK_BIN
(
menubar_help
)
->
child
),
_
(
"_Help"
));
...
...
@@ -874,6 +981,15 @@ create_intf_window (void)
gtk_signal_connect
(
GTK_OBJECT
(
menubar_preferences
),
"activate"
,
GTK_SIGNAL_FUNC
(
GtkPreferencesShow
),
NULL
);
gtk_signal_connect
(
GTK_OBJECT
(
menubar_volume_up
),
"activate"
,
GTK_SIGNAL_FUNC
(
GtkVolumeUp
),
NULL
);
gtk_signal_connect
(
GTK_OBJECT
(
menubar_volume_down
),
"activate"
,
GTK_SIGNAL_FUNC
(
GtkVolumeDown
),
NULL
);
gtk_signal_connect
(
GTK_OBJECT
(
menubar_volume_mute
),
"activate"
,
GTK_SIGNAL_FUNC
(
GtkVolumeMute
),
NULL
);
gtk_signal_connect
(
GTK_OBJECT
(
menubar_about
),
"activate"
,
GTK_SIGNAL_FUNC
(
GtkAboutShow
),
NULL
);
...
...
@@ -966,7 +1082,15 @@ create_intf_popup (void)
GtkWidget
*
separator6
;
GtkWidget
*
popup_interface_toggle
;
GtkWidget
*
popup_fullscreen
;
GtkWidget
*
popup_video_device
;
GtkWidget
*
popup_deinterlace
;
GtkWidget
*
separator5
;
GtkWidget
*
popup_volume_up
;
GtkWidget
*
popup_volume_down
;
GtkWidget
*
popup_volume_mute
;
GtkWidget
*
popup_audio_channels
;
GtkWidget
*
popup_audio_device
;
GtkWidget
*
separator16
;
GtkWidget
*
popup_next
;
GtkWidget
*
popup_prev
;
GtkWidget
*
popup_jump
;
...
...
@@ -1074,6 +1198,20 @@ create_intf_popup (void)
gtk_widget_show
(
popup_fullscreen
);
gtk_container_add
(
GTK_CONTAINER
(
intf_popup
),
popup_fullscreen
);
popup_video_device
=
gtk_menu_item_new_with_label
(
_
(
"Screen"
));
gtk_widget_ref
(
popup_video_device
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_video_device"
,
popup_video_device
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
popup_video_device
);
gtk_container_add
(
GTK_CONTAINER
(
intf_popup
),
popup_video_device
);
popup_deinterlace
=
gtk_menu_item_new_with_label
(
_
(
"Deinterlace"
));
gtk_widget_ref
(
popup_deinterlace
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_deinterlace"
,
popup_deinterlace
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
popup_deinterlace
);
gtk_container_add
(
GTK_CONTAINER
(
intf_popup
),
popup_deinterlace
);
separator5
=
gtk_menu_item_new
();
gtk_widget_ref
(
separator5
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"separator5"
,
separator5
,
...
...
@@ -1082,6 +1220,49 @@ create_intf_popup (void)
gtk_container_add
(
GTK_CONTAINER
(
intf_popup
),
separator5
);
gtk_widget_set_sensitive
(
separator5
,
FALSE
);
popup_volume_up
=
gtk_menu_item_new_with_label
(
_
(
"Volume Up"
));
gtk_widget_ref
(
popup_volume_up
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_volume_up"
,
popup_volume_up
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
popup_volume_up
);
gtk_container_add
(
GTK_CONTAINER
(
intf_popup
),
popup_volume_up
);
popup_volume_down
=
gtk_menu_item_new_with_label
(
_
(
"Volume Down"
));
gtk_widget_ref
(
popup_volume_down
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_volume_down"
,
popup_volume_down
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
popup_volume_down
);
gtk_container_add
(
GTK_CONTAINER
(
intf_popup
),
popup_volume_down
);
popup_volume_mute
=
gtk_menu_item_new_with_label
(
_
(
"Mute"
));
gtk_widget_ref
(
popup_volume_mute
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_volume_mute"
,
popup_volume_mute
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
popup_volume_mute
);
gtk_container_add
(
GTK_CONTAINER
(
intf_popup
),
popup_volume_mute
);
popup_audio_channels
=
gtk_menu_item_new_with_label
(
_
(
"Channels"
));
gtk_widget_ref
(
popup_audio_channels
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_audio_channels"
,
popup_audio_channels
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
popup_audio_channels
);
gtk_container_add
(
GTK_CONTAINER
(
intf_popup
),
popup_audio_channels
);
popup_audio_device
=
gtk_menu_item_new_with_label
(
_
(
"Device"
));
gtk_widget_ref
(
popup_audio_device
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_audio_device"
,
popup_audio_device
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
popup_audio_device
);
gtk_container_add
(
GTK_CONTAINER
(
intf_popup
),
popup_audio_device
);
separator16
=
gtk_menu_item_new
();
gtk_widget_ref
(
separator16
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"separator16"
,
separator16
,
(
GtkDestroyNotify
)
gtk_widget_unref
);
gtk_widget_show
(
separator16
);
gtk_container_add
(
GTK_CONTAINER
(
intf_popup
),
separator16
);
gtk_widget_set_sensitive
(
separator16
,
FALSE
);
popup_next
=
gtk_menu_item_new_with_label
(
_
(
"Next"
));
gtk_widget_ref
(
popup_next
);
gtk_object_set_data_full
(
GTK_OBJECT
(
intf_popup
),
"popup_next"
,
popup_next
,
...
...
@@ -1285,6 +1466,15 @@ create_intf_popup (void)
gtk_signal_connect
(
GTK_OBJECT
(
popup_fullscreen
),
"activate"
,
GTK_SIGNAL_FUNC
(
GtkFullscreen
),
NULL
);
gtk_signal_connect
(
GTK_OBJECT
(
popup_volume_up
),
"activate"
,
GTK_SIGNAL_FUNC
(
GtkVolumeUp
),
NULL
);
gtk_signal_connect
(
GTK_OBJECT
(
popup_volume_down
),
"activate"
,
GTK_SIGNAL_FUNC
(
GtkVolumeDown
),
NULL
);
gtk_signal_connect
(
GTK_OBJECT
(
popup_volume_mute
),
"activate"
,
GTK_SIGNAL_FUNC
(
GtkVolumeMute
),
NULL
);
gtk_signal_connect
(
GTK_OBJECT
(
popup_next
),
"activate"
,
GTK_SIGNAL_FUNC
(
GtkPlaylistNext
),
NULL
);
...
...
modules/gui/gtk/gtk_support.h
View file @
ba0c772b
/*
* This file was created automatically by glade and fixed by bootstrap
.sh
* This file was created automatically by glade and fixed by bootstrap
*/
#ifdef HAVE_CONFIG_H
...
...
modules/gui/gtk/menu.c
View file @
ba0c772b
...
...
@@ -2,11 +2,12 @@
* menu.c : functions to handle menu items.
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
* $Id: menu.c,v 1.
3 2003/01/17 19:17:09 sam
Exp $
* $Id: menu.c,v 1.
4 2003/01/20 20:07:07 fenrir
Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Stphane Borel <stef@via.ecp.fr>
* Johan Bilien <jobi@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
...
...
@@ -31,6 +32,8 @@
#include <vlc/vlc.h>
#include <vlc/intf.h>
#include <vlc/aout.h>
#include <vlc/vout.h>
#ifdef MODULE_NAME_IS_gnome
# include <gnome.h>
...
...
@@ -63,6 +66,12 @@ static gint GtkRadioMenu( intf_thread_t *, GtkWidget *, GSList *,
char
*
,
int
,
int
,
int
,
void
(
*
pf_toggle
)(
GtkCheckMenuItem
*
,
gpointer
)
);
static
void
GtkMenubarDeinterlaceToggle
(
GtkCheckMenuItem
*
menuitem
,
gpointer
user_data
);
static
void
GtkPopupDeinterlaceToggle
(
GtkCheckMenuItem
*
menuitem
,
gpointer
user_data
);
static
gint
GtkDeinterlaceMenus
(
gpointer
p_data
,
GtkWidget
*
p_root
,
void
(
*
pf_toggle
)(
GtkCheckMenuItem
*
,
gpointer
)
);
gint
GtkSetupMenus
(
intf_thread_t
*
p_intf
);
/****************************************************************************
...
...
@@ -284,6 +293,152 @@ void GtkMenubarChapterToggle( GtkCheckMenuItem * menuitem, gpointer user_data )
}
static
void
GtkPopupObjectToggle
(
GtkCheckMenuItem
*
menuitem
,
gpointer
user_data
,
int
i_object_type
,
char
*
psz_variable
)
{
intf_thread_t
*
p_intf
=
GtkGetIntf
(
menuitem
);
GtkLabel
*
p_label
;
p_label
=
GTK_LABEL
(
(
GTK_BIN
(
menuitem
)
->
child
)
);
if
(
menuitem
->
active
&&
!
p_intf
->
p_sys
->
b_aout_update
&&
!
p_intf
->
p_sys
->
b_vout_update
)
{
vlc_object_t
*
p_obj
;
p_obj
=
(
vlc_object_t
*
)
vlc_object_find
(
p_intf
,
i_object_type
,
FIND_ANYWHERE
);
if
(
p_obj
)
{
vlc_value_t
val
;
gtk_label_get
(
p_label
,
&
val
.
psz_string
);
if
(
var_Set
(
p_obj
,
psz_variable
,
val
)
<
0
)
{
msg_Warn
(
p_obj
,
"cannot set variable (%s)"
,
val
.
psz_string
);
}
vlc_object_release
(
p_obj
);
}
}
}
static
void
GtkPopupAoutChannelsToggle
(
GtkCheckMenuItem
*
menuitem
,
gpointer
user_data
)
{
GtkPopupObjectToggle
(
menuitem
,
user_data
,
VLC_OBJECT_AOUT
,
"audio-channels"
);
}
static
void
GtkPopupAoutDeviceToggle
(
GtkCheckMenuItem
*
menuitem
,
gpointer
user_data
)
{
GtkPopupObjectToggle
(
menuitem
,
user_data
,
VLC_OBJECT_AOUT
,
"audio-device"
);
}
static
void
GtkPopupVoutDeviceToggle
(
GtkCheckMenuItem
*
menuitem
,
gpointer
user_data
)
{
GtkPopupObjectToggle
(
menuitem
,
user_data
,
VLC_OBJECT_VOUT
,
"video-device"
);
}
static
void
GtkDeinterlaceUpdate
(
intf_thread_t
*
p_intf
,
char
*
psz_mode
)
{
char
*
psz_filter
;
int
i
;
psz_filter
=
config_GetPsz
(
p_intf
,
"filter"
);
if
(
!
strcmp
(
psz_mode
,
"None"
)
)
{
config_PutPsz
(
p_intf
,
"filter"
,
""
);
}
else
{
if
(
!
psz_filter
||
!*
psz_filter
)
{
config_PutPsz
(
p_intf
,
"filter"
,
"deinterlace"
);
}
else
{
if
(
strstr
(
psz_filter
,
"deinterlace"
)
==
NULL
)
{
psz_filter
=
realloc
(
psz_filter
,
strlen
(
psz_filter
)
+
20
);
strcat
(
psz_filter
,
",deinterlace"
);
}
config_PutPsz
(
p_intf
,
"filter"
,
psz_filter
);
}
config_PutPsz
(
p_intf
,
"deinterlace-mode"
,
psz_mode
);
}
if
(
psz_filter
)
free
(
psz_filter
);
/* now restart all video stream */
vlc_mutex_lock
(
&
p_intf
->
p_sys
->
p_input
->
stream
.
stream_lock
);
#define ES p_intf->p_sys->p_input->stream.pp_es[i]
/* create a set of language buttons and append them to the container */
for
(
i
=
0
;
i
<
p_intf
->
p_sys
->
p_input
->
stream
.
i_es_number
;
i
++
)
{
if
(
(
ES
->
i_cat
==
VIDEO_ES
)
&&
ES
->
p_decoder_fifo
!=
NULL
)
{
input_UnselectES
(
p_intf
->
p_sys
->
p_input
,
ES
);
input_SelectES
(
p_intf
->
p_sys
->
p_input
,
ES
);
}
#undef ES
}
vlc_mutex_unlock
(
&
p_intf
->
p_sys
->
p_input
->
stream
.
stream_lock
);
}
static
void
GtkMenubarDeinterlaceToggle
(
GtkCheckMenuItem
*
menuitem
,
gpointer
user_data
)
{
intf_thread_t
*
p_intf
=
GtkGetIntf
(
menuitem
);
GtkLabel
*
p_label
;
char
*
psz_mode
;
GtkWidget
*
p_popup_menu
;
p_label
=
GTK_LABEL
(
(
GTK_BIN
(
menuitem
)
->
child
)
);
if
(
!
p_intf
->
p_sys
->
b_deinterlace_update
&&
menuitem
->
active
)
{
gtk_label_get
(
p_label
,
&
psz_mode
);
GtkDeinterlaceUpdate
(
p_intf
,
psz_mode
);
p_intf
->
p_sys
->
b_deinterlace_update
=
VLC_TRUE
;
p_popup_menu
=
GTK_WIDGET
(
gtk_object_get_data
(
GTK_OBJECT
(
p_intf
->
p_sys
->
p_popup
),
"popup_deinterlace"
)
);
GtkDeinterlaceMenus
(
p_intf
,
p_popup_menu
,
GtkPopupDeinterlaceToggle
);
p_intf
->
p_sys
->
b_deinterlace_update
=
VLC_FALSE
;
}
}
static
void
GtkPopupDeinterlaceToggle
(
GtkCheckMenuItem
*
menuitem
,
gpointer
user_data
)
{
intf_thread_t
*
p_intf
=
GtkGetIntf
(
menuitem
);
GtkLabel
*
p_label
;
char
*
psz_mode
;
GtkWidget
*
p_menubar_menu
;
p_label
=
GTK_LABEL
(
(
GTK_BIN
(
menuitem
)
->
child
)
);
if
(
!
p_intf
->
p_sys
->
b_deinterlace_update
&&
menuitem
->
active
)
{
gtk_label_get
(
p_label
,
&
psz_mode
);
GtkDeinterlaceUpdate
(
p_intf
,
psz_mode
);
p_intf
->
p_sys
->
b_deinterlace_update
=
VLC_TRUE
;
p_menubar_menu
=
GTK_WIDGET
(
gtk_object_get_data
(
GTK_OBJECT
(
p_intf
->
p_sys
->
p_window
),
"menubar_deinterlace"
)
);
GtkDeinterlaceMenus
(
p_intf
,
p_menubar_menu
,
GtkMenubarDeinterlaceToggle
);
p_intf
->
p_sys
->
b_deinterlace_update
=
VLC_FALSE
;
}
}
/****************************************************************************
* Functions to generate menus
****************************************************************************/
...
...
@@ -869,6 +1024,211 @@ static gint GtkTitleMenu( gpointer p_data,
return
TRUE
;
}
/*****************************************************************************
* GtkSetupVarMenu :
*****************************************************************************
*
*****************************************************************************/
static
gint
GtkSetupVarMenu
(
intf_thread_t
*
p_intf
,
vlc_object_t
*
p_object
,
GtkWidget
*
p_root
,
char
*
psz_variable
,
void
(
*
pf_toggle
)(
GtkCheckMenuItem
*
,
gpointer
)
)
{
vlc_value_t
val
;
char
*
psz_value
;
GtkWidget
*
p_menu
;
GSList
*
p_group
=
NULL
;
GtkWidget
*
p_item
;
GtkWidget
*
p_item_active
=
NULL
;
int
i_item
;
/* temporary hack to avoid blank menu when an open menu is removed */
if
(
GTK_MENU_ITEM
(
p_root
)
->
submenu
!=
NULL
)
{
gtk_menu_popdown
(
GTK_MENU
(
GTK_MENU_ITEM
(
p_root
)
->
submenu
)
);
}
/* removes previous menu */
gtk_menu_item_remove_submenu
(
GTK_MENU_ITEM
(
p_root
)
);
gtk_widget_set_sensitive
(
p_root
,
FALSE
);
/* get the current value */
if
(
var_Get
(
p_object
,
psz_variable
,
&
val
)
<
0
)
{
return
FALSE
;
}
psz_value
=
val
.
psz_string
;
if
(
var_Change
(
p_object
,
psz_variable
,
VLC_VAR_GETLIST
,
&
val
)
<
0
)
{
free
(
psz_value
);
return
FALSE
;
}
/* menu container */
p_menu
=
gtk_menu_new
();
gtk_object_set_data
(
GTK_OBJECT
(
p_menu
),
"p_intf"
,
p_intf
);
for
(
i_item
=
0
;
i_item
<
val
.
p_list
->
i_count
;
i_item
++
)
{
p_item
=
gtk_radio_menu_item_new_with_label
(
p_group
,
val
.
p_list
->
p_values
[
i_item
].
psz_string
);
p_group
=
gtk_radio_menu_item_group
(
GTK_RADIO_MENU_ITEM
(
p_item
)
);
if
(
!
strcmp
(
psz_value
,
val
.
p_list
->
p_values
[
i_item
].
psz_string
)
)
{
p_item_active
=
p_item
;
}
gtk_widget_show
(
p_item
);
/* signal hanling for off */
gtk_signal_connect
(
GTK_OBJECT
(
p_item
),
"toggled"
,
GTK_SIGNAL_FUNC
(
pf_toggle
),
NULL
);
gtk_menu_append
(
GTK_MENU
(
p_menu
),
p_item
);
}
/* link the new menu to the menubar item */
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
p_root
),
p_menu
);
if
(
p_item_active
)
{
gtk_check_menu_item_set_active
(
GTK_CHECK_MENU_ITEM
(
p_item_active
),
TRUE
);
}
if
(
val
.
p_list
->
i_count
>
0
)
{
gtk_widget_set_sensitive
(
p_root
,
TRUE
);
}
/* clean up everything */
var_Change
(
p_object
,
psz_variable
,
VLC_VAR_FREELIST
,
&
val
);
return
TRUE
;
}
/*****************************************************************************
* GtkDeinterlaceMenus: update interactive menus of the interface
*****************************************************************************
*****************************************************************************/
static
gint
GtkDeinterlaceMenus
(
gpointer
p_data
,
GtkWidget
*
p_root
,
void
(
*
pf_toggle
)(
GtkCheckMenuItem
*
,
gpointer
)
)
{
intf_thread_t
*
p_intf
;
GtkWidget
*
p_menu
;
GtkWidget
*
p_separator
;
GtkWidget
*
p_item
;
GtkWidget
*
p_item_active
;
GSList
*
p_group
;
guint
i_item
;
guint
i
;
char
*
ppsz_deinterlace_mode
[]
=
{
"discard"
,
"blend"
,
"mean"
,
"bob"
,
"linear"
,
NULL
};
char
*
psz_deinterlace_option
;
char
*
psz_filter
;
p_intf
=
(
intf_thread_t
*
)
p_data
;
/* temporary hack to avoid blank menu when an open menu is removed */
if
(
GTK_MENU_ITEM
(
p_root
)
->
submenu
!=
NULL
)
{
gtk_menu_popdown
(
GTK_MENU
(
GTK_MENU_ITEM
(
p_root
)
->
submenu
)
);
}
/* removes previous menu */
gtk_menu_item_remove_submenu
(
GTK_MENU_ITEM
(
p_root
)
);
gtk_widget_set_sensitive
(
p_root
,
FALSE
);
p_group
=
NULL
;
/* menu container */
p_menu
=
gtk_menu_new
();
gtk_object_set_data
(
GTK_OBJECT
(
p_menu
),
"p_intf"
,
p_intf
);
/* special case for "off" item */
p_item
=
gtk_radio_menu_item_new_with_label
(
p_group
,
"None"
);
p_group
=
gtk_radio_menu_item_group
(
GTK_RADIO_MENU_ITEM
(
p_item
)
);
gtk_widget_show
(
p_item
);
/* signal hanling for off */
gtk_signal_connect
(
GTK_OBJECT
(
p_item
),
"toggled"
,
GTK_SIGNAL_FUNC
(
pf_toggle
),
NULL
);
gtk_menu_append
(
GTK_MENU
(
p_menu
),
p_item
);
p_separator
=
gtk_menu_item_new
();
gtk_widget_set_sensitive
(
p_separator
,
FALSE
);
gtk_widget_show
(
p_separator
);
gtk_menu_append
(
GTK_MENU
(
p_menu
),
p_separator
);
/* search actual deinterlace mode */
psz_filter
=
config_GetPsz
(
p_intf
,
"filter"
);
psz_deinterlace_option
=
strdup
(
"None"
);
if
(
psz_filter
&&
*
psz_filter
)
{
if
(
strstr
(
psz_filter
,
"deinterlace"
)
)
{
free
(
psz_deinterlace_option
);
psz_deinterlace_option
=
config_GetPsz
(
p_intf
,
"deinterlace-mode"
);
if
(
!
psz_deinterlace_option
)
psz_deinterlace_option
=
strdup
(
"None"
);
}
}
if
(
psz_filter
)
free
(
psz_filter
);
p_item_active
=
NULL
;
i_item
=
0
;
/* create a set of deinteralce buttons and append them to the container */
for
(
i
=
0
;
ppsz_deinterlace_mode
[
i
]
!=
NULL
;
i
++
)
{
i_item
++
;
p_item
=
gtk_radio_menu_item_new_with_label
(
p_group
,
ppsz_deinterlace_mode
[
i
]
);
p_group
=
gtk_radio_menu_item_group
(
GTK_RADIO_MENU_ITEM
(
p_item
)
);
gtk_widget_show
(
p_item
);
if
(
!
strcmp
(
ppsz_deinterlace_mode
[
i
],
psz_deinterlace_option
)
)
{
p_item_active
=
p_item
;
}
/* setup signal hanling */
gtk_signal_connect
(
GTK_OBJECT
(
p_item
),
"toggled"
,
GTK_SIGNAL_FUNC
(
pf_toggle
),
NULL
);
gtk_menu_append
(
GTK_MENU
(
p_menu
),
p_item
);
}
/* link the new menu to the menubar item */
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
p_root
),
p_menu
);
/* acitvation will call signals so we can only do it
* when submenu is attached to menu - to get intf_window
* We have to release the lock since input_ToggleES needs it */
if
(
p_item_active
!=
NULL
)
{
gtk_check_menu_item_set_active
(
GTK_CHECK_MENU_ITEM
(
p_item_active
),
TRUE
);
}
/* be sure that menu is sensitive if non empty */
if
(
i_item
>
0
)
{
gtk_widget_set_sensitive
(
p_root
,
TRUE
);
}
return
TRUE
;
}
/*****************************************************************************
* GtkSetupMenus: function that generates title/chapter/audio/subpic
* menus with help from preceding functions
...
...
@@ -889,6 +1249,21 @@ gint GtkSetupMenus( intf_thread_t * p_intf )
p_intf
->
p_sys
->
b_spu_update
|=
p_intf
->
p_sys
->
b_title_update
|
p_intf
->
p_sys
->
b_program_update
;
if
(
1
)
{
p_menubar_menu
=
GTK_WIDGET
(
gtk_object_get_data
(
GTK_OBJECT
(
p_intf
->
p_sys
->
p_window
),
"menubar_deinterlace"
)
);
p_popup_menu
=
GTK_WIDGET
(
gtk_object_get_data
(
GTK_OBJECT
(
p_intf
->
p_sys
->
p_popup
),
"popup_deinterlace"
)
);
p_intf
->
p_sys
->
b_deinterlace_update
=
VLC_TRUE
;
GtkDeinterlaceMenus
(
p_intf
,
p_menubar_menu
,
GtkMenubarDeinterlaceToggle
);
p_intf
->
p_sys
->
b_deinterlace_update
=
VLC_TRUE
;
GtkDeinterlaceMenus
(
p_intf
,
p_popup_menu
,
GtkPopupDeinterlaceToggle
);
p_intf
->
p_sys
->
b_deinterlace_update
=
VLC_FALSE
;
}
if
(
p_intf
->
p_sys
->
b_program_update
)
{
pgrm_descriptor_t
*
p_pgrm
;
...
...
@@ -1027,7 +1402,73 @@ gint GtkSetupMenus( intf_thread_t * p_intf )
p_intf
->
p_sys
->
b_spu_update
=
VLC_FALSE
;
}
/* create audio channels and device menu (in menubar _and_ popup */
if
(
p_intf
->
p_sys
->
b_aout_update
)
{
aout_instance_t
*
p_aout
;
p_aout
=
(
aout_instance_t
*
)
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
{
vlc_value_t
val
;
val
.
b_bool
=
VLC_FALSE
;
var_Set
(
(
vlc_object_t
*
)
p_aout
,
"intf-change"
,
val
);
/* audio-channels */
p_menubar_menu
=
GTK_WIDGET
(
gtk_object_get_data
(
GTK_OBJECT
(
p_intf
->
p_sys
->
p_window
),
"menubar_audio_channels"
)
);
p_popup_menu
=
GTK_WIDGET
(
gtk_object_get_data
(
GTK_OBJECT
(
p_intf
->
p_sys
->
p_popup
),
"popup_audio_channels"
)
);
GtkSetupVarMenu
(
p_intf
,
(
vlc_object_t
*
)
p_aout
,
p_popup_menu
,
"audio-channels"
,
GtkPopupAoutChannelsToggle
);
GtkSetupVarMenu
(
p_intf
,
(
vlc_object_t
*
)
p_aout
,
p_menubar_menu
,
"audio-channels"
,
GtkPopupAoutChannelsToggle
);
/* audio-device */
p_menubar_menu
=
GTK_WIDGET
(
gtk_object_get_data
(
GTK_OBJECT
(
p_intf
->
p_sys
->
p_window
),
"menubar_audio_device"
)
);
p_popup_menu
=
GTK_WIDGET
(
gtk_object_get_data
(
GTK_OBJECT
(
p_intf
->
p_sys
->
p_popup
),
"popup_audio_device"
)
);
GtkSetupVarMenu
(
p_intf
,
(
vlc_object_t
*
)
p_aout
,
p_popup_menu
,
"audio-device"
,
GtkPopupAoutDeviceToggle
);
GtkSetupVarMenu
(
p_intf
,
(
vlc_object_t
*
)
p_aout
,
p_menubar_menu
,
"audio-device"
,
GtkPopupAoutDeviceToggle
);
vlc_object_release
(
(
vlc_object_t
*
)
p_aout
);
}
p_intf
->
p_sys
->
b_aout_update
=
VLC_FALSE
;
}
if
(
p_intf
->
p_sys
->
b_vout_update
)
{
vout_thread_t
*
p_vout
;
p_vout
=
(
vout_thread_t
*
)
vlc_object_find
(
p_intf
,
VLC_OBJECT_VOUT
,
FIND_ANYWHERE
);
if
(
p_vout
!=
NULL
)
{
vlc_value_t
val
;
val
.
b_bool
=
VLC_FALSE
;
var_Set
(
(
vlc_object_t
*
)
p_vout
,
"intf-change"
,
val
);
/* video-device */
p_menubar_menu
=
GTK_WIDGET
(
gtk_object_get_data
(
GTK_OBJECT
(
p_intf
->
p_sys
->
p_window
),
"menubar_video_device"
)
);
p_popup_menu
=
GTK_WIDGET
(
gtk_object_get_data
(
GTK_OBJECT
(
p_intf
->
p_sys
->
p_popup
),
"popup_video_device"
)
);
GtkSetupVarMenu
(
p_intf
,
(
vlc_object_t
*
)
p_vout
,
p_popup_menu
,
"video-device"
,
GtkPopupVoutDeviceToggle
);
GtkSetupVarMenu
(
p_intf
,
(
vlc_object_t
*
)
p_vout
,
p_menubar_menu
,
"video-device"
,
GtkPopupVoutDeviceToggle
);
vlc_object_release
(
(
vlc_object_t
*
)
p_vout
);
}
p_intf
->
p_sys
->
b_vout_update
=
VLC_FALSE
;
}
vlc_mutex_lock
(
&
p_intf
->
p_sys
->
p_input
->
stream
.
stream_lock
);
return
TRUE
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment