Alias list shuffling working

git-svn-id: file:///home/vcs/svn/jsweeper/trunk@18 6611ac79-6612-48ef-a1e9-b906f853523e
master
petern 2009-11-29 13:22:58 +00:00
parent f34198c09e
commit 0b7422085b
3 changed files with 113 additions and 2 deletions

View File

@ -2,6 +2,7 @@
#define PORTMANAGER_H
#include <jack/jack.h>
#include <vector>
#include "port.h"
struct Alias
@ -13,7 +14,7 @@ struct Alias
std::string Replace(std::string name);
};
typedef std::list<Alias> AliasList;
typedef std::vector<Alias> AliasList;
class PortManager
{
@ -46,7 +47,7 @@ public:
void AliasClear();
void AliasAdd(std::string source, std::string target);
const AliasList &AliasGetList() const { return m_aliases; }
AliasList &AliasGetList() { return m_aliases; }
};
extern PortManager pm;

View File

@ -94,6 +94,11 @@ Preferences::Preferences(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builde
check_expand_groups->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::on_check_expand_groups_click));
check_activate_aliases->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::on_check_activate_aliases_click));
button_aliases_add->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::on_button_aliases_add_click));
button_aliases_remove->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::on_button_aliases_remove_click));
button_aliases_edit->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::on_button_aliases_edit_click));
button_aliases_up->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::on_button_aliases_up_click));
button_aliases_down->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::on_button_aliases_down_click));
fontbutton_font->signal_font_set().connect(sigc::mem_fun(*this, &Preferences::on_fontbutton_font_click));
spin_cell_padding->signal_value_changed().connect(sigc::mem_fun(*this, &Preferences::on_spin_cell_padding_click));
@ -111,6 +116,23 @@ void Preferences::Refresh()
{
}
void Preferences::RefreshAliases()
{
m_tree_model_aliases->clear();
const AliasList &list = pm.AliasGetList();
AliasList::const_iterator it;
int i = 0;
for (it = list.begin(); it != list.end(); ++it, i++) {
const Alias &a = *it;
Gtk::TreeModel::Row row = *(m_tree_model_aliases->append());
row[m_columns.m_row] = i;
row[m_columns.m_first] = a.match;
row[m_columns.m_second] = a.replace;
}
}
void Preferences::on_preferences_close_click()
{
hide();
@ -141,6 +163,86 @@ void Preferences::on_check_activate_aliases_click()
Refresh();
}
int Preferences::GetAliasRow()
{
Glib::RefPtr<Gtk::TreeSelection> selection = treeview_aliases->get_selection();
Gtk::TreeModel::iterator iter = selection->get_selected();
if (iter) {
Gtk::TreeModel::Row row = *iter;
return row[m_columns.m_row];
}
return -1;
}
void Preferences::on_button_aliases_add_click()
{
}
void Preferences::on_button_aliases_remove_click()
{
}
void Preferences::on_button_aliases_edit_click()
{
}
void Preferences::on_button_aliases_up_click()
{
int row = GetAliasRow();
if (row > 0) {
AliasList &list = pm.AliasGetList();
Alias t = list[row];
list[row] = list[row - 1];
list[row - 1] = t;
Gtk::TreeModel::Row trow1 = m_tree_model_aliases->children()[row];
Gtk::TreeModel::Row trow2 = m_tree_model_aliases->children()[row - 1];
trow1[m_columns.m_row] = row;
trow1[m_columns.m_first] = list[row].match;
trow1[m_columns.m_second] = list[row].replace;
trow2[m_columns.m_row] = row - 1;
trow2[m_columns.m_first] = list[row - 1].match;
trow2[m_columns.m_second] = list[row - 1].replace;
treeview_aliases->get_selection()->select(trow2);
}
// RefreshAliases();
}
void Preferences::on_button_aliases_down_click()
{
int row = GetAliasRow();
AliasList &list = pm.AliasGetList();
if (row < (int)list.size() - 1) {
Alias t = list[row];
list[row] = list[row + 1];
list[row + 1] = t;
Gtk::TreeModel::Row trow1 = m_tree_model_aliases->children()[row];
Gtk::TreeModel::Row trow2 = m_tree_model_aliases->children()[row + 1];
trow1[m_columns.m_row] = row;
trow1[m_columns.m_first] = list[row].match;
trow1[m_columns.m_second] = list[row].replace;
trow2[m_columns.m_row] = row + 1;
trow2[m_columns.m_first] = list[row + 1].match;
trow2[m_columns.m_second] = list[row + 1].replace;
treeview_aliases->get_selection()->select(trow2);
}
// RefreshAliases();
}
void Preferences::on_fontbutton_font_click()
{
std::string font = fontbutton_font->get_font_name();

View File

@ -54,6 +54,7 @@ public:
Preferences(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &builder);
static Preferences *Open();
void Refresh();
void RefreshAliases();
protected:
void on_preferences_close_click();
@ -63,6 +64,11 @@ protected:
void on_check_expand_groups_click();
void on_check_activate_aliases_click();
void on_button_aliases_add_click();
void on_button_aliases_remove_click();
void on_button_aliases_edit_click();
void on_button_aliases_up_click();
void on_button_aliases_down_click();
void on_fontbutton_font_click();
void on_spin_cell_padding_click();
@ -85,6 +91,8 @@ protected:
ModelColumns m_columns;
Glib::RefPtr<Gtk::ListStore> m_tree_model_connections;
Glib::RefPtr<Gtk::ListStore> m_tree_model_aliases;
int GetAliasRow();
};
#endif // PREFERENCES_GUI_H