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

GTK Ordering codec list settings

parent 8ba45b53
No related branches found
No related tags found
No related merge requests found
......@@ -31,24 +31,25 @@
/**
* Local variables
*/
gboolean dialogOpen = FALSE;
gboolean dialogOpen = FALSE;
GtkListStore * accountStore;
GtkListStore * codecStore;
GtkListStore * audioManagerStore;
GtkListStore * outputAudioDeviceManagerStore;
GtkListStore * inputAudioDeviceManagerStore;
GtkListStore *accountStore;
GtkWidget *codecTreeView; // View used instead of store to get access to selection
// instead of keeping selected codec as a variable
GtkListStore *audioManagerStore;
GtkListStore *outputAudioDeviceManagerStore;
GtkListStore *inputAudioDeviceManagerStore;
GtkWidget * addButton;
GtkWidget * editButton;
GtkWidget * deleteButton;
GtkWidget * defaultButton;
GtkWidget * restoreButton;
GtkWidget *addButton;
GtkWidget *editButton;
GtkWidget *deleteButton;
GtkWidget *defaultButton;
GtkWidget *restoreButton;
account_t * selectedAccount;
GtkWidget *moveUpButton;
GtkWidget *moveDownButton;
//GtkListStore * rate_store;
//GtkWidget * combo_box;
account_t *selectedAccount;
/**
* Fills the treelist with accounts
......@@ -91,10 +92,15 @@ config_window_fill_codec_list()
{
if(dialogOpen)
{
GtkListStore *codecStore;
GtkTreeIter iter;
int i;
// Get model of view and clear it
codecStore = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(codecTreeView)));
gtk_list_store_clear(codecStore);
// Insert codecs
int i;
for(i = 0; i < codec_list_get_size(); i++)
{
codec_t* c = codec_list_get_nth(i);
......@@ -105,9 +111,9 @@ config_window_fill_codec_list()
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
2, c->sample_rate, // Frequency
3, "bit rate", // Bit rate
4, "bandwith", // Bandwith
-1);
}
}
......@@ -115,25 +121,13 @@ config_window_fill_codec_list()
}
/**
* SEE deprecated
* TODO
*/
/*void
config_window_fill_rate_list()
void
config_window_fill_audio_manager_list()
{
if(dialogOpen)
{
GtkTreeIter iter;
int i=0;
gchar** ratelist = (gchar**)dbus_get_sample_rate_list();
while(ratelist[i]!=NULL)
{
printf("%s\n", ratelist[i]);
gtk_list_store_append (rate_store, &iter);
gtk_list_store_set(rate_store, &iter,0,ratelist[i],-1);
i++;
}
}
}*/
}
/**
* TODO
......@@ -223,67 +217,137 @@ select_account(GtkTreeSelection *selection, GtkTreeModel *model)
if(selectedAccount)
{
gtk_widget_set_sensitive( GTK_WIDGET(editButton), TRUE);
gtk_widget_set_sensitive( GTK_WIDGET(deleteButton), TRUE);
gtk_widget_set_sensitive( GTK_WIDGET(defaultButton), TRUE);
gtk_widget_set_sensitive(GTK_WIDGET(editButton), TRUE);
gtk_widget_set_sensitive(GTK_WIDGET(deleteButton), TRUE);
gtk_widget_set_sensitive(GTK_WIDGET(defaultButton), TRUE);
}
g_print("select");
}
/**
* Toggle move buttons on if a codec is selected, off elsewise
*/
static void
codec_active_toggled(GtkCellRendererToggle * renderer, gchar * path, GtkListStore * store)
select_codec(GtkTreeSelection *selection, GtkTreeModel *model)
{
GtkTreeIter iter;
GValue val;
if(!gtk_tree_selection_get_selected(selection, &model, &iter))
{
gtk_widget_set_sensitive(GTK_WIDGET(moveUpButton), FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(moveDownButton), FALSE);
}
else
{
gtk_widget_set_sensitive(GTK_WIDGET(moveUpButton), TRUE);
gtk_widget_set_sensitive(GTK_WIDGET(moveDownButton), TRUE);
}
}
/**
* TODO Change for tree model and tree selection as in precedent function
* SEE not working
*/
static void
select_codec(GtkTreeSelection * selection, GtkTreeModel * model)
codec_active_toggled(GtkCellRendererToggle *renderer, gchar *path, GtkTreeView *treeView)
{
GtkTreeIter iter;
/* GtkTreeIter iter;
GtkTreePath *treePath;
GtkTreeModel *model;
gboolean visible;
// Get path of clicked codec active toggle box
treePath = gtk_tree_path_new_from_string(path);
model = gtk_tree_view_get_model(treeView);
gtk_tree_model_get_iter(model, &iter, treePath);
// Get value at iteration
gtk_tree_model_get(model, &iter,
0, &visible
-1);
if(!gtk_tree_selection_get_selected(selection, &model, &iter))
{
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);
visible = !visible;
// Toggle active value
gtk_tree_store_set(GTK_TREE_STORE(model), &iter,
0, visible,
-1);
gtk_tree_path_free(treePath);*/
}
/**
* Move codec in list depending on direction and selected codec
*/
static void
moveCodec(gboolean moveUp, GtkListStore * codecListStore)
moveCodec(gboolean moveUp, gpointer data)
{
// TODO
printf("Button pressed");
GtkTreeIter iter;
GtkTreeIter *iter2;
GtkTreeView *treeView;
GtkTreeModel *model;
GtkTreeSelection *selection;
GtkTreePath *treePath;
gchar *path;
// Get view, model and selection of codec store
treeView = GTK_TREE_VIEW(data);
model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeView));
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeView));
// Find selected iteration and create a copy
gtk_tree_selection_get_selected(GTK_TREE_SELECTION(selection), &model, &iter);
iter2 = gtk_tree_iter_copy(&iter);
// Find path of iteration
path = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(model), &iter);
treePath = gtk_tree_path_new_from_string(path);
// Depending on button direction get new path
if(moveUp)
gtk_tree_path_prev(treePath);
else
gtk_tree_path_next(treePath);
gtk_tree_model_get_iter(model, &iter, treePath);
// Swap iterations if valid
if(gtk_list_store_iter_is_valid(GTK_LIST_STORE(model), &iter))
gtk_list_store_swap(GTK_LIST_STORE(model), &iter, iter2);
// Scroll to new position
gtk_tree_view_scroll_to_cell(treeView, treePath, NULL, FALSE, 0, 0);
// Free resources
gtk_tree_path_free(treePath);
gtk_tree_iter_free(iter2);
g_free(path);
// TODO Perpetuate changes to the deamon
/* Update the gconf key
codecs_data = gm_codecs_list_to_gm_conf_list (GTK_WIDGET (data));
gm_conf_set_string_list (AUDIO_CODECS_KEY "list", codecs_data);
g_slist_foreach (codecs_data, (GFunc) g_free, NULL);
g_slist_free (codecs_data);
*/
}
/**
* Called from move up codec button signal
*/
static void
moveCodecUp(GtkListStore * codecListStore)
void
moveCodecUp(GtkButton *button, gpointer data)
{
moveCodec(TRUE, codecListStore);
printf("Button pressed");
moveCodec(TRUE, data);
}
/**
* Called from move up codec button signal
* Called from move down codec button signal
*/
static void
moveCodecDown(GtkListStore * codecListStore)
moveCodecDown(GtkButton *button, gpointer data)
{
moveCodec(FALSE, codecListStore);
printf("Button pressed");
moveCodec(FALSE, data);
}
/**
......@@ -313,6 +377,7 @@ bold_if_default_account(GtkTreeViewColumn *col,
void
default_codecs(GtkWidget* widget, gpointer data)
{
GtkListStore *codecStore;
int i = 0;
int j = 0;
gint * new_order;
......@@ -343,8 +408,9 @@ default_codecs(GtkWidget* widget, gpointer data)
}
printf("new_order[%i]=%i\n", i,j);
i++;
}
gtk_list_store_reorder(codecStore, new_order);
}
codecStore = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(codecTreeView)));
gtk_list_store_reorder(codecStore, new_order);
}
/**
......@@ -353,17 +419,14 @@ default_codecs(GtkWidget* widget, gpointer data)
GtkWidget*
create_codec_table()
{
GtkWidget * ret;
GtkWidget * scrolledWindow;
GtkWidget * buttonBox;
GtkWidget * moveUpButton;
GtkWidget * moveDownButton;
GtkWidget *ret;
GtkWidget *scrolledWindow;
GtkWidget *buttonBox;
GtkWidget * treeView;
GtkCellRenderer * renderer;
GtkTreeSelection * treeSelection;
GtkTreeViewColumn * treeViewColumn;
GtkTreeIter iter;
GtkListStore *codecStore;
GtkCellRenderer *renderer;
GtkTreeSelection *treeSelection;
GtkTreeViewColumn *treeViewColumn;
ret = gtk_hbox_new(FALSE, 10);
gtk_container_set_border_width(GTK_CONTAINER(ret), 10);
......@@ -376,61 +439,65 @@ create_codec_table()
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
G_TYPE_STRING, // Frequency
G_TYPE_STRING, // Bit rate
G_TYPE_STRING // Bandwith
);
treeView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(codecStore));
// Create codec tree view with list store
codecTreeView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(codecStore));
treeSelection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeView));
// Get tree selection manager
treeSelection = gtk_tree_view_get_selection(GTK_TREE_VIEW(codecTreeView));
g_signal_connect(G_OBJECT(treeSelection), "changed",
G_CALLBACK (select_codec),
codecStore); // TODO ONLY for disabling or enabling move buttons
codecStore);
// 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);
gtk_tree_view_append_column(GTK_TREE_VIEW(codecTreeView), treeViewColumn);
g_signal_connect(G_OBJECT(renderer), "toggled", G_CALLBACK(codec_active_toggled), codecTreeView);
// 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);
gtk_tree_view_append_column(GTK_TREE_VIEW(codecTreeView), 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);
treeViewColumn = gtk_tree_view_column_new_with_attributes("Frequency", renderer, "text", 2, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(codecTreeView), 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);
treeViewColumn = gtk_tree_view_column_new_with_attributes("Bitrate", renderer, "text", 3, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(codecTreeView), 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);
treeViewColumn = gtk_tree_view_column_new_with_attributes("Bandwidth", renderer, "text", 4, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(codecTreeView), treeViewColumn);
g_object_unref(G_OBJECT(codecStore));
gtk_container_add(GTK_CONTAINER(scrolledWindow), treeView);
gtk_container_add(GTK_CONTAINER(scrolledWindow), codecTreeView);
// 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");
moveUpButton = gtk_button_new_from_stock(GTK_STOCK_GO_UP);
gtk_widget_set_sensitive(GTK_WIDGET(moveUpButton), FALSE);
gtk_box_pack_start(GTK_BOX(buttonBox), moveUpButton, FALSE, FALSE, 0);
g_signal_connect(G_OBJECT(moveUpButton), "clicked", G_CALLBACK(moveCodecUp), codecStore);
g_signal_connect(G_OBJECT(moveUpButton), "clicked", G_CALLBACK(moveCodecUp), codecTreeView);
moveDownButton = gtk_button_new_with_label("Move down");
moveDownButton = gtk_button_new_from_stock(GTK_STOCK_GO_DOWN);
gtk_widget_set_sensitive(GTK_WIDGET(moveDownButton), FALSE);
gtk_box_pack_start(GTK_BOX(buttonBox), moveDownButton, FALSE, FALSE, 0);
g_signal_connect(G_OBJECT(moveDownButton), "clicked", G_CALLBACK(moveCodecDown), codecStore);
g_signal_connect(G_OBJECT(moveDownButton), "clicked", G_CALLBACK(moveCodecDown), codecTreeView);
config_window_fill_codec_list();
......@@ -569,7 +636,6 @@ create_audio_tab ()
GtkWidget * codecLabel;
GtkWidget * codecBox;
GtkWidget * attributeBox;
GtkWidget * titleLabel;
GtkWidget * comboBox;
GtkWidget * refreshButton;
......@@ -594,11 +660,12 @@ create_audio_tab ()
gtk_widget_show(codecBox);
// TODO Create margin instead of column
// Also change 3 buttons for one detect button
// 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_set_spacing(GTK_BOX(deviceTable), 0);
gtk_box_pack_start(GTK_BOX(deviceBox), deviceTable, TRUE, TRUE, 0);
gtk_widget_show(deviceTable);
......@@ -697,101 +764,6 @@ create_audio_tab ()
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 video 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);
gtk_box_pack_start(GTK_BOX(ret), label, FALSE, FALSE, 0);
gtk_widget_show(label);
codecBox = gtk_hbutton_box_new();
gtk_box_set_spacing(GTK_BOX(codecBox), 10); //GAIM_HIG_BOX_SPACE
gtk_button_box_set_layout(GTK_BUTTON_BOX(codecBox), GTK_BUTTONBOX_SPREAD);
gtk_box_pack_start(GTK_BOX(ret), codecBox, FALSE, FALSE, 0);
gtk_widget_show (codecBox);
hbox1 = gtk_label_new("Codec:");
gtk_misc_set_alignment(GTK_MISC(hbox1), 0, 0.5);
gtk_box_pack_start(GTK_BOX(codecBox), hbox1, FALSE, FALSE, 0);
gtk_widget_show(hbox1);
codec_store = gtk_list_store_new(1, G_TYPE_STRING);
combo_box = gtk_combo_box_new_with_model(GTK_TREE_MODEL (codec_store));
gtk_label_set_mnemonic_widget(GTK_LABEL(hbox1), combo_box);
renderer = gtk_cell_renderer_text_new();
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo_box), renderer, TRUE);
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_box), renderer, "text",0,NULL);
gtk_box_pack_start(GTK_BOX(codecBox), combo_box, FALSE, FALSE,0);
g_signal_connect (G_OBJECT (combo_box), "changed",
G_CALLBACK (select_codec),
NULL);
gtk_widget_show(combo_box);
restoreButton = gtk_button_new_from_stock(GTK_STOCK_REFRESH);
gtk_box_pack_start(GTK_BOX(codecBox), restoreButton, FALSE, FALSE,10);
//g_signal_connect(G_OBJECT(restoreButton), "clicked", G_CALLBACK(default_codecs), NULL);
gtk_widget_show(restoreButton);
codecBox = gtk_hbutton_box_new();
gtk_box_set_spacing(GTK_BOX(codecBox), 10); //GAIM_HIG_BOX_SPACE
gtk_button_box_set_layout(GTK_BUTTON_BOX(codecBox), GTK_BUTTONBOX_SPREAD);
gtk_box_pack_start(GTK_BOX(ret), codecBox, FALSE, FALSE, 0);
gtk_widget_show (codecBox);
hbox1 = gtk_label_new("Sample Rate:");
gtk_misc_set_alignment(GTK_MISC(hbox1), 0, 0.5);
gtk_box_pack_start(GTK_BOX(codecBox), hbox1, FALSE, FALSE, 0);
gtk_widget_show(hbox1);
rate_store = gtk_list_store_new(1, G_TYPE_STRING);
rate_box = gtk_combo_box_new_with_model(GTK_TREE_MODEL(rate_store));
gtk_label_set_mnemonic_widget(GTK_LABEL(hbox1), rate_box);
renderer = gtk_cell_renderer_text_new();
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(rate_box), renderer, TRUE);
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(rate_box), renderer, "text",0,NULL);
gtk_box_pack_start(GTK_BOX(codecBox), rate_box, FALSE, FALSE,0);
//g_signal_connect (G_OBJECT (combo_box), "changed",
// G_CALLBACK (select_codec),
// NULL);
gtk_widget_show(rate_box);
restoreButton = gtk_button_new_from_stock(GTK_STOCK_REFRESH);
gtk_box_pack_start(GTK_BOX(codecBox), restoreButton, FALSE, FALSE,0);
//g_signal_connect(G_OBJECT(restoreButton), "clicked", G_CALLBACK(default_codecs), NULL);
gtk_widget_show(restoreButton);
gtk_widget_show_all(ret);
config_window_fill_codec_list();
config_window_fill_rate_list();
gtk_combo_box_set_active(GTK_COMBO_BOX(rate_box), 0);
//gtk_combo_box_set_active(rate_box, 0);
return ret;
}*/
/**
* Show configuration window with tabs
*/
......@@ -831,11 +803,6 @@ 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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment