Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
jami-daemon
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
savoirfairelinux
jami-daemon
Commits
f16e154c
Commit
f16e154c
authored
17 years ago
by
Guillaume Carmel-Archambault
Browse files
Options
Downloads
Patches
Plain Diff
GTK audio settings configuration
parent
916bc091
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
sflphone-gtk/src/configwindow.c
+500
-161
500 additions, 161 deletions
sflphone-gtk/src/configwindow.c
with
500 additions
and
161 deletions
sflphone-gtk/src/configwindow.c
+
500
−
161
View file @
f16e154c
...
...
@@ -2,6 +2,7 @@
* Copyright (C) 2007 Savoir-Faire Linux inc.
* Author: Pierre-Luc Beaudoin <pierre-luc@squidy.info>
* Author: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>
* Author: Guillaume Carmel-Archambault <guillaume.carmel-archambault@savoirfairelinux.com>
*
* 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
...
...
@@ -27,21 +28,31 @@
#include
<gtk/gtk.h>
/** Local variables */
/**
* Local variables
*/
gboolean
dialogOpen
=
FALSE
;
GtkListStore
*
account_store
;
GtkListStore
*
codec_store
;
GtkListStore
*
rate_store
;
GtkListStore
*
accountStore
;
GtkListStore
*
codecStore
;
GtkListStore
*
audioManagerStore
;
GtkListStore
*
outputAudioDeviceManagerStore
;
GtkListStore
*
inputAudioDeviceManagerStore
;
GtkWidget
*
addButton
;
GtkWidget
*
editButton
;
GtkWidget
*
deleteButton
;
GtkWidget
*
defaultButton
;
GtkWidget
*
restoreButton
;
GtkWidget
*
combo_box
;
account_t
*
selectedAccount
;
/** Fills the treelist with accounts */
//GtkListStore * rate_store;
//GtkWidget * combo_box;
/**
* Fills the treelist with accounts
*/
void
config_window_fill_account_list
()
{
...
...
@@ -49,22 +60,20 @@ config_window_fill_account_list ()
{
GtkTreeIter
iter
;
gtk_list_store_clear
(
account
_s
tore
);
gtk_list_store_clear
(
account
S
tore
);
int
i
;
for
(
i
=
0
;
i
<
account_list_get_size
();
i
++
)
{
account_t
*
a
=
account_list_get_nth
(
i
);
if
(
a
)
{
gtk_list_store_append
(
account_store
,
&
iter
);
gtk_list_store_set
(
account_store
,
&
iter
,
gtk_list_store_append
(
accountStore
,
&
iter
);
gtk_list_store_set
(
accountStore
,
&
iter
,
0
,
g_hash_table_lookup
(
a
->
properties
,
ACCOUNT_ALIAS
),
// Name
1
,
g_hash_table_lookup
(
a
->
properties
,
ACCOUNT_TYPE
),
// Protocol
2
,
account_state_name
(
a
->
state
),
// Status
3
,
a
,
// Pointer
-
1
);
}
}
...
...
@@ -74,6 +83,9 @@ config_window_fill_account_list ()
}
}
/**
* Fills the tree list with supported codecs
*/
void
config_window_fill_codec_list
()
{
...
...
@@ -81,25 +93,31 @@ config_window_fill_codec_list()
{
GtkTreeIter
iter
;
int
i
;
gtk_list_store_clear
(
codec_store
);
gchar
*
description
=
"Select a codec:"
;
//gtk_list_store_append(codec_store, &iter);
//gtk_list_store_set(codec_store, &iter, 0, description, -1);
gtk_list_store_clear
(
codecStore
);
for
(
i
=
0
;
i
<
codec_list_get_size
();
i
++
)
{
codec_t
*
c
=
codec_list_get_nth
(
i
);
printf
(
"%s
\n
"
,
c
->
name
);
if
(
c
)
{
gtk_list_store_append
(
codec_store
,
&
iter
);
gtk_list_store_set
(
codec_store
,
&
iter
,
0
,
c
->
name
,
-
1
);
gtk_list_store_append
(
codecStore
,
&
iter
);
gtk_list_store_set
(
codecStore
,
&
iter
,
0
,
c
->
is_active
,
// Active
1
,
c
->
name
,
// Name
2
,
c
->
sample_rate
,
// Sample rate
3
,
"bandwith"
,
// Bandwith
4
,
"frequency"
,
// Frequency
-
1
);
}
}
}
gtk_combo_box_set_active
(
combo_box
,
0
);
}
void
/**
* SEE deprecated
*/
/*void
config_window_fill_rate_list()
{
if(dialogOpen)
...
...
@@ -115,6 +133,24 @@ config_window_fill_rate_list()
i++;
}
}
}*/
/**
* TODO
*/
void
config_window_fill_output_audio_device_list
()
{
}
/**
* TODO
*/
void
config_window_fill_input_audio_device_list
()
{
}
/**
...
...
@@ -164,14 +200,16 @@ default_account(GtkWidget *widget, gpointer data)
}
}
/* Call back when the user click on an account in the list */
/**
* Call back when the user click on an account in the list
*/
static
void
select_account
(
GtkTreeSelection
*
sel
,
GtkTreeModel
*
model
)
select_account
(
GtkTreeSelection
*
sel
ection
,
GtkTreeModel
*
model
)
{
GtkTreeIter
iter
;
GValue
val
;
if
(
!
gtk_tree_selection_get_selected
(
sel
,
&
model
,
&
iter
))
if
(
!
gtk_tree_selection_get_selected
(
sel
ection
,
&
model
,
&
iter
))
{
selectedAccount
=
NULL
;
return
;
...
...
@@ -190,19 +228,68 @@ select_account(GtkTreeSelection *sel, GtkTreeModel *model)
gtk_widget_set_sensitive
(
GTK_WIDGET
(
defaultButton
),
TRUE
);
}
g_print
(
"select"
);
}
static
void
codec_active_toggled
(
GtkCellRendererToggle
*
renderer
,
gchar
*
path
,
GtkListStore
*
store
)
{
GtkTreeIter
iter
;
GValue
val
;
}
/**
* TODO Change for tree model and tree selection as in precedent function
*/
static
void
select_codec
(
GtkComboBox
*
wid
)
select_codec
(
GtkTreeSelection
*
selection
,
GtkTreeModel
*
model
)
{
GtkTreeIter
iter
;
if
(
!
gtk_tree_selection_get_selected
(
selection
,
&
model
,
&
iter
))
{
guint
item
=
gtk_combo_box_get_active
(
wid
);
return
;
}
//guint item = gtk_combo_box_get_active(wid);
/* now we want this selected codec to be used as the preferred codec */
/* ie first in the list in the user config */
//codec_set_prefered_order(item);
//dbus_set_prefered_codec(codec_list_get_nth(0)->name);
}
/**
* Move codec in list depending on direction and selected codec
*/
static
void
moveCodec
(
gboolean
moveUp
,
GtkListStore
*
codecListStore
)
{
// TODO
printf
(
"Button pressed"
);
}
/**
* Called from move up codec button signal
*/
static
void
moveCodecUp
(
GtkListStore
*
codecListStore
)
{
moveCodec
(
TRUE
,
codecListStore
);
printf
(
"Button pressed"
);
}
/**
* Called from move up codec button signal
*/
static
void
moveCodecDown
(
GtkListStore
*
codecListStore
)
{
moveCodec
(
FALSE
,
codecListStore
);
printf
(
"Button pressed"
);
}
/**
* Select default account that is rendered in bold
*/
void
bold_if_default_account
(
GtkTreeViewColumn
*
col
,
GtkCellRenderer
*
rend
,
...
...
@@ -219,9 +306,11 @@ bold_if_default_account(GtkTreeViewColumn *col,
g_object_set
(
G_OBJECT
(
rend
),
"weight"
,
800
,
NULL
);
else
g_object_set
(
G_OBJECT
(
rend
),
"weight"
,
400
,
NULL
);
}
/**
* TODO
*/
void
default_codecs
(
GtkWidget
*
widget
,
gpointer
data
)
{
...
...
@@ -229,42 +318,144 @@ default_codecs(GtkWidget* widget, gpointer data)
int
j
=
0
;
gint
*
new_order
;
gchar
**
default_list
=
(
gchar
**
)
dbus_default_codec_list
();
while
(
default_list
[
i
]
!=
NULL
)
{
printf
(
"%s
\n
"
,
default_list
[
i
]);
i
++
;}
{
printf
(
"%s
\n
"
,
default_list
[
i
]);
i
++
;
}
i
=
0
;
while
(
default_list
[
i
]
!=
NULL
)
{
if
(
g_strcasecmp
(
codec_list_get_nth
(
0
)
->
name
,
default_list
[
i
])
==
0
){
if
(
g_strcasecmp
(
codec_list_get_nth
(
0
)
->
name
,
default_list
[
i
])
==
0
)
{
printf
(
"%s %s
\n
"
,
codec_list_get_nth
(
0
)
->
name
,
default_list
[
i
]);
new_order
[
i
]
=
0
;
}
else
if
(
g_strcasecmp
(
codec_list_get_nth
(
1
)
->
name
,
default_list
[
i
])
==
0
){
else
if
(
g_strcasecmp
(
codec_list_get_nth
(
1
)
->
name
,
default_list
[
i
])
==
0
)
{
printf
(
"%s %s
\n
"
,
codec_list_get_nth
(
0
)
->
name
,
default_list
[
0
]);
new_order
[
i
]
=
1
;}
else
{
new_order
[
i
]
=
1
;
}
else
{
printf
(
"%s %s
\n
"
,
codec_list_get_nth
(
0
)
->
name
,
default_list
[
0
]);
new_order
[
i
]
=
2
;}
new_order
[
i
]
=
2
;
}
printf
(
"new_order[%i]=%i
\n
"
,
i
,
j
);
i
++
;
}
gtk_list_store_reorder
(
codec
_s
tore
,
new_order
);
gtk_list_store_reorder
(
codec
S
tore
,
new_order
);
}
/**
* Create table widget for codecs
*/
GtkWidget
*
create_codec_table
()
{
GtkWidget
*
ret
;
GtkWidget
*
scrolledWindow
;
GtkWidget
*
buttonBox
;
GtkWidget
*
moveUpButton
;
GtkWidget
*
moveDownButton
;
GtkWidget
*
treeView
;
GtkCellRenderer
*
renderer
;
GtkTreeSelection
*
treeSelection
;
GtkTreeViewColumn
*
treeViewColumn
;
GtkTreeIter
iter
;
ret
=
gtk_hbox_new
(
FALSE
,
10
);
gtk_container_set_border_width
(
GTK_CONTAINER
(
ret
),
10
);
scrolledWindow
=
gtk_scrolled_window_new
(
NULL
,
NULL
);
gtk_scrolled_window_set_policy
(
GTK_SCROLLED_WINDOW
(
scrolledWindow
),
GTK_POLICY_AUTOMATIC
,
GTK_POLICY_AUTOMATIC
);
gtk_scrolled_window_set_shadow_type
(
GTK_SCROLLED_WINDOW
(
scrolledWindow
),
GTK_SHADOW_IN
);
gtk_box_pack_start
(
GTK_BOX
(
ret
),
scrolledWindow
,
TRUE
,
TRUE
,
0
);
codecStore
=
gtk_list_store_new
(
5
,
G_TYPE_BOOLEAN
,
// Active
G_TYPE_STRING
,
// Name
G_TYPE_INT
,
// Bit rate
G_TYPE_STRING
,
// Bandwith
G_TYPE_STRING
// Frequency
);
treeView
=
gtk_tree_view_new_with_model
(
GTK_TREE_MODEL
(
codecStore
));
treeSelection
=
gtk_tree_view_get_selection
(
GTK_TREE_VIEW
(
treeView
));
g_signal_connect
(
G_OBJECT
(
treeSelection
),
"changed"
,
G_CALLBACK
(
select_codec
),
codecStore
);
// TODO ONLY for disabling or enabling move buttons
// Active column
renderer
=
gtk_cell_renderer_toggle_new
();
treeViewColumn
=
gtk_tree_view_column_new_with_attributes
(
""
,
renderer
,
"active"
,
0
,
NULL
);
gtk_tree_view_append_column
(
GTK_TREE_VIEW
(
treeView
),
treeViewColumn
);
g_signal_connect
(
G_OBJECT
(
renderer
),
"toggled"
,
G_CALLBACK
(
codec_active_toggled
),
codecStore
);
// TODO toggle on clicked
// Name column
renderer
=
gtk_cell_renderer_text_new
();
treeViewColumn
=
gtk_tree_view_column_new_with_attributes
(
"Name"
,
renderer
,
"markup"
,
1
,
NULL
);
gtk_tree_view_append_column
(
GTK_TREE_VIEW
(
treeView
),
treeViewColumn
);
// Bit rate column
renderer
=
gtk_cell_renderer_text_new
();
treeViewColumn
=
gtk_tree_view_column_new_with_attributes
(
"Bit rate"
,
renderer
,
"text"
,
2
,
NULL
);
gtk_tree_view_append_column
(
GTK_TREE_VIEW
(
treeView
),
treeViewColumn
);
// Bandwith column
renderer
=
gtk_cell_renderer_text_new
();
treeViewColumn
=
gtk_tree_view_column_new_with_attributes
(
"Bandwith"
,
renderer
,
"text"
,
3
,
NULL
);
gtk_tree_view_append_column
(
GTK_TREE_VIEW
(
treeView
),
treeViewColumn
);
// Frequency column
renderer
=
gtk_cell_renderer_text_new
();
treeViewColumn
=
gtk_tree_view_column_new_with_attributes
(
"Frequency"
,
renderer
,
"text"
,
4
,
NULL
);
gtk_tree_view_append_column
(
GTK_TREE_VIEW
(
treeView
),
treeViewColumn
);
g_object_unref
(
G_OBJECT
(
codecStore
));
gtk_container_add
(
GTK_CONTAINER
(
scrolledWindow
),
treeView
);
// Create button box
buttonBox
=
gtk_vbox_new
(
FALSE
,
0
);
gtk_container_set_border_width
(
GTK_CONTAINER
(
buttonBox
),
10
);
gtk_box_pack_start
(
GTK_BOX
(
ret
),
buttonBox
,
FALSE
,
FALSE
,
0
);
moveUpButton
=
gtk_button_new_with_label
(
"Move up"
);
gtk_box_pack_start
(
GTK_BOX
(
buttonBox
),
moveUpButton
,
FALSE
,
FALSE
,
0
);
g_signal_connect
(
G_OBJECT
(
moveUpButton
),
"clicked"
,
G_CALLBACK
(
moveCodecUp
),
codecStore
);
moveDownButton
=
gtk_button_new_with_label
(
"Move down"
);
gtk_box_pack_start
(
GTK_BOX
(
buttonBox
),
moveDownButton
,
FALSE
,
FALSE
,
0
);
g_signal_connect
(
G_OBJECT
(
moveDownButton
),
"clicked"
,
G_CALLBACK
(
moveCodecDown
),
codecStore
);
config_window_fill_codec_list
();
return
ret
;
}
/**
* Account settings tab
*/
GtkWidget
*
create_accounts_tab
()
{
GtkWidget
*
ret
;
GtkWidget
*
sw
;
GtkWidget
*
v
iew
;
GtkWidget
*
b
b
ox
;
GtkCellRenderer
*
rend
;
GtkTreeViewColumn
*
col
;
GtkTreeSelection
*
sel
;
GtkWidget
*
s
crolledWindo
w
;
GtkWidget
*
treeV
iew
;
GtkWidget
*
b
uttonB
ox
;
GtkCellRenderer
*
rend
erer
;
GtkTreeViewColumn
*
treeViewColumn
;
GtkTreeSelection
*
treeSelection
;
GtkWidget
*
label
;
GtkTreeIter
iter
;
GValue
val
;
val
.
g_type
=
G_TYPE_POINTER
;
selectedAccount
=
NULL
;
...
...
@@ -274,90 +465,90 @@ create_accounts_tab()
label
=
gtk_label_new
(
"This is the list of accounts previously setup."
);
gtk_label_set_line_wrap
(
GTK_LABEL
(
label
),
TRUE
);
gtk_misc_set_alignment
(
GTK_MISC
(
label
),
0
,
0
.
5
);
gtk_label_set_line_wrap
(
GTK_LABEL
(
label
),
TRUE
);
gtk_label_set_justify
(
GTK_LABEL
(
label
),
GTK_JUSTIFY_LEFT
);
gtk_box_pack_start
(
GTK_BOX
(
ret
),
label
,
FALSE
,
TRU
E
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
ret
),
label
,
FALSE
,
FALS
E
,
0
);
gtk_widget_show
(
label
);
sw
=
gtk_scrolled_window_new
(
NULL
,
NULL
);
gtk_scrolled_window_set_policy
(
GTK_SCROLLED_WINDOW
(
sw
),
GTK_POLICY_AUTOMATIC
,
GTK_POLICY_AUTOMATIC
);
gtk_scrolled_window_set_shadow_type
(
GTK_SCROLLED_WINDOW
(
sw
),
GTK_SHADOW_IN
);
scrolledWindow
=
gtk_scrolled_window_new
(
NULL
,
NULL
);
gtk_scrolled_window_set_policy
(
GTK_SCROLLED_WINDOW
(
scrolledWindow
),
GTK_POLICY_AUTOMATIC
,
GTK_POLICY_AUTOMATIC
);
gtk_scrolled_window_set_shadow_type
(
GTK_SCROLLED_WINDOW
(
scrolledWindow
),
GTK_SHADOW_IN
);
gtk_box_pack_start
(
GTK_BOX
(
ret
),
scrolledWindow
,
TRUE
,
TRUE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
ret
),
sw
,
TRUE
,
TRUE
,
0
);
account_store
=
gtk_list_store_new
(
4
,
accountStore
=
gtk_list_store_new
(
4
,
G_TYPE_STRING
,
// Name
G_TYPE_STRING
,
// Protocol
G_TYPE_STRING
,
// Status
G_TYPE_POINTER
// Pointer to the Object
);
v
iew
=
gtk_tree_view_new_with_model
(
GTK_TREE_MODEL
(
account
_s
tore
));
treeV
iew
=
gtk_tree_view_new_with_model
(
GTK_TREE_MODEL
(
account
S
tore
));
sel
=
gtk_tree_view_get_selection
(
GTK_TREE_VIEW
(
v
iew
));
g_signal_connect
(
G_OBJECT
(
sel
),
"changed"
,
treeSelection
=
gtk_tree_view_get_selection
(
GTK_TREE_VIEW
(
treeV
iew
));
g_signal_connect
(
G_OBJECT
(
treeSelection
),
"changed"
,
G_CALLBACK
(
select_account
),
account
_s
tore
);
account
S
tore
);
gtk_tree_sortable_set_sort_column_id
(
GTK_TREE_SORTABLE
(
account
_s
tore
),
gtk_tree_sortable_set_sort_column_id
(
GTK_TREE_SORTABLE
(
account
S
tore
),
2
,
GTK_SORT_ASCENDING
);
rend
=
gtk_cell_renderer_text_new
();
col
=
gtk_tree_view_column_new_with_attributes
(
"Alias"
,
rend
,
rend
erer
=
gtk_cell_renderer_text_new
();
treeViewColumn
=
gtk_tree_view_column_new_with_attributes
(
"Alias"
,
rend
erer
,
"markup"
,
0
,
NULL
);
gtk_tree_view_append_column
(
GTK_TREE_VIEW
(
v
iew
),
col
);
gtk_tree_view_column_set_cell_data_func
(
col
,
rend
,
bold_if_default_account
,
NULL
,
NULL
);
gtk_tree_view_append_column
(
GTK_TREE_VIEW
(
treeV
iew
),
treeViewColumn
);
gtk_tree_view_column_set_cell_data_func
(
treeViewColumn
,
rend
erer
,
bold_if_default_account
,
NULL
,
NULL
);
rend
=
gtk_cell_renderer_text_new
();
col
=
gtk_tree_view_column_new_with_attributes
(
"Protocol"
,
rend
,
rend
erer
=
gtk_cell_renderer_text_new
();
treeViewColumn
=
gtk_tree_view_column_new_with_attributes
(
"Protocol"
,
rend
erer
,
"markup"
,
1
,
NULL
);
gtk_tree_view_append_column
(
GTK_TREE_VIEW
(
v
iew
),
col
);
gtk_tree_view_column_set_cell_data_func
(
col
,
rend
,
bold_if_default_account
,
NULL
,
NULL
);
gtk_tree_view_append_column
(
GTK_TREE_VIEW
(
treeV
iew
),
treeViewColumn
);
gtk_tree_view_column_set_cell_data_func
(
treeViewColumn
,
rend
erer
,
bold_if_default_account
,
NULL
,
NULL
);
rend
=
gtk_cell_renderer_text_new
();
col
=
gtk_tree_view_column_new_with_attributes
(
"Status"
,
rend
,
rend
erer
=
gtk_cell_renderer_text_new
();
treeViewColumn
=
gtk_tree_view_column_new_with_attributes
(
"Status"
,
rend
erer
,
"markup"
,
2
,
NULL
);
gtk_tree_view_append_column
(
GTK_TREE_VIEW
(
v
iew
),
col
);
gtk_tree_view_column_set_cell_data_func
(
col
,
rend
,
bold_if_default_account
,
NULL
,
NULL
);
g_object_unref
(
G_OBJECT
(
account
_s
tore
));
gtk_container_add
(
GTK_CONTAINER
(
s
w
),
v
iew
);
gtk_tree_view_append_column
(
GTK_TREE_VIEW
(
treeV
iew
),
treeViewColumn
);
gtk_tree_view_column_set_cell_data_func
(
treeViewColumn
,
rend
erer
,
bold_if_default_account
,
NULL
,
NULL
);
g_object_unref
(
G_OBJECT
(
account
S
tore
));
gtk_container_add
(
GTK_CONTAINER
(
s
crolledWindow
),
treeV
iew
);
/* The buttons to press! */
b
b
ox
=
gtk_hbutton_box_new
();
gtk_box_set_spacing
(
GTK_BOX
(
b
b
ox
),
10
);
//GAIM_HIG_BOX_SPACE
gtk_button_box_set_layout
(
GTK_BUTTON_BOX
(
b
b
ox
),
GTK_BUTTONBOX_START
);
gtk_box_pack_start
(
GTK_BOX
(
ret
),
b
b
ox
,
FALSE
,
FALSE
,
0
);
gtk_widget_show
(
b
b
ox
);
b
uttonB
ox
=
gtk_hbutton_box_new
();
gtk_box_set_spacing
(
GTK_BOX
(
b
uttonB
ox
),
10
);
//GAIM_HIG_BOX_SPACE
gtk_button_box_set_layout
(
GTK_BUTTON_BOX
(
b
uttonB
ox
),
GTK_BUTTONBOX_START
);
gtk_box_pack_start
(
GTK_BOX
(
ret
),
b
uttonB
ox
,
FALSE
,
FALSE
,
0
);
gtk_widget_show
(
b
uttonB
ox
);
addButton
=
gtk_button_new_from_stock
(
GTK_STOCK_ADD
);
g_signal_connect_swapped
(
G_OBJECT
(
addButton
),
"clicked"
,
G_CALLBACK
(
add_account
),
NULL
);
gtk_box_pack_start
(
GTK_BOX
(
b
b
ox
),
addButton
,
FALSE
,
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
b
uttonB
ox
),
addButton
,
FALSE
,
FALSE
,
0
);
gtk_widget_show
(
addButton
);
editButton
=
gtk_button_new_from_stock
(
GTK_STOCK_EDIT
);
g_signal_connect_swapped
(
G_OBJECT
(
editButton
),
"clicked"
,
G_CALLBACK
(
edit_account
),
NULL
);
gtk_box_pack_start
(
GTK_BOX
(
b
b
ox
),
editButton
,
FALSE
,
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
b
uttonB
ox
),
editButton
,
FALSE
,
FALSE
,
0
);
gtk_widget_show
(
editButton
);
deleteButton
=
gtk_button_new_from_stock
(
GTK_STOCK_REMOVE
);
g_signal_connect_swapped
(
G_OBJECT
(
deleteButton
),
"clicked"
,
G_CALLBACK
(
delete_account
),
NULL
);
gtk_box_pack_start
(
GTK_BOX
(
b
b
ox
),
deleteButton
,
FALSE
,
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
b
uttonB
ox
),
deleteButton
,
FALSE
,
FALSE
,
0
);
gtk_widget_show
(
deleteButton
);
defaultButton
=
gtk_button_new_with_mnemonic
(
"Set as Default"
);
g_signal_connect_swapped
(
G_OBJECT
(
defaultButton
),
"clicked"
,
G_CALLBACK
(
default_account
),
NULL
);
gtk_box_pack_start
(
GTK_BOX
(
b
b
ox
),
defaultButton
,
FALSE
,
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
b
uttonB
ox
),
defaultButton
,
FALSE
,
FALSE
,
0
);
gtk_widget_show
(
defaultButton
);
gtk_widget_show_all
(
ret
);
...
...
@@ -367,23 +558,166 @@ create_accounts_tab()
return
ret
;
}
/**
* Audio settings tab
*/
GtkWidget
*
create_audio_tab
()
{
GtkWidget
*
ret
;
GtkWidget
*
deviceLabel
;
GtkWidget
*
deviceBox
;
GtkWidget
*
deviceTable
;
GtkWidget
*
codecLabel
;
GtkWidget
*
codecBox
;
GtkWidget
*
attributeBox
;
GtkWidget
*
titleLabel
;
GtkWidget
*
comboBox
;
GtkWidget
*
refreshButton
;
GtkCellRenderer
*
renderer
;
GtkTreeIter
iter
;
// Main widget
ret
=
gtk_vbox_new
(
FALSE
,
10
);
gtk_container_set_border_width
(
GTK_CONTAINER
(
ret
),
10
);
// Device section label
deviceLabel
=
gtk_label_new
(
"Devices"
);
gtk_label_set_line_wrap
(
GTK_LABEL
(
deviceLabel
),
TRUE
);
gtk_misc_set_alignment
(
GTK_MISC
(
deviceLabel
),
0
,
0
.
5
);
gtk_label_set_justify
(
GTK_LABEL
(
deviceLabel
),
GTK_JUSTIFY_LEFT
);
gtk_box_pack_start
(
GTK_BOX
(
ret
),
deviceLabel
,
FALSE
,
FALSE
,
0
);
gtk_widget_show
(
deviceLabel
);
// Main device widget
deviceBox
=
gtk_hbox_new
(
FALSE
,
10
);
gtk_box_pack_start
(
GTK_BOX
(
ret
),
deviceBox
,
FALSE
,
FALSE
,
0
);
gtk_widget_show
(
codecBox
);
// TODO Create margin instead of column
// Main device widget
deviceTable
=
gtk_table_new
(
4
,
3
,
FALSE
);
gtk_table_set_col_spacing
(
GTK_TABLE
(
deviceTable
),
0
,
40
);
gtk_box_set_spacing
(
GTK_BOX
(
deviceTable
),
0
);
// SEE GAIM_HIG_BOX_SPACE
gtk_box_pack_start
(
GTK_BOX
(
deviceBox
),
deviceTable
,
TRUE
,
TRUE
,
0
);
gtk_widget_show
(
deviceTable
);
// Device : Audio manager
// Create title label
titleLabel
=
gtk_label_new
(
"Audio manager:"
);
gtk_misc_set_alignment
(
GTK_MISC
(
titleLabel
),
0
,
0
.
5
);
gtk_table_attach
(
GTK_TABLE
(
deviceTable
),
titleLabel
,
1
,
2
,
0
,
1
,
GTK_FILL
|
GTK_EXPAND
,
GTK_SHRINK
,
0
,
0
);
gtk_widget_show
(
titleLabel
);
// Set choices of audio managers
audioManagerStore
=
gtk_list_store_new
(
1
,
G_TYPE_STRING
);
gtk_list_store_append
(
audioManagerStore
,
&
iter
);
gtk_list_store_set
(
audioManagerStore
,
&
iter
,
0
,
"ALSA"
,
-
1
);
comboBox
=
gtk_combo_box_new_with_model
(
GTK_TREE_MODEL
(
audioManagerStore
));
gtk_combo_box_set_active
(
GTK_COMBO_BOX
(
comboBox
),
0
);
gtk_label_set_mnemonic_widget
(
GTK_LABEL
(
titleLabel
),
comboBox
);
// Set rendering
renderer
=
gtk_cell_renderer_text_new
();
gtk_cell_layout_pack_start
(
GTK_CELL_LAYOUT
(
comboBox
),
renderer
,
TRUE
);
gtk_cell_layout_set_attributes
(
GTK_CELL_LAYOUT
(
comboBox
),
renderer
,
"text"
,
0
,
NULL
);
gtk_table_attach
(
GTK_TABLE
(
deviceTable
),
comboBox
,
2
,
3
,
0
,
1
,
GTK_FILL
|
GTK_EXPAND
,
GTK_SHRINK
,
0
,
0
);
gtk_widget_show
(
comboBox
);
// Create refresh button
refreshButton
=
gtk_button_new_from_stock
(
GTK_STOCK_REFRESH
);
gtk_table_attach
(
GTK_TABLE
(
deviceTable
),
refreshButton
,
3
,
4
,
0
,
1
,
GTK_EXPAND
,
GTK_SHRINK
,
0
,
0
);
gtk_widget_show
(
refreshButton
);
// Device : Output device
// Create title label
titleLabel
=
gtk_label_new
(
"Output peripheral:"
);
gtk_misc_set_alignment
(
GTK_MISC
(
titleLabel
),
0
,
0
.
5
);
gtk_table_attach
(
GTK_TABLE
(
deviceTable
),
titleLabel
,
1
,
2
,
1
,
2
,
GTK_FILL
|
GTK_EXPAND
,
GTK_SHRINK
,
0
,
0
);
gtk_widget_show
(
titleLabel
);
// Set choices of output devices
outputAudioDeviceManagerStore
=
gtk_list_store_new
(
1
,
G_TYPE_STRING
);
gtk_list_store_append
(
outputAudioDeviceManagerStore
,
&
iter
);
gtk_list_store_set
(
outputAudioDeviceManagerStore
,
&
iter
,
0
,
"Default"
,
-
1
);
comboBox
=
gtk_combo_box_new_with_model
(
GTK_TREE_MODEL
(
outputAudioDeviceManagerStore
));
gtk_combo_box_set_active
(
GTK_COMBO_BOX
(
comboBox
),
0
);
gtk_label_set_mnemonic_widget
(
GTK_LABEL
(
titleLabel
),
comboBox
);
// Set rendering
renderer
=
gtk_cell_renderer_text_new
();
gtk_cell_layout_pack_start
(
GTK_CELL_LAYOUT
(
comboBox
),
renderer
,
TRUE
);
gtk_cell_layout_set_attributes
(
GTK_CELL_LAYOUT
(
comboBox
),
renderer
,
"text"
,
0
,
NULL
);
gtk_table_attach
(
GTK_TABLE
(
deviceTable
),
comboBox
,
2
,
3
,
1
,
2
,
GTK_FILL
|
GTK_EXPAND
,
GTK_SHRINK
,
0
,
0
);
gtk_widget_show
(
comboBox
);
// Create refresh button
refreshButton
=
gtk_button_new_from_stock
(
GTK_STOCK_REFRESH
);
gtk_table_attach
(
GTK_TABLE
(
deviceTable
),
refreshButton
,
3
,
4
,
1
,
2
,
GTK_EXPAND
,
GTK_SHRINK
,
0
,
0
);
// Device : Input device
// Create title label
titleLabel
=
gtk_label_new
(
"Input peripheral:"
);
gtk_misc_set_alignment
(
GTK_MISC
(
titleLabel
),
0
,
0
.
5
);
gtk_table_attach
(
GTK_TABLE
(
deviceTable
),
titleLabel
,
1
,
2
,
2
,
3
,
GTK_FILL
|
GTK_EXPAND
,
GTK_SHRINK
,
0
,
0
);
gtk_widget_show
(
titleLabel
);
// Set choices of output devices
inputAudioDeviceManagerStore
=
gtk_list_store_new
(
1
,
G_TYPE_STRING
);
gtk_list_store_append
(
inputAudioDeviceManagerStore
,
&
iter
);
gtk_list_store_set
(
inputAudioDeviceManagerStore
,
&
iter
,
0
,
"Default"
,
-
1
);
comboBox
=
gtk_combo_box_new_with_model
(
GTK_TREE_MODEL
(
inputAudioDeviceManagerStore
));
gtk_combo_box_set_active
(
GTK_COMBO_BOX
(
comboBox
),
0
);
gtk_label_set_mnemonic_widget
(
GTK_LABEL
(
titleLabel
),
comboBox
);
// Set rendering
renderer
=
gtk_cell_renderer_text_new
();
gtk_cell_layout_pack_start
(
GTK_CELL_LAYOUT
(
comboBox
),
renderer
,
TRUE
);
gtk_cell_layout_set_attributes
(
GTK_CELL_LAYOUT
(
comboBox
),
renderer
,
"text"
,
0
,
NULL
);
gtk_table_attach
(
GTK_TABLE
(
deviceTable
),
comboBox
,
2
,
3
,
2
,
3
,
GTK_FILL
|
GTK_EXPAND
,
GTK_SHRINK
,
0
,
0
);
gtk_widget_show
(
comboBox
);
// Create refresh button
refreshButton
=
gtk_button_new_from_stock
(
GTK_STOCK_REFRESH
);
gtk_table_attach
(
GTK_TABLE
(
deviceTable
),
refreshButton
,
3
,
4
,
2
,
3
,
GTK_EXPAND
,
GTK_SHRINK
,
0
,
0
);
// Codec section label
codecLabel
=
gtk_label_new
(
"Codecs"
);
gtk_label_set_line_wrap
(
GTK_LABEL
(
codecLabel
),
TRUE
);
gtk_misc_set_alignment
(
GTK_MISC
(
codecLabel
),
0
,
0
.
5
);
gtk_label_set_justify
(
GTK_LABEL
(
codecLabel
),
GTK_JUSTIFY_LEFT
);
gtk_box_pack_start
(
GTK_BOX
(
ret
),
codecLabel
,
FALSE
,
FALSE
,
0
);
gtk_widget_show
(
codecLabel
);
// Main codec widget
codecBox
=
gtk_hbox_new
(
FALSE
,
10
);
gtk_box_pack_start
(
GTK_BOX
(
ret
),
codecBox
,
FALSE
,
FALSE
,
0
);
gtk_widget_show
(
codecBox
);
// Codec : List
GtkWidget
*
codecTable
;
codecTable
=
create_codec_table
();
gtk_box_pack_start
(
GTK_BOX
(
codecBox
),
codecTable
,
TRUE
,
TRUE
,
0
);
gtk_widget_show
(
codecTable
);
// Show all
gtk_widget_show_all
(
ret
);
return
ret
;
}
/**
* Main video tab creation
* Temporary code that was in audio tab before
*/
/*GtkWidget*
create_video_tab ()
{
GtkWidget * ret;
GtkWidget * label;
GtkWidget * codecBox;
GtkWidget * rate_box;
GtkWidget
*
image
;
GtkWidget * hbox1;
GtkTreeIter
iter
;
GtkCellRenderer *renderer;
ret = gtk_vbox_new(FALSE, 10);
gtk_container_set_border_width (GTK_CONTAINER (ret), 10);
label
=
gtk_label_new
(
"Set your
audi
o preferences."
);
label = gtk_label_new("Set your
vide
o preferences.");
gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
...
...
@@ -453,13 +787,14 @@ create_audio_tab ()
gtk_widget_show_all(ret);
config_window_fill_codec_list();
config_window_fill_rate_list();
gtk_combo_box_set_active
(
rate_box
,
0
);
gtk_combo_box_set_active(
GTK_COMBO_BOX(
rate_box
)
, 0);
return ret;
}*/
}
/**
* Show configuration window with tabs
*/
void
show_config_window
()
{
...
...
@@ -496,10 +831,14 @@ show_config_window ()
gtk_notebook_append_page
(
GTK_NOTEBOOK
(
notebook
),
tab
,
gtk_label_new
(
"Audio Settings"
));
gtk_notebook_page_num
(
GTK_NOTEBOOK
(
notebook
),
tab
);
// Video tab
/* tab = create_video_tab();
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), tab, gtk_label_new("Video Settings"));
gtk_notebook_page_num(GTK_NOTEBOOK(notebook), tab);
*/
gtk_dialog_run
(
dialog
);
dialogOpen
=
FALSE
;
gtk_widget_destroy
(
GTK_WIDGET
(
dialog
));
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment