Skip to content
Snippets Groups Projects
Commit f16e154c authored by Guillaume Carmel-Archambault's avatar Guillaume Carmel-Archambault
Browse files

GTK audio settings configuration

parent 916bc091
No related branches found
No related tags found
No related merge requests found
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
* Copyright (C) 2007 Savoir-Faire Linux inc. * Copyright (C) 2007 Savoir-Faire Linux inc.
* Author: Pierre-Luc Beaudoin <pierre-luc@squidy.info> * Author: Pierre-Luc Beaudoin <pierre-luc@squidy.info>
* Author: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com> * 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 * 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 * it under the terms of the GNU General Public License as published by
...@@ -27,21 +28,31 @@ ...@@ -27,21 +28,31 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
/** Local variables */ /**
* Local variables
*/
gboolean dialogOpen = FALSE; gboolean dialogOpen = FALSE;
GtkListStore * account_store;
GtkListStore * codec_store; GtkListStore * accountStore;
GtkListStore * rate_store; GtkListStore * codecStore;
GtkListStore * audioManagerStore;
GtkListStore * outputAudioDeviceManagerStore;
GtkListStore * inputAudioDeviceManagerStore;
GtkWidget * addButton; GtkWidget * addButton;
GtkWidget * editButton; GtkWidget * editButton;
GtkWidget * deleteButton; GtkWidget * deleteButton;
GtkWidget * defaultButton; GtkWidget * defaultButton;
GtkWidget * restoreButton; GtkWidget * restoreButton;
GtkWidget * combo_box;
account_t * selectedAccount; account_t * selectedAccount;
/** Fills the treelist with accounts */ //GtkListStore * rate_store;
//GtkWidget * combo_box;
/**
* Fills the treelist with accounts
*/
void void
config_window_fill_account_list() config_window_fill_account_list()
{ {
...@@ -49,22 +60,20 @@ config_window_fill_account_list () ...@@ -49,22 +60,20 @@ config_window_fill_account_list ()
{ {
GtkTreeIter iter; GtkTreeIter iter;
gtk_list_store_clear(account_store); gtk_list_store_clear(accountStore);
int i; int i;
for(i = 0; i < account_list_get_size(); i++) for(i = 0; i < account_list_get_size(); i++)
{ {
account_t * a = account_list_get_nth (i); account_t * a = account_list_get_nth (i);
if (a) if (a)
{ {
gtk_list_store_append (account_store, &iter); gtk_list_store_append (accountStore, &iter);
gtk_list_store_set(accountStore, &iter,
gtk_list_store_set(account_store, &iter,
0, g_hash_table_lookup(a->properties, ACCOUNT_ALIAS), // Name 0, g_hash_table_lookup(a->properties, ACCOUNT_ALIAS), // Name
1, g_hash_table_lookup(a->properties, ACCOUNT_TYPE), // Protocol 1, g_hash_table_lookup(a->properties, ACCOUNT_TYPE), // Protocol
2, account_state_name(a->state), // Status 2, account_state_name(a->state), // Status
3, a, // Pointer 3, a, // Pointer
-1); -1);
} }
} }
...@@ -74,6 +83,9 @@ config_window_fill_account_list () ...@@ -74,6 +83,9 @@ config_window_fill_account_list ()
} }
} }
/**
* Fills the tree list with supported codecs
*/
void void
config_window_fill_codec_list() config_window_fill_codec_list()
{ {
...@@ -81,25 +93,31 @@ config_window_fill_codec_list() ...@@ -81,25 +93,31 @@ config_window_fill_codec_list()
{ {
GtkTreeIter iter; GtkTreeIter iter;
int i; int i;
gtk_list_store_clear(codec_store); gtk_list_store_clear(codecStore);
gchar * description = "Select a codec:";
//gtk_list_store_append(codec_store, &iter);
//gtk_list_store_set(codec_store, &iter, 0, description, -1);
for(i = 0; i < codec_list_get_size(); i++) for(i = 0; i < codec_list_get_size(); i++)
{ {
codec_t* c = codec_list_get_nth(i); codec_t* c = codec_list_get_nth(i);
printf("%s\n", c->name); printf("%s\n", c->name);
if(c) if(c)
{ {
gtk_list_store_append (codec_store, &iter); gtk_list_store_append(codecStore, &iter);
gtk_list_store_set(codec_store, &iter,0,c->name,-1); 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() config_window_fill_rate_list()
{ {
if(dialogOpen) if(dialogOpen)
...@@ -115,6 +133,24 @@ config_window_fill_rate_list() ...@@ -115,6 +133,24 @@ config_window_fill_rate_list()
i++; 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) ...@@ -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 static void
select_account(GtkTreeSelection *sel, GtkTreeModel *model) select_account(GtkTreeSelection *selection, GtkTreeModel *model)
{ {
GtkTreeIter iter; GtkTreeIter iter;
GValue val; GValue val;
if (! gtk_tree_selection_get_selected (sel, &model, &iter)) if (!gtk_tree_selection_get_selected(selection, &model, &iter))
{ {
selectedAccount = NULL; selectedAccount = NULL;
return; return;
...@@ -190,19 +228,68 @@ select_account(GtkTreeSelection *sel, GtkTreeModel *model) ...@@ -190,19 +228,68 @@ select_account(GtkTreeSelection *sel, GtkTreeModel *model)
gtk_widget_set_sensitive( GTK_WIDGET(defaultButton), TRUE); gtk_widget_set_sensitive( GTK_WIDGET(defaultButton), TRUE);
} }
g_print("select"); 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 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 */ /* now we want this selected codec to be used as the preferred codec */
/* ie first in the list in the user config */ /* ie first in the list in the user config */
//codec_set_prefered_order(item); //codec_set_prefered_order(item);
//dbus_set_prefered_codec(codec_list_get_nth(0)->name); //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 void
bold_if_default_account(GtkTreeViewColumn *col, bold_if_default_account(GtkTreeViewColumn *col,
GtkCellRenderer *rend, GtkCellRenderer *rend,
...@@ -219,9 +306,11 @@ bold_if_default_account(GtkTreeViewColumn *col, ...@@ -219,9 +306,11 @@ bold_if_default_account(GtkTreeViewColumn *col,
g_object_set(G_OBJECT(rend), "weight", 800, NULL); g_object_set(G_OBJECT(rend), "weight", 800, NULL);
else else
g_object_set(G_OBJECT(rend), "weight", 400, NULL); g_object_set(G_OBJECT(rend), "weight", 400, NULL);
} }
/**
* TODO
*/
void void
default_codecs(GtkWidget* widget, gpointer data) default_codecs(GtkWidget* widget, gpointer data)
{ {
...@@ -229,42 +318,144 @@ default_codecs(GtkWidget* widget, gpointer data) ...@@ -229,42 +318,144 @@ default_codecs(GtkWidget* widget, gpointer data)
int j = 0; int j = 0;
gint * new_order; gint * new_order;
gchar ** default_list = (gchar**)dbus_default_codec_list(); gchar ** default_list = (gchar**)dbus_default_codec_list();
while(default_list[i] != NULL) while(default_list[i] != NULL)
{printf("%s\n", default_list[i]); {
i++;} printf("%s\n", default_list[i]);
i++;
}
i = 0; i = 0;
while(default_list[i] != NULL) 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]); printf("%s %s\n",codec_list_get_nth(0)->name, default_list[i]);
new_order[i] = 0; 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]); printf("%s %s\n",codec_list_get_nth(0)->name, default_list[0]);
new_order[i] = 1;} new_order[i] = 1;
else{ }
else
{
printf("%s %s\n",codec_list_get_nth(0)->name, default_list[0]); 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); printf("new_order[%i]=%i\n", i,j);
i++; i++;
} }
gtk_list_store_reorder(codec_store, new_order); gtk_list_store_reorder(codecStore, 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 * GtkWidget *
create_accounts_tab() create_accounts_tab()
{ {
GtkWidget *ret; GtkWidget *ret;
GtkWidget *sw; GtkWidget *scrolledWindow;
GtkWidget *view; GtkWidget *treeView;
GtkWidget *bbox; GtkWidget *buttonBox;
GtkCellRenderer *rend; GtkCellRenderer *renderer;
GtkTreeViewColumn *col; GtkTreeViewColumn *treeViewColumn;
GtkTreeSelection *sel; GtkTreeSelection *treeSelection;
GtkWidget *label; GtkWidget *label;
GtkTreeIter iter; GtkTreeIter iter;
GValue val; GValue val;
val.g_type = G_TYPE_POINTER; val.g_type = G_TYPE_POINTER;
selectedAccount = NULL; selectedAccount = NULL;
...@@ -274,90 +465,90 @@ create_accounts_tab() ...@@ -274,90 +465,90 @@ create_accounts_tab()
label = gtk_label_new("This is the list of accounts previously setup."); 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_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_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
gtk_box_pack_start(GTK_BOX(ret), label, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(ret), label, FALSE, FALSE, 0);
gtk_widget_show(label); gtk_widget_show(label);
sw = gtk_scrolled_window_new(NULL,NULL); scrolledWindow = 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_policy(GTK_SCROLLED_WINDOW(scrolledWindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); 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); accountStore = gtk_list_store_new(4,
account_store = gtk_list_store_new (4,
G_TYPE_STRING, // Name G_TYPE_STRING, // Name
G_TYPE_STRING, // Protocol G_TYPE_STRING, // Protocol
G_TYPE_STRING, // Status G_TYPE_STRING, // Status
G_TYPE_POINTER // Pointer to the Object G_TYPE_POINTER // Pointer to the Object
); );
view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(account_store)); treeView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(accountStore));
sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); treeSelection = gtk_tree_view_get_selection(GTK_TREE_VIEW (treeView));
g_signal_connect (G_OBJECT (sel), "changed", g_signal_connect(G_OBJECT (treeSelection), "changed",
G_CALLBACK (select_account), G_CALLBACK (select_account),
account_store); accountStore);
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(account_store), gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(accountStore),
2, GTK_SORT_ASCENDING); 2, GTK_SORT_ASCENDING);
rend = gtk_cell_renderer_text_new(); renderer = gtk_cell_renderer_text_new();
col = gtk_tree_view_column_new_with_attributes ("Alias", treeViewColumn = gtk_tree_view_column_new_with_attributes ("Alias",
rend, renderer,
"markup", 0, "markup", 0,
NULL); NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW(view), col); gtk_tree_view_append_column (GTK_TREE_VIEW(treeView), treeViewColumn);
gtk_tree_view_column_set_cell_data_func(col, rend, bold_if_default_account, NULL,NULL); gtk_tree_view_column_set_cell_data_func(treeViewColumn, renderer, bold_if_default_account, NULL,NULL);
rend = gtk_cell_renderer_text_new(); renderer = gtk_cell_renderer_text_new();
col = gtk_tree_view_column_new_with_attributes ("Protocol", treeViewColumn = gtk_tree_view_column_new_with_attributes ("Protocol",
rend, renderer,
"markup", 1, "markup", 1,
NULL); NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW(view), col); gtk_tree_view_append_column (GTK_TREE_VIEW(treeView), treeViewColumn);
gtk_tree_view_column_set_cell_data_func(col, rend, bold_if_default_account, NULL,NULL); gtk_tree_view_column_set_cell_data_func(treeViewColumn, renderer, bold_if_default_account, NULL,NULL);
rend = gtk_cell_renderer_text_new(); renderer = gtk_cell_renderer_text_new();
col = gtk_tree_view_column_new_with_attributes ("Status", treeViewColumn = gtk_tree_view_column_new_with_attributes ("Status",
rend, renderer,
"markup", 2, "markup", 2,
NULL); NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW(view), col); gtk_tree_view_append_column (GTK_TREE_VIEW(treeView), treeViewColumn);
gtk_tree_view_column_set_cell_data_func(col, rend, bold_if_default_account, NULL,NULL); gtk_tree_view_column_set_cell_data_func(treeViewColumn, renderer, bold_if_default_account, NULL,NULL);
g_object_unref(G_OBJECT(account_store)); g_object_unref(G_OBJECT(accountStore));
gtk_container_add(GTK_CONTAINER(sw), view); gtk_container_add(GTK_CONTAINER(scrolledWindow), treeView);
/* The buttons to press! */ /* The buttons to press! */
bbox = gtk_hbutton_box_new(); buttonBox = gtk_hbutton_box_new();
gtk_box_set_spacing(GTK_BOX(bbox), 10); //GAIM_HIG_BOX_SPACE gtk_box_set_spacing(GTK_BOX(buttonBox), 10); //GAIM_HIG_BOX_SPACE
gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_START); gtk_button_box_set_layout(GTK_BUTTON_BOX(buttonBox), GTK_BUTTONBOX_START);
gtk_box_pack_start(GTK_BOX(ret), bbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(ret), buttonBox, FALSE, FALSE, 0);
gtk_widget_show (bbox); gtk_widget_show (buttonBox);
addButton = gtk_button_new_from_stock (GTK_STOCK_ADD); addButton = gtk_button_new_from_stock (GTK_STOCK_ADD);
g_signal_connect_swapped(G_OBJECT(addButton), "clicked", g_signal_connect_swapped(G_OBJECT(addButton), "clicked",
G_CALLBACK(add_account), NULL); G_CALLBACK(add_account), NULL);
gtk_box_pack_start(GTK_BOX(bbox), addButton, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(buttonBox), addButton, FALSE, FALSE, 0);
gtk_widget_show(addButton); gtk_widget_show(addButton);
editButton = gtk_button_new_from_stock (GTK_STOCK_EDIT); editButton = gtk_button_new_from_stock (GTK_STOCK_EDIT);
g_signal_connect_swapped(G_OBJECT(editButton), "clicked", g_signal_connect_swapped(G_OBJECT(editButton), "clicked",
G_CALLBACK(edit_account), NULL); G_CALLBACK(edit_account), NULL);
gtk_box_pack_start(GTK_BOX(bbox), editButton, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(buttonBox), editButton, FALSE, FALSE, 0);
gtk_widget_show(editButton); gtk_widget_show(editButton);
deleteButton = gtk_button_new_from_stock (GTK_STOCK_REMOVE); deleteButton = gtk_button_new_from_stock (GTK_STOCK_REMOVE);
g_signal_connect_swapped(G_OBJECT(deleteButton), "clicked", g_signal_connect_swapped(G_OBJECT(deleteButton), "clicked",
G_CALLBACK(delete_account), NULL); G_CALLBACK(delete_account), NULL);
gtk_box_pack_start(GTK_BOX(bbox), deleteButton, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(buttonBox), deleteButton, FALSE, FALSE, 0);
gtk_widget_show(deleteButton); gtk_widget_show(deleteButton);
defaultButton = gtk_button_new_with_mnemonic("Set as Default"); defaultButton = gtk_button_new_with_mnemonic("Set as Default");
g_signal_connect_swapped(G_OBJECT(defaultButton), "clicked", g_signal_connect_swapped(G_OBJECT(defaultButton), "clicked",
G_CALLBACK(default_account), NULL); G_CALLBACK(default_account), NULL);
gtk_box_pack_start(GTK_BOX(bbox), defaultButton, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(buttonBox), defaultButton, FALSE, FALSE, 0);
gtk_widget_show(defaultButton); gtk_widget_show(defaultButton);
gtk_widget_show_all(ret); gtk_widget_show_all(ret);
...@@ -367,23 +558,166 @@ create_accounts_tab() ...@@ -367,23 +558,166 @@ create_accounts_tab()
return ret; return ret;
} }
/**
* Audio settings tab
*/
GtkWidget* GtkWidget*
create_audio_tab () 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 * ret;
GtkWidget * label; GtkWidget * label;
GtkWidget * codecBox; GtkWidget * codecBox;
GtkWidget * rate_box; GtkWidget * rate_box;
GtkWidget * image;
GtkWidget * hbox1; GtkWidget * hbox1;
GtkTreeIter iter;
GtkCellRenderer *renderer; GtkCellRenderer *renderer;
ret = gtk_vbox_new(FALSE, 10); ret = gtk_vbox_new(FALSE, 10);
gtk_container_set_border_width (GTK_CONTAINER (ret), 10); gtk_container_set_border_width (GTK_CONTAINER (ret), 10);
label = gtk_label_new("Set your audio preferences."); label = gtk_label_new("Set your video preferences.");
gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
...@@ -453,13 +787,14 @@ create_audio_tab () ...@@ -453,13 +787,14 @@ create_audio_tab ()
gtk_widget_show_all(ret); gtk_widget_show_all(ret);
config_window_fill_codec_list(); config_window_fill_codec_list();
config_window_fill_rate_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; return ret;
}*/
} /**
* Show configuration window with tabs
*/
void void
show_config_window () show_config_window ()
{ {
...@@ -496,10 +831,14 @@ 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_append_page(GTK_NOTEBOOK(notebook), tab, gtk_label_new("Audio Settings"));
gtk_notebook_page_num(GTK_NOTEBOOK(notebook), tab); 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); gtk_dialog_run(dialog);
dialogOpen = FALSE; dialogOpen = FALSE;
gtk_widget_destroy(GTK_WIDGET(dialog)); gtk_widget_destroy(GTK_WIDGET(dialog));
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment