summaryrefslogtreecommitdiffstats
path: root/src/Legend.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2020-11-27 17:58:05 +0100
committerDavid Robillard <d@drobilla.net>2020-11-27 21:42:52 +0100
commit671f6e378274e0c4842dd2cc23d47efb17978181 (patch)
treec7b62780a1fcddd7e7f9b1c67696713a747aafc4 /src/Legend.hpp
parentc9201b59713f400c72f5a160c2e858987d466351 (diff)
downloadpatchage-671f6e378274e0c4842dd2cc23d47efb17978181.tar.gz
patchage-671f6e378274e0c4842dd2cc23d47efb17978181.tar.bz2
patchage-671f6e378274e0c4842dd2cc23d47efb17978181.zip
Move Legend implementation to a separate source file
Diffstat (limited to 'src/Legend.hpp')
-rw-r--r--src/Legend.hpp62
1 files changed, 8 insertions, 54 deletions
diff --git a/src/Legend.hpp b/src/Legend.hpp
index cb05faf..c1563e9 100644
--- a/src/Legend.hpp
+++ b/src/Legend.hpp
@@ -1,5 +1,5 @@
/* This file is part of Patchage.
- * Copyright 2014 David Robillard <http://drobilla.net>
+ * Copyright 2014-2020 David Robillard <d@drobilla.net>
*
* Patchage is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free
@@ -21,66 +21,20 @@
#include <gtkmm/box.h>
#include <gtkmm/colorbutton.h>
-#include <gtkmm/label.h>
+#include <sigc++/sigc++.h>
+
+#include <string>
class Legend : public Gtk::HBox
{
public:
- explicit Legend(const Configuration& configuration)
- {
- add_button(PortType::jack_audio,
- "Audio",
- configuration.get_port_color(PortType::jack_audio));
-
-#ifdef HAVE_JACK_METADATA
- add_button(PortType::jack_cv,
- "CV",
- configuration.get_port_color(PortType::jack_cv));
- add_button(PortType::jack_osc,
- "OSC",
- configuration.get_port_color(PortType::jack_osc));
-#endif
-
- add_button(PortType::jack_midi,
- "MIDI",
- configuration.get_port_color(PortType::jack_midi));
-
- add_button(PortType::alsa_midi,
- "ALSA MIDI",
- configuration.get_port_color(PortType::alsa_midi));
+ explicit Legend(const Configuration& configuration);
- show_all_children();
- }
+ void add_button(PortType id, const std::string& label, uint32_t rgba);
- void add_button(const PortType id, const std::string& label, uint32_t rgba)
- {
- Gdk::Color col;
- col.set_rgb(((rgba >> 24) & 0xFF) * 0x100,
- ((rgba >> 16) & 0xFF) * 0x100,
- ((rgba >> 8) & 0xFF) * 0x100);
- auto* box = new Gtk::HBox();
- auto* but = new Gtk::ColorButton(col);
- but->set_use_alpha(false);
- but->signal_color_set().connect(sigc::bind(
- sigc::mem_fun(this, &Legend::on_color_set), id, label, but));
-
- box->pack_end(*Gtk::manage(but));
- box->pack_end(*Gtk::manage(new Gtk::Label(label)), false, false, 2);
-
- this->pack_start(*Gtk::manage(box), false, false, 6);
- }
-
- void on_color_set(const PortType id,
+ void on_color_set(PortType id,
const std::string& label,
- const Gtk::ColorButton* but)
- {
- const Gdk::Color col = but->get_color();
- const uint32_t rgba = (((col.get_red() / 0x100) << 24) |
- ((col.get_green() / 0x100) << 16) |
- ((col.get_blue() / 0x100) << 8) | 0xFF);
-
- signal_color_changed.emit(id, label, rgba);
- }
+ const Gtk::ColorButton* but);
sigc::signal<void, PortType, std::string, uint32_t> signal_color_changed;
};