/* keyresponses.h
 * function prototypes for responses to user keypresses
 *
 * for Denemo, a gtk+ frontend to GNU Lilypond
 * (c) 1999-2005 Matthew Hiller
 */

#ifndef KEYRESPONSES_H
#define KEYRESPONSES_H

#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include "commandfuncs.h"
#include <denemo/denemo.h>
#include "draw.h"
#include "selectops.h"
#include "chordops.h"
#include "objops.h"


gint scorearea_keypress_event (GtkWidget * widget, GdkEventKey * event);
gint scorearea_keyrelease_event (GtkWidget * widget, GdkEventKey * event);
gint scorearea_button_press (GtkWidget * widget, GdkEventButton * event);
gint scorearea_button_release (GtkWidget * widget, GdkEventButton * event);

gboolean intercept_scorearea_keypress (GdkEventKey * pevent);

void adjust_measure_less_width_key (DenemoGUI * gui);
void adjust_measure_more_width_key (DenemoGUI * gui);
void adjust_staff_less_height_key (DenemoGUI * gui);
void adjust_staff_more_height_key (DenemoGUI * gui);
void unset_selection_key (DenemoGUI * gui);
void insert_chord_key (DenemoGUI * gui);
void go_to_A_key (DenemoGUI * gui);
void go_to_B_key (DenemoGUI * gui);
void go_to_C_key (DenemoGUI * gui);
void go_to_D_key (DenemoGUI * gui);
void go_to_E_key (DenemoGUI * gui);
void go_to_F_key (DenemoGUI * gui);
void go_to_G_key (DenemoGUI * gui);
void octave_up_key (DenemoGUI * gui);
void octave_down_key (DenemoGUI * gui);
void rest_toggle_key (DenemoGUI * gui);
void toggle_blank (DenemoGUI * gui);
void append_measure_key (DenemoGUI * gui);
void insert_measure_key (DenemoGUI * gui);


void insert_chord_0key (DenemoGUI * gui);
void insert_chord_1key (DenemoGUI * gui);
void insert_chord_2key (DenemoGUI * gui);
void insert_chord_3key (DenemoGUI * gui);
void insert_chord_4key (DenemoGUI * gui);
void insert_chord_5key (DenemoGUI * gui);
void insert_chord_6key (DenemoGUI * gui);
void insert_chord_7key (DenemoGUI * gui);
void insert_chord_8key (DenemoGUI * gui);
void insert_blankchord_0key (DenemoGUI * gui);
void insert_blankchord_1key (DenemoGUI * gui);
void insert_blankchord_2key (DenemoGUI * gui);
void insert_blankchord_3key (DenemoGUI * gui);
void insert_blankchord_4key (DenemoGUI * gui);
void insert_blankchord_5key (DenemoGUI * gui);
void insert_blankchord_6key (DenemoGUI * gui);
void insert_blankchord_7key (DenemoGUI * gui);
void insert_blankchord_8key (DenemoGUI * gui);
void insert_rest_0key (DenemoGUI * gui);
void insert_rest_1key (DenemoGUI * gui);
void insert_rest_2key (DenemoGUI * gui);
void insert_rest_3key (DenemoGUI * gui);
void insert_rest_4key (DenemoGUI * gui);
void insert_rest_5key (DenemoGUI * gui);
void insert_rest_6key (DenemoGUI * gui);
void insert_rest_7key (DenemoGUI * gui);
void insert_rest_8key (DenemoGUI * gui);

void insert_duplet (DenemoGUI * gui);
void insert_triplet (DenemoGUI * gui);
void start_triplet (DenemoGUI * gui);
void end_tuplet (DenemoGUI * gui);



void insert_quadtuplet (DenemoGUI * gui);
void insert_quintuplet (DenemoGUI * gui);
void insert_sextuplet (DenemoGUI * gui);
void insert_septuplet (DenemoGUI * gui);
gboolean add_tone_key (DenemoGUI * gui);
gboolean remove_tone_key (DenemoGUI * gui);
void deletepreviousobject (DenemoGUI * gui);
void sharpen_key (DenemoGUI * gui);
void stem_up (DenemoGUI * gui);
void stem_down (DenemoGUI * gui);
void flatten_key (DenemoGUI * gui);
void pending_flatten (DenemoGUI * gui);
void pending_sharpen (DenemoGUI * gui);
void tie_notes_key (DenemoGUI * gui);
void add_dot_key (DenemoGUI * gui);
void remove_dot_key (DenemoGUI * gui);
void insert_clone_key (DenemoGUI * gui);
void add_mordent (DenemoGUI * gui);
void add_turn (DenemoGUI * gui);
void set_grace (DenemoGUI * gui);

void force_cautionary (DenemoGUI * gui);
void change_pitch (DenemoGUI * gui);
void add_coda (DenemoGUI * gui);
void add_flageolet (DenemoGUI * gui);
void add_open (DenemoGUI * gui);
void add_prallmordent (DenemoGUI * gui);
void add_prallprall (DenemoGUI * gui);
void add_prall (DenemoGUI * gui);
void add_reverseturn (DenemoGUI * gui);
void add_segno (DenemoGUI * gui);
void add_sforzato (DenemoGUI * gui);
void add_stopped (DenemoGUI * gui);
void add_thumb (DenemoGUI * gui);
void add_trillelement (DenemoGUI * gui);
void add_trill_element (DenemoGUI * gui);
void add_upprall (DenemoGUI * gui);
void add_arpeggio (DenemoGUI * gui);
void default_mode (DenemoGUI * gui);
void replace_mode (DenemoGUI * gui);
void insert_mode (DenemoGUI * gui);
void insert_opencloserepeat (DenemoGUI * gui);
void insert_closerepeat (DenemoGUI * gui);
void insert_openrepeat (DenemoGUI * gui);
void insert_endbar (DenemoGUI * gui);
void insert_doublebar (DenemoGUI * gui);
void blank_mode (GtkAction * action, DenemoGUI * gui);
void newcleftreble (DenemoGUI * gui);
void newclefbass (DenemoGUI * gui);
void newclefg8 (DenemoGUI * gui);
void newclefalto (DenemoGUI * gui);
void newcleftenor (DenemoGUI * gui);
void newclefsoprano (DenemoGUI * gui);

void setcleftreble (DenemoGUI * gui);
void setclefbass (DenemoGUI * gui);
void setclefg8 (DenemoGUI * gui);
void setclefalto (DenemoGUI * gui);
void setcleftenor (DenemoGUI * gui);
void setclefsoprano (DenemoGUI * gui);

void newtimesig22 (DenemoGUI * gui);
void newtimesig42 (DenemoGUI * gui);
void newtimesig32 (DenemoGUI * gui);
void newtimesig44 (DenemoGUI * gui);
void newtimesig54 (DenemoGUI * gui);
void newtimesig24 (DenemoGUI * gui);
void newtimesig34 (DenemoGUI * gui);
void newtimesig68 (DenemoGUI * gui);
void newtimesig128 (DenemoGUI * gui);
void newtimesig38 (DenemoGUI * gui);
void newtimesig98 (DenemoGUI * gui);
void newtimesig64 (DenemoGUI * gui);


void settimesig22 (DenemoGUI * gui);
void settimesig42 (DenemoGUI * gui);
void settimesig32 (DenemoGUI * gui);
void settimesig44 (DenemoGUI * gui);
void settimesig54 (DenemoGUI * gui);
void settimesig24 (DenemoGUI * gui);
void settimesig34 (DenemoGUI * gui);
void settimesig68 (DenemoGUI * gui);
void settimesig128 (DenemoGUI * gui);
void settimesig38 (DenemoGUI * gui);
void settimesig98 (DenemoGUI * gui);
void settimesig64 (DenemoGUI * gui);

void newkeysigcmaj (DenemoGUI * gui);
void newkeysiggmaj (DenemoGUI * gui);
void newkeysigdmaj (DenemoGUI * gui);
void newkeysigamaj (DenemoGUI * gui);
void newkeysigemaj (DenemoGUI * gui);
void newkeysigbmaj (DenemoGUI * gui);
void newkeysigfsharpmaj (DenemoGUI * gui);
void newkeysigcsharpmaj (DenemoGUI * gui);
void newkeysigfmaj (DenemoGUI * gui);
void newkeysigbflatmaj (DenemoGUI * gui);
void newkeysigeflatmaj (DenemoGUI * gui);
void newkeysigaflatmaj (DenemoGUI * gui);
void newkeysigdflatmaj (DenemoGUI * gui);
void newkeysiggflatmaj (DenemoGUI * gui);
void newkeysigcflatmaj (DenemoGUI * gui);

void newkeysigamin (DenemoGUI * gui);
void newkeysigemin (DenemoGUI * gui);
void newkeysigbmin (DenemoGUI * gui);
void newkeysigfsharpmin (DenemoGUI * gui);
void newkeysigcsharpmin (DenemoGUI * gui);
void newkeysiggsharpmin (DenemoGUI * gui);
void newkeysigdsharpmin (DenemoGUI * gui);
void newkeysigasharpmin (DenemoGUI * gui);
void newkeysigdmin (DenemoGUI * gui);
void newkeysiggmin (DenemoGUI * gui);
void newkeysigcmin (DenemoGUI * gui);
void newkeysigfmin (DenemoGUI * gui);
void newkeysigbflatmin (DenemoGUI * gui);
void newkeysigeflatmin (DenemoGUI * gui);
void newkeysigaflatmin (DenemoGUI * gui);


void setkeysigcmaj (DenemoGUI * gui);
void setkeysiggmaj (DenemoGUI * gui);
void setkeysigdmaj (DenemoGUI * gui);
void setkeysigamaj (DenemoGUI * gui);
void setkeysigemaj (DenemoGUI * gui);
void setkeysigbmaj (DenemoGUI * gui);
void setkeysigfsharpmaj (DenemoGUI * gui);
void setkeysigcsharpmaj (DenemoGUI * gui);
void setkeysigfmaj (DenemoGUI * gui);
void setkeysigbflatmaj (DenemoGUI * gui);
void setkeysigeflatmaj (DenemoGUI * gui);
void setkeysigaflatmaj (DenemoGUI * gui);
void setkeysigdflatmaj (DenemoGUI * gui);
void setkeysiggflatmaj (DenemoGUI * gui);
void setkeysigcflatmaj (DenemoGUI * gui);

void setkeysigamin (DenemoGUI * gui);
void setkeysigemin (DenemoGUI * gui);
void setkeysigbmin (DenemoGUI * gui);
void setkeysigfsharpmin (DenemoGUI * gui);
void setkeysigcsharpmin (DenemoGUI * gui);
void setkeysiggsharpmin (DenemoGUI * gui);
void setkeysigdsharpmin (DenemoGUI * gui);
void setkeysigasharpmin (DenemoGUI * gui);
void setkeysigdmin (DenemoGUI * gui);
void setkeysiggmin (DenemoGUI * gui);
void setkeysigcmin (DenemoGUI * gui);
void setkeysigfmin (DenemoGUI * gui);
void setkeysigbflatmin (DenemoGUI * gui);
void setkeysigeflatmin (DenemoGUI * gui);
void setkeysigaflatmin (DenemoGUI * gui);


void append_measure_score (DenemoGUI * gui);

gchar *process_key_event (GdkEventKey * event, gchar * perform_command ());

#endif //KEYRESPONSES_H
