projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Move DPIReset and ColorsChanged signals into UIConfiguration
[ardour.git]
/
gtk2_ardour
/
plugin_selector.cc
diff --git
a/gtk2_ardour/plugin_selector.cc
b/gtk2_ardour/plugin_selector.cc
index ebfcc677ac6c4de2331cfb219ef22982bca826e0..3c3d08c2d0da68f6449cc80e412054b5b25359b9 100644
(file)
--- a/
gtk2_ardour/plugin_selector.cc
+++ b/
gtk2_ardour/plugin_selector.cc
@@
-21,7
+21,6
@@
#endif
#include <cstdio>
#endif
#include <cstdio>
-#include <lrdf.h>
#include <map>
#include <algorithm>
#include <map>
#include <algorithm>
@@
-37,6
+36,7
@@
#include "ardour/plugin_manager.h"
#include "ardour/plugin.h"
#include "ardour/plugin_manager.h"
#include "ardour/plugin.h"
+#include "ardour/utils.h"
#include "ardour_ui.h"
#include "plugin_selector.h"
#include "ardour_ui.h"
#include "plugin_selector.h"
@@
-73,6
+73,7
@@
PluginSelector::PluginSelector (PluginManager& mgr)
in_row_change = false;
manager.PluginListChanged.connect (plugin_list_changed_connection, invalidator (*this), boost::bind (&PluginSelector::build_plugin_menu, this), gui_context());
in_row_change = false;
manager.PluginListChanged.connect (plugin_list_changed_connection, invalidator (*this), boost::bind (&PluginSelector::build_plugin_menu, this), gui_context());
+ manager.PluginListChanged.connect (plugin_list_changed_connection, invalidator (*this), boost::bind (&PluginSelector::refill, this), gui_context());
build_plugin_menu ();
plugin_model = Gtk::ListStore::create (plugin_columns);
build_plugin_menu ();
plugin_model = Gtk::ListStore::create (plugin_columns);
@@
-130,8
+131,6
@@
PluginSelector::PluginSelector (PluginManager& mgr)
btn_remove = manage(new Gtk::Button(Stock::REMOVE));
btn_remove->set_sensitive (false);
ARDOUR_UI::instance()->set_tip(*btn_remove, _("Remove a plugin from the effect list"));
btn_remove = manage(new Gtk::Button(Stock::REMOVE));
btn_remove->set_sensitive (false);
ARDOUR_UI::instance()->set_tip(*btn_remove, _("Remove a plugin from the effect list"));
- Gtk::Button *btn_update = manage(new Gtk::Button(Stock::REFRESH));
- ARDOUR_UI::instance()->set_tip(*btn_update, _("Update available plugins"));
btn_add->set_name("PluginSelectorButton");
btn_remove->set_name("PluginSelectorButton");
btn_add->set_name("PluginSelectorButton");
btn_remove->set_name("PluginSelectorButton");
@@
-162,8
+161,7
@@
PluginSelector::PluginSelector (PluginManager& mgr)
table->attach (*filter_box, 0, 7, 5, 6, FILL|EXPAND, FILL, 5, 5);
table->attach(*btn_add, 1, 2, 6, 7, FILL, FILL, 5, 5);
table->attach (*filter_box, 0, 7, 5, 6, FILL|EXPAND, FILL, 5, 5);
table->attach(*btn_add, 1, 2, 6, 7, FILL, FILL, 5, 5);
- table->attach(*btn_remove, 3, 4, 6, 7, FILL, FILL, 5, 5);
- table->attach(*btn_update, 5, 6, 6, 7, FILL, FILL, 5, 5);
+ table->attach(*btn_remove, 5, 6, 6, 7, FILL, FILL, 5, 5);
table->attach(ascroller, 0, 7, 8, 10);
table->attach(ascroller, 0, 7, 8, 10);
@@
-182,10
+180,10
@@
PluginSelector::PluginSelector (PluginManager& mgr)
plugin_display.get_selection()->signal_changed().connect (sigc::mem_fun(*this, &PluginSelector::display_selection_changed));
plugin_display.grab_focus();
plugin_display.get_selection()->signal_changed().connect (sigc::mem_fun(*this, &PluginSelector::display_selection_changed));
plugin_display.grab_focus();
- btn_update->signal_clicked().connect (sigc::mem_fun(*this, &PluginSelector::btn_update_clicked));
btn_add->signal_clicked().connect(sigc::mem_fun(*this, &PluginSelector::btn_add_clicked));
btn_remove->signal_clicked().connect(sigc::mem_fun(*this, &PluginSelector::btn_remove_clicked));
added_list.get_selection()->signal_changed().connect (sigc::mem_fun(*this, &PluginSelector::added_list_selection_changed));
btn_add->signal_clicked().connect(sigc::mem_fun(*this, &PluginSelector::btn_add_clicked));
btn_remove->signal_clicked().connect(sigc::mem_fun(*this, &PluginSelector::btn_remove_clicked));
added_list.get_selection()->signal_changed().connect (sigc::mem_fun(*this, &PluginSelector::added_list_selection_changed));
+ added_list.signal_button_press_event().connect_notify (mem_fun(*this, &PluginSelector::added_row_clicked));
refill ();
}
refill ();
}
@@
-201,6
+199,13
@@
PluginSelector::row_activated(Gtk::TreeModel::Path, Gtk::TreeViewColumn*)
btn_add_clicked();
}
btn_add_clicked();
}
+void
+PluginSelector::added_row_clicked(GdkEventButton* event)
+{
+ if (event->type == GDK_2BUTTON_PRESS)
+ btn_remove_clicked();
+}
+
bool
PluginSelector::show_this_plugin (const PluginInfoPtr& info, const std::string& filterstr)
{
bool
PluginSelector::show_this_plugin (const PluginInfoPtr& info, const std::string& filterstr)
{
@@
-310,9
+315,17
@@
PluginSelector::refiller (const PluginInfoList& plugs, const::std::string& filte
string::size_type pos = 0;
/* stupid LADSPA creator strings */
string::size_type pos = 0;
/* stupid LADSPA creator strings */
-
+#ifdef PLATFORM_WINDOWS
+ while (pos < creator.length() && creator[pos] > -2 && creator[pos] < 256 && (isalnum (creator[pos]) || isspace (creator[pos]))) ++pos;
+#else
while (pos < creator.length() && (isalnum (creator[pos]) || isspace (creator[pos]))) ++pos;
while (pos < creator.length() && (isalnum (creator[pos]) || isspace (creator[pos]))) ++pos;
- creator = creator.substr (0, pos);
+#endif
+ // If there were too few characters to create a
+ // meaningful name, mark this creator as 'Unknown'
+ if (creator.length()<2 || pos<3)
+ creator = "Unknown";
+ else
+ creator = creator.substr (0, pos);
newrow[plugin_columns.creator] = creator;
newrow[plugin_columns.creator] = creator;
@@
-429,13
+442,6
@@
PluginSelector::btn_remove_clicked()
}
}
}
}
-void
-PluginSelector::btn_update_clicked()
-{
- manager.refresh ();
- refill();
-}
-
void
PluginSelector::display_selection_changed()
{
void
PluginSelector::display_selection_changed()
{
@@
-538,13
+544,13
@@
struct PluginMenuCompareByCreator {
bool operator() (PluginInfoPtr a, PluginInfoPtr b) const {
int cmp;
bool operator() (PluginInfoPtr a, PluginInfoPtr b) const {
int cmp;
- cmp =
g_strcasecmp (a->creator.c_str(), b->creator.c_str()
);
+ cmp =
cmp_nocase_utf8 (a->creator, b->creator
);
if (cmp < 0) {
return true;
} else if (cmp == 0) {
/* same creator ... compare names */
if (cmp < 0) {
return true;
} else if (cmp == 0) {
/* same creator ... compare names */
- if (
g_strcasecmp (a->name.c_str(), b->name.c_str()
) < 0) {
+ if (
cmp_nocase_utf8 (a->name, b->name
) < 0) {
return true;
}
}
return true;
}
}
@@
-556,7
+562,7
@@
struct PluginMenuCompareByName {
bool operator() (PluginInfoPtr a, PluginInfoPtr b) const {
int cmp;
bool operator() (PluginInfoPtr a, PluginInfoPtr b) const {
int cmp;
- cmp =
g_strcasecmp (a->name.c_str(), b->name.c_str()
);
+ cmp =
cmp_nocase_utf8 (a->name, b->name
);
if (cmp < 0) {
return true;
if (cmp < 0) {
return true;
@@
-574,13
+580,13
@@
struct PluginMenuCompareByCategory {
bool operator() (PluginInfoPtr a, PluginInfoPtr b) const {
int cmp;
bool operator() (PluginInfoPtr a, PluginInfoPtr b) const {
int cmp;
- cmp =
g_strcasecmp (a->category.c_str(), b->category.c_str()
);
+ cmp =
cmp_nocase_utf8 (a->category, b->category
);
if (cmp < 0) {
return true;
} else if (cmp == 0) {
/* same category ... compare names */
if (cmp < 0) {
return true;
} else if (cmp == 0) {
/* same category ... compare names */
- if (
g_strcasecmp (a->name.c_str(), b->name.c_str()
) < 0) {
+ if (
cmp_nocase_utf8 (a->name, b->name
) < 0) {
return true;
}
}
return true;
}
}
@@
-681,8
+687,21
@@
PluginSelector::create_by_creator_menu (ARDOUR::PluginInfoList& all_plugs)
/* stupid LADSPA creator strings */
string::size_type pos = 0;
/* stupid LADSPA creator strings */
string::size_type pos = 0;
+#ifdef PLATFORM_WINDOWS
+ while (pos < creator.length() && creator[pos]>(-2) && creator[pos]<256 && (isprint (creator[pos]))) ++pos;
+#else
while (pos < creator.length() && (isalnum (creator[pos]) || isspace (creator[pos]))) ++pos;
while (pos < creator.length() && (isalnum (creator[pos]) || isspace (creator[pos]))) ++pos;
- creator = creator.substr (0, pos);
+#endif
+
+ // Check to see if we found any invalid characters.
+ if (creator.length() != pos) {
+ // If there were too few characters to create a
+ // meaningful name, mark this creator as 'Unknown'
+ if (pos<3)
+ creator = "Unknown?";
+ else
+ creator = creator.substr (0, pos);
+ }
SubmenuMap::iterator x;
Gtk::Menu* submenu;
SubmenuMap::iterator x;
Gtk::Menu* submenu;