Rename PianoKeyboard class, avoid ambiguities

A C++ class "PianoKeyboard" in the global namespace may cause
issues with some plugins that export and use an identically
named symbol.
This commit is contained in:
Robin Gareus 2019-10-25 18:01:08 +02:00
parent 61f32339ef
commit c0c1fd8b60
No known key found for this signature in database
GPG key ID: A090BCE02CF57F04
10 changed files with 82 additions and 94 deletions

View file

@ -139,7 +139,7 @@ GenericPluginUI::GenericPluginUI (boost::shared_ptr<PluginInsert> pi, bool scrol
VBox* v1_box = manage (new VBox); VBox* v1_box = manage (new VBox);
VBox* v2_box = manage (new VBox); VBox* v2_box = manage (new VBox);
if (pi->is_instrument ()) { if (pi->is_instrument ()) {
_piano = new PianoKeyboard (); _piano = new APianoKeyboard ();
_piano->set_flags(Gtk::CAN_FOCUS); _piano->set_flags(Gtk::CAN_FOCUS);
_piano->NoteOn.connect (sigc::mem_fun (*this, &GenericPluginUI::note_on_event_handler)); _piano->NoteOn.connect (sigc::mem_fun (*this, &GenericPluginUI::note_on_event_handler));

View file

@ -22,7 +22,7 @@
#include <stdint.h> #include <stdint.h>
#include "ardour_dialog.h" #include "ardour_dialog.h"
#include "gtk_pianokeyboard.h" #include "pianokeyboard.h"
class NoteSelectDialog : public ArdourDialog class NoteSelectDialog : public ArdourDialog
{ {
@ -32,7 +32,7 @@ public:
uint8_t note_number() const { return _note_number; } uint8_t note_number() const { return _note_number; }
private: private:
PianoKeyboard _piano; APianoKeyboard _piano;
uint8_t _note_number; uint8_t _note_number;
void note_on_event_handler(int, int); void note_on_event_handler(int, int);

View file

@ -32,7 +32,7 @@
#include "widgets/ardour_dropdown.h" #include "widgets/ardour_dropdown.h"
#include "ardour_dialog.h" #include "ardour_dialog.h"
#include "gtk_pianokeyboard.h" #include "pianokeyboard.h"
class PatchChangeWidget : public Gtk::VBox class PatchChangeWidget : public Gtk::VBox
{ {
@ -99,7 +99,7 @@ private:
uint8_t _audition_note_num; uint8_t _audition_note_num;
bool _audition_note_on; bool _audition_note_on;
PianoKeyboard _piano; APianoKeyboard _piano;
void _note_on_event_handler (int, int); void _note_on_event_handler (int, int);
void note_on_event_handler (int, bool for_audition); void note_on_event_handler (int, bool for_audition);

View file

@ -1,34 +1,21 @@
/*- /* Piano-keyboard based on jack-keyboard
*
* Copyright (C) 2019 Robin Gareus <robin@gareus.org>
* Copyright (c) 2007, 2008 Edward Tomasz Napierała <trasz@FreeBSD.org> * Copyright (c) 2007, 2008 Edward Tomasz Napierała <trasz@FreeBSD.org>
* All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * This program is free software; you can redistribute it and/or modify
* modification, are permitted provided that the following conditions * it under the terms of the GNU General Public License as published by
* are met: * the Free Software Foundation; either version 2 of the License, or
* 1. Redistributions of source code must retain the above copyright * (at your option) any later version.
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* *
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * This program is distributed in the hope that it will be useful,
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * but WITHOUT ANY WARRANTY; without even the implied warranty of
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * GNU General Public License for more details.
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* This is piano_keyboard, piano keyboard-like GTK+ widget. It contains
* no MIDI-specific code.
* *
* For questions and comments, contact Edward Tomasz Napierala <trasz@FreeBSD.org>. * You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/ */
#include <assert.h> #include <assert.h>
@ -43,7 +30,7 @@
#include <gdk/gdkkeysyms.h> #include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include "gtk_pianokeyboard.h" #include "pianokeyboard.h"
#ifndef M_PI #ifndef M_PI
# define M_PI 3.14159265358979323846 # define M_PI 3.14159265358979323846
@ -66,7 +53,7 @@
#define OCTAVE_MAX (7) #define OCTAVE_MAX (7)
void void
PianoKeyboard::annotate_layout (cairo_t* cr, int note) const APianoKeyboard::annotate_layout (cairo_t* cr, int note) const
{ {
int nkey = note - _octave * 12; int nkey = note - _octave * 12;
@ -111,7 +98,7 @@ PianoKeyboard::annotate_layout (cairo_t* cr, int note) const
} }
void void
PianoKeyboard::annotate_note (cairo_t* cr, int note) const APianoKeyboard::annotate_note (cairo_t* cr, int note) const
{ {
assert ((note % 12) == 0); assert ((note % 12) == 0);
@ -152,7 +139,7 @@ PianoKeyboard::annotate_note (cairo_t* cr, int note) const
} }
void void
PianoKeyboard::draw_note (cairo_t* cr, int note) const APianoKeyboard::draw_note (cairo_t* cr, int note) const
{ {
if (note < _min_note || note > _max_note) { if (note < _min_note || note > _max_note) {
return; return;
@ -211,13 +198,13 @@ PianoKeyboard::draw_note (cairo_t* cr, int note) const
} }
void void
PianoKeyboard::queue_note_draw (int note) APianoKeyboard::queue_note_draw (int note)
{ {
queue_draw_area (_notes[note].x, 0, _notes[note].w, _notes[note].h); queue_draw_area (_notes[note].x, 0, _notes[note].w, _notes[note].h);
} }
void void
PianoKeyboard::press_key (int key, int vel) APianoKeyboard::press_key (int key, int vel)
{ {
assert (key >= 0); assert (key >= 0);
assert (key < NNOTES); assert (key < NNOTES);
@ -253,7 +240,7 @@ PianoKeyboard::press_key (int key, int vel)
} }
void void
PianoKeyboard::release_key (int key) APianoKeyboard::release_key (int key)
{ {
assert (key >= 0); assert (key >= 0);
assert (key < NNOTES); assert (key < NNOTES);
@ -279,7 +266,7 @@ PianoKeyboard::release_key (int key)
} }
void void
PianoKeyboard::stop_unsustained_notes () APianoKeyboard::stop_unsustained_notes ()
{ {
for (int i = 0; i < NNOTES; ++i) { for (int i = 0; i < NNOTES; ++i) {
if (_notes[i].pressed && !_notes[i].sustained) { if (_notes[i].pressed && !_notes[i].sustained) {
@ -291,7 +278,7 @@ PianoKeyboard::stop_unsustained_notes ()
} }
void void
PianoKeyboard::stop_sustained_notes () APianoKeyboard::stop_sustained_notes ()
{ {
for (int i = 0; i < NNOTES; ++i) { for (int i = 0; i < NNOTES; ++i) {
if (_notes[i].sustained) { if (_notes[i].sustained) {
@ -304,7 +291,7 @@ PianoKeyboard::stop_sustained_notes ()
} }
int int
PianoKeyboard::key_binding (const char* key) const APianoKeyboard::key_binding (const char* key) const
{ {
if (_key_bindings.find (key) != _key_bindings.end ()) { if (_key_bindings.find (key) != _key_bindings.end ()) {
return _key_bindings.at (key); return _key_bindings.at (key);
@ -313,21 +300,21 @@ PianoKeyboard::key_binding (const char* key) const
} }
void void
PianoKeyboard::bind_key (const char* key, int note) APianoKeyboard::bind_key (const char* key, int note)
{ {
_key_bindings[key] = note; _key_bindings[key] = note;
_note_bindings[note] = key; _note_bindings[note] = key;
} }
void void
PianoKeyboard::clear_notes () APianoKeyboard::clear_notes ()
{ {
_key_bindings.clear (); _key_bindings.clear ();
_note_bindings.clear (); _note_bindings.clear ();
} }
void void
PianoKeyboard::bind_keys_qwerty () APianoKeyboard::bind_keys_qwerty ()
{ {
clear_notes (); clear_notes ();
@ -370,7 +357,7 @@ PianoKeyboard::bind_keys_qwerty ()
} }
void void
PianoKeyboard::bind_keys_qwertz () APianoKeyboard::bind_keys_qwertz ()
{ {
bind_keys_qwerty (); bind_keys_qwerty ();
@ -380,7 +367,7 @@ PianoKeyboard::bind_keys_qwertz ()
} }
void void
PianoKeyboard::bind_keys_azerty () APianoKeyboard::bind_keys_azerty ()
{ {
clear_notes (); clear_notes ();
@ -423,7 +410,7 @@ PianoKeyboard::bind_keys_azerty ()
} }
void void
PianoKeyboard::bind_keys_dvorak () APianoKeyboard::bind_keys_dvorak ()
{ {
clear_notes (); clear_notes ();
@ -476,7 +463,7 @@ PianoKeyboard::bind_keys_dvorak ()
} }
bool bool
PianoKeyboard::on_key_press_event (GdkEventKey* event) APianoKeyboard::on_key_press_event (GdkEventKey* event)
{ {
int note; int note;
char* key; char* key;
@ -528,13 +515,13 @@ PianoKeyboard::on_key_press_event (GdkEventKey* event)
} }
bool bool
PianoKeyboard::on_key_release_event (GdkEventKey* event) APianoKeyboard::on_key_release_event (GdkEventKey* event)
{ {
return on_key_press_event (event); return on_key_press_event (event);
} }
int int
PianoKeyboard::get_note_for_xy (int x, int y) const APianoKeyboard::get_note_for_xy (int x, int y) const
{ {
int height = get_height (); int height = get_height ();
int note; int note;
@ -565,7 +552,7 @@ PianoKeyboard::get_note_for_xy (int x, int y) const
} }
int int
PianoKeyboard::get_velocity_for_note_at_y (int note, int y) const APianoKeyboard::get_velocity_for_note_at_y (int note, int y) const
{ {
if (note < 0) { if (note < 0) {
return 0; return 0;
@ -581,7 +568,7 @@ PianoKeyboard::get_velocity_for_note_at_y (int note, int y) const
} }
bool bool
PianoKeyboard::on_button_press_event (GdkEventButton* event) APianoKeyboard::on_button_press_event (GdkEventButton* event)
{ {
int x = event->x; int x = event->x;
int y = event->y; int y = event->y;
@ -618,13 +605,13 @@ PianoKeyboard::on_button_press_event (GdkEventButton* event)
} }
bool bool
PianoKeyboard::on_button_release_event (GdkEventButton* event) APianoKeyboard::on_button_release_event (GdkEventButton* event)
{ {
return on_button_press_event (event); return on_button_press_event (event);
} }
bool bool
PianoKeyboard::on_motion_notify_event (GdkEventMotion* event) APianoKeyboard::on_motion_notify_event (GdkEventMotion* event)
{ {
int note; int note;
@ -648,7 +635,7 @@ PianoKeyboard::on_motion_notify_event (GdkEventMotion* event)
} }
bool bool
PianoKeyboard::on_expose_event (GdkEventExpose* event) APianoKeyboard::on_expose_event (GdkEventExpose* event)
{ {
cairo_t* cr = gdk_cairo_create (GDK_DRAWABLE (get_window ()->gobj ())); cairo_t* cr = gdk_cairo_create (GDK_DRAWABLE (get_window ()->gobj ()));
cairo_rectangle (cr, event->area.x, event->area.y, event->area.width, event->area.height); cairo_rectangle (cr, event->area.x, event->area.y, event->area.width, event->area.height);
@ -686,14 +673,14 @@ PianoKeyboard::on_expose_event (GdkEventExpose* event)
} }
void void
PianoKeyboard::on_size_request (Gtk::Requisition* requisition) APianoKeyboard::on_size_request (Gtk::Requisition* requisition)
{ {
requisition->width = PIANO_KEYBOARD_DEFAULT_WIDTH; requisition->width = PIANO_KEYBOARD_DEFAULT_WIDTH;
requisition->height = PIANO_KEYBOARD_DEFAULT_HEIGHT; requisition->height = PIANO_KEYBOARD_DEFAULT_HEIGHT;
} }
int int
PianoKeyboard::is_black (int key) const APianoKeyboard::is_black (int key) const
{ {
int note_in_octave = key % 12; int note_in_octave = key % 12;
switch (note_in_octave) { switch (note_in_octave) {
@ -710,7 +697,7 @@ PianoKeyboard::is_black (int key) const
} }
double double
PianoKeyboard::black_key_left_shift (int key) const APianoKeyboard::black_key_left_shift (int key) const
{ {
int note_in_octave = key % 12; int note_in_octave = key % 12;
switch (note_in_octave) { switch (note_in_octave) {
@ -731,7 +718,7 @@ PianoKeyboard::black_key_left_shift (int key) const
} }
void void
PianoKeyboard::recompute_dimensions () APianoKeyboard::recompute_dimensions ()
{ {
int note; int note;
int number_of_white_keys = 0; int number_of_white_keys = 0;
@ -781,13 +768,13 @@ PianoKeyboard::recompute_dimensions ()
} }
void void
PianoKeyboard::on_size_allocate (Gtk::Allocation& allocation) APianoKeyboard::on_size_allocate (Gtk::Allocation& allocation)
{ {
DrawingArea::on_size_allocate (allocation); DrawingArea::on_size_allocate (allocation);
recompute_dimensions (); recompute_dimensions ();
} }
PianoKeyboard::PianoKeyboard () APianoKeyboard::APianoKeyboard ()
{ {
using namespace Gdk; using namespace Gdk;
add_events (KEY_PRESS_MASK | KEY_RELEASE_MASK | BUTTON_PRESS_MASK | BUTTON_RELEASE_MASK | POINTER_MOTION_MASK | POINTER_MOTION_HINT_MASK); add_events (KEY_PRESS_MASK | KEY_RELEASE_MASK | BUTTON_PRESS_MASK | BUTTON_RELEASE_MASK | POINTER_MOTION_MASK | POINTER_MOTION_HINT_MASK);
@ -812,40 +799,40 @@ PianoKeyboard::PianoKeyboard ()
bind_keys_qwerty (); bind_keys_qwerty ();
} }
PianoKeyboard::~PianoKeyboard () APianoKeyboard::~APianoKeyboard ()
{ {
} }
void void
PianoKeyboard::set_keyboard_cue (bool enabled) APianoKeyboard::set_keyboard_cue (bool enabled)
{ {
_enable_keyboard_cue = enabled; _enable_keyboard_cue = enabled;
queue_draw (); queue_draw ();
} }
void void
PianoKeyboard::set_grand_piano_highlight (bool enabled) APianoKeyboard::set_grand_piano_highlight (bool enabled)
{ {
_highlight_grand_piano_range = enabled; _highlight_grand_piano_range = enabled;
queue_draw (); queue_draw ();
} }
void void
PianoKeyboard::show_note_label (bool enabled) APianoKeyboard::show_note_label (bool enabled)
{ {
_print_note_label = enabled; _print_note_label = enabled;
queue_draw (); queue_draw ();
} }
void void
PianoKeyboard::set_monophonic (bool monophonic) APianoKeyboard::set_monophonic (bool monophonic)
{ {
_monophonic = monophonic; _monophonic = monophonic;
} }
void void
PianoKeyboard::set_velocities (int min_vel, int max_vel, int key_vel) APianoKeyboard::set_velocities (int min_vel, int max_vel, int key_vel)
{ {
if (min_vel <= max_vel && min_vel > 0 && max_vel < 128) { if (min_vel <= max_vel && min_vel > 0 && max_vel < 128) {
_min_velocity = min_vel; _min_velocity = min_vel;
@ -858,7 +845,7 @@ PianoKeyboard::set_velocities (int min_vel, int max_vel, int key_vel)
} }
void void
PianoKeyboard::sustain_press () APianoKeyboard::sustain_press ()
{ {
if (!_sustain_new_notes) { if (!_sustain_new_notes) {
_sustain_new_notes = true; _sustain_new_notes = true;
@ -867,7 +854,7 @@ PianoKeyboard::sustain_press ()
} }
void void
PianoKeyboard::sustain_release () APianoKeyboard::sustain_release ()
{ {
if (_maybe_stop_sustained_notes) { if (_maybe_stop_sustained_notes) {
stop_sustained_notes (); stop_sustained_notes ();
@ -876,7 +863,7 @@ PianoKeyboard::sustain_release ()
} }
void void
PianoKeyboard::set_note_on (int note) APianoKeyboard::set_note_on (int note)
{ {
if (!_notes[note].pressed) { if (!_notes[note].pressed) {
_notes[note].pressed = true; _notes[note].pressed = true;
@ -885,7 +872,7 @@ PianoKeyboard::set_note_on (int note)
} }
void void
PianoKeyboard::set_note_off (int note) APianoKeyboard::set_note_off (int note)
{ {
if (_notes[note].pressed || _notes[note].sustained) { if (_notes[note].pressed || _notes[note].sustained) {
_notes[note].pressed = false; _notes[note].pressed = false;
@ -895,7 +882,7 @@ PianoKeyboard::set_note_off (int note)
} }
void void
PianoKeyboard::set_octave (int octave) APianoKeyboard::set_octave (int octave)
{ {
stop_unsustained_notes (); stop_unsustained_notes ();
@ -910,7 +897,7 @@ PianoKeyboard::set_octave (int octave)
} }
void void
PianoKeyboard::set_octave_range (int octave_range) APianoKeyboard::set_octave_range (int octave_range)
{ {
stop_unsustained_notes (); stop_unsustained_notes ();
@ -978,7 +965,7 @@ PianoKeyboard::set_octave_range (int octave_range)
} }
void void
PianoKeyboard::set_keyboard_layout (Layout layout) APianoKeyboard::set_keyboard_layout (Layout layout)
{ {
switch (layout) { switch (layout) {
case QWERTY: case QWERTY:

View file

@ -17,19 +17,19 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/ */
#ifndef __PIANO_KEYBOARD_H__ #ifndef _PIANO_KEYBOARD_H_
#define __PIANO_KEYBOARD_H__ #define _PIANO_KEYBOARD_H_
#include <map> #include <map>
#include <gtkmm/drawingarea.h> #include <gtkmm/drawingarea.h>
#define NNOTES (128) #define NNOTES (128)
class PianoKeyboard : public Gtk::DrawingArea class APianoKeyboard : public Gtk::DrawingArea
{ {
public: public:
PianoKeyboard (); APianoKeyboard ();
~PianoKeyboard (); ~APianoKeyboard ();
sigc::signal<void, int, int> NoteOn; sigc::signal<void, int, int> NoteOn;
sigc::signal<void, int> NoteOff; sigc::signal<void, int> NoteOff;
@ -141,4 +141,5 @@ private:
PangoFontDescription* _font_cue; PangoFontDescription* _font_cue;
PangoFontDescription* _font_octave; PangoFontDescription* _font_octave;
}; };
#endif /* __PIANO_KEYBOARD_H__ */
#endif

View file

@ -60,7 +60,7 @@
#include "ardour_window.h" #include "ardour_window.h"
#include "automation_controller.h" #include "automation_controller.h"
#include "gtk_pianokeyboard.h" #include "pianokeyboard.h"
namespace ARDOUR { namespace ARDOUR {
class PluginInsert; class PluginInsert;
@ -318,7 +318,7 @@ private:
Gtk::ScrolledWindow scroller; Gtk::ScrolledWindow scroller;
Gtk::Expander _plugin_pianokeyboard_expander; Gtk::Expander _plugin_pianokeyboard_expander;
PianoKeyboard* _piano; APianoKeyboard* _piano;
Gtk::VBox _pianobox; Gtk::VBox _pianobox;
Gtk::SpinButton _piano_velocity; Gtk::SpinButton _piano_velocity;
Gtk::SpinButton _piano_channel; Gtk::SpinButton _piano_channel;

View file

@ -28,7 +28,7 @@
#include <gtkmm2ext/bindings.h> #include <gtkmm2ext/bindings.h>
#include "ardour_window.h" #include "ardour_window.h"
#include "gtk_pianokeyboard.h" #include "pianokeyboard.h"
class StepEditor; class StepEditor;
@ -140,7 +140,7 @@ class StepEntry : public ArdourWindow
void velocity_value_change (); void velocity_value_change ();
void length_value_change (); void length_value_change ();
PianoKeyboard _piano; APianoKeyboard _piano;
StepEditor* se; StepEditor* se;

View file

@ -59,7 +59,7 @@ VirtualKeyboardWindow::VirtualKeyboardWindow ()
{ {
_piano.set_flags (Gtk::CAN_FOCUS); _piano.set_flags (Gtk::CAN_FOCUS);
_piano.set_keyboard_layout (PianoKeyboard::QWERTY); _piano.set_keyboard_layout (APianoKeyboard::QWERTY);
_piano.show_note_label (true); _piano.show_note_label (true);
using namespace Menu_Helpers; using namespace Menu_Helpers;
@ -386,13 +386,13 @@ void
VirtualKeyboardWindow::select_keyboard_layout (std::string const& l) VirtualKeyboardWindow::select_keyboard_layout (std::string const& l)
{ {
if (l == "QWERTY") { if (l == "QWERTY") {
_piano.set_keyboard_layout (PianoKeyboard::QWERTY); _piano.set_keyboard_layout (APianoKeyboard::QWERTY);
} else if (l == "QWERTZ") { } else if (l == "QWERTZ") {
_piano.set_keyboard_layout (PianoKeyboard::QWERTZ); _piano.set_keyboard_layout (APianoKeyboard::QWERTZ);
} else if (l == "AZERTY") { } else if (l == "AZERTY") {
_piano.set_keyboard_layout (PianoKeyboard::AZERTY); _piano.set_keyboard_layout (APianoKeyboard::AZERTY);
} else if (l == "DVORAK") { } else if (l == "DVORAK") {
_piano.set_keyboard_layout (PianoKeyboard::DVORAK); _piano.set_keyboard_layout (APianoKeyboard::DVORAK);
} }
} }

View file

@ -33,7 +33,7 @@
#include "widgets/slider_controller.h" #include "widgets/slider_controller.h"
#include "ardour_window.h" #include "ardour_window.h"
#include "gtk_pianokeyboard.h" #include "pianokeyboard.h"
namespace ARDOUR { namespace ARDOUR {
class Session; class Session;
@ -119,7 +119,7 @@ private:
bool toggle_note_label (GdkEventButton*); bool toggle_note_label (GdkEventButton*);
bool send_panic_message (GdkEventButton*); bool send_panic_message (GdkEventButton*);
PianoKeyboard _piano; APianoKeyboard _piano;
Gtk::SpinButton _piano_channel; Gtk::SpinButton _piano_channel;
Gtk::SpinButton _transpose_output; Gtk::SpinButton _transpose_output;

View file

@ -124,7 +124,7 @@ gtk2_ardour_sources = [
'ghostregion.cc', 'ghostregion.cc',
'global_port_matrix.cc', 'global_port_matrix.cc',
'group_tabs.cc', 'group_tabs.cc',
'gtk_pianokeyboard.cc', 'pianokeyboard.cc',
'gui_object.cc', 'gui_object.cc',
'idleometer.cc', 'idleometer.cc',
'insert_remove_time_dialog.cc', 'insert_remove_time_dialog.cc',