1 /*
2    gnaural.h
3    Copyright (C) 2008  Bret Logan
4 
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 2 of the License, or
8    (at your option) any later version.
9 
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14 
15    You should have received a copy of the GNU General Public License
16    along with this program; if not, write to the Free Software
17    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  */
19 #ifndef _GNAURAL_MAIN_H_
20 #define _GNAURAL_MAIN_H_
21 #include "ScheduleGUI.h"
22 
23 extern GtkWidget *main_window;
24 extern GtkWidget *main_drawing_area;
25 extern GtkToggleButton *main_togglebuttonViewFreq;
26 extern GtkToggleButton *main_togglebuttonViewBeat;
27 extern GtkToggleButton *main_togglebuttonViewVol;
28 extern GtkToggleButton *main_togglebuttonViewBal;
29 extern GThread *main_thread_WriteEngineWAV;
30 extern GtkVBox *main_vboxVoices;
31 
32 extern char main_sTmp[];
33 
34 //general string that can be written to at any time by anything
35 //so long as "anything" isn't in a different thread
36 extern char gnaural_tmpstr[];
37 extern char main_GnauralIcon[4648];
38 extern char main_GnauralHelpShort[];
39 extern char main_GnauralHelp[];
40 extern gchar main_DefaultSchedule[];
41 extern char *main_Info_Description;
42 extern char *main_Info_Author;
43 extern char *main_Info_Title;
44 
45 extern int main_gnaural_guiflag;        //will be set internall to TRUE if there is a GUI
46 extern gchar main_sCurrentGnauralFilenameAndPath[];     // ~/.gnaural/schedule.gnaural
47 
48 //NOTE: in main.c also has static int mainPA_MyCallback ();
49 
50 extern gboolean main_XY_scaleflag;
51 extern void main_on_checkbutton_MagneticPointer_toggled (GtkToggleButton *
52                                                          togglebutton);
53 
54 //START Globals taken from ScheduleGUI:
55 extern void main_LoadBinauralBeatSoundEngine ();        // Takes SG data and connects it to BB data
56 extern int main_TestPathOrFileExistence (char *PathName);
57 extern void main_quit ();
58 extern void main_EventToKeypress (guint state, guint keyval);
59 extern void main_AboutDialogBox (void);
60 extern void main_activate_url (GtkAboutDialog * about,
61                                const gchar * url, gpointer data);
62 extern void main_UpdateGUI_Progressbar (void);
63 extern gboolean main_UpdateGUI (gpointer data);
64 extern void main_SetGraphType (GtkToggleButton * togglebutton);
65 extern void main_SetGraphToggle (GtkWidget * widget);
66 extern void main_OnButton_VoicesVisible (GtkButton * button);
67 extern void main_OnButton_Play (GtkButton * button);
68 extern void main_OnButton_ForwardRewind (float amount);
69 extern void main_OnButton_Stop (GtkButton * button);
70 extern void main_UpdateGUI_Status (gchar * msg);
71 extern void main_UpdateGUI_ProjectedRuntime ();
72 extern void main_UpdateGUI_Labels ();
73 extern void main_UpdateGUI_Statusbar (const char *msg1, const char *msg2);
74 extern void main_UpdateGUI_entryLoops ();
75 extern void main_UpdateGUI_UserDataInfo ();
76 extern void main_on_hscaleVolume (float range);
77 extern void main_on_hscaleBalance (float range);
78 extern void main_on_export_mp3_activate ();
79 extern void main_on_export_audio_to_file_activate ();
80 extern void main_AudioWriteFile_start ();
81 extern void main_AudioWriteFile (void *ptr);
82 extern void main_on_edit_activate ();
83 extern int main_MessageDialogBox (char *msg,
84                                   GtkMessageType messagetype,
85                                   GtkButtonsType buttonformation);
86 extern void main_Cleanup ();
87 extern void main_on_entryLoops_activate (GtkEntry * entry,
88                                          gpointer user_data);
89 extern void main_SetLoops (unsigned int loops);
90 extern void main_SetIcon ();
91 extern void main_SetupPathsAndFiles (int bDefaultFlag); //TRUE sets up $HOME/gnaural.schedule, FALSE works with whatever is in main_sCurrentGnauralFilenameAndPath
92 extern void main_InterceptCtrl_C (int sig);
93 extern void main_ParseCmdLine (int argc, char *argv[]);
94 extern void main_RunCmdLineMode ();
95 extern void main_UpdateTerminalGUI (FILE * gstream);
96 extern void main_key_arrowkeyhandler (GtkWidget * widget,
97                                       int vertical, int horizontal);
98 extern gboolean main_key_press_event (GtkWidget * widget,
99                                       GdkEventKey * event);
100 extern gboolean main_key_release_event (GtkWidget * widget,
101                                         GdkEventKey * event);
102 extern gboolean main_realize (GtkWidget * widget, GdkEventConfigure * event);
103 extern gboolean main_expose_event (GtkWidget * widget,
104                                    GdkEventExpose * event);
105 extern gboolean main_delete_event (GtkWidget * window,
106                                    GdkEvent * e, gpointer data);
107 extern gboolean main_button_release_event (GtkWidget * widget,
108                                            GdkEventButton * event);
109 extern gboolean main_button_press_event (GtkWidget * widget,
110                                          GdkEventButton * event);
111 extern gboolean main_configure_event (GtkWidget * widget,
112                                       GdkEventConfigure * event);
113 extern gboolean main_motion_notify_event (GtkWidget * widget,
114                                           GdkEventMotion * event);
115 extern int main_GNAURAL1FILE_SchedFilenameToSchedule (char *filename);  //handles original (obsolete) Gnaural file format
116 extern void main_GNAURAL1FILE_ParseCmd (FILE * stream); //handles original (obsolete) Gnaural file format
117 extern void main_GNAURAL1FILE_SchedBuffToSchedule (char *str);  //handles original (obsolete) Gnaural file format
118 extern gchar *main_OpenFileDialog (gchar * strUserfilter, char *path);  //returns NULL or valid string that must be freed with g_free()
119 //extern gchar *main_SaveFileDialog (const char *setname);//returns NULL or valid string that must be freed with g_free()
120 extern void main_WriteDefaultFile ();
121 extern void main_OnUserSaveAsFile ();   //from Gnaural1 20070304. Saves file; checks for File existence before save
122 extern int main_AskForSaveAsFilename (char *userfilename);      //from Gnaural1 20070304, replaced main_SaveFileDialog()
123 extern gboolean main_VoicePropertiesDialog (GtkWidget * widget,
124                                             SG_Voice * userVoice);
125 extern int main_InitGlade ();   //returns 0 on success
126 extern void main_on_revert_activate (GtkMenuItem * menuitem,
127                                      gpointer user_data);
128 extern void main_NewGraph (int voices);
129 extern void main_UpdateGUI_FileInfo (char *filename);
130 extern void main_ClearDataPointsInVoices ();
131 extern void main_UpdateGUI_PlaceInGraph ();
132 extern double main_AskUserForNumberDialog (char *title,
133                                            char *question,
134                                            double *startingval);
135 extern gboolean main_SetScheduleInfo (gboolean FillEntriesFlag);
136 extern void main_DuplicateSelectedVoice ();
137 extern void main_ScaleDataPoints_Time (GtkWidget * widget);
138 extern void main_DeleteSelectedVoice (GtkWidget * widget);
139 extern void main_ScaleDatPoints_Y (GtkWidget * widget);
140 extern void main_AddRandomToDataPoints_Y (GtkWidget * widget);
141 extern void main_AddRandomToDataPoints_time (GtkWidget * widget);
142 extern void main_AddToDataPoints_Y (GtkWidget * widget);
143 extern void main_AddToDataPoints_time (GtkWidget * widget);
144 extern void main_SelectInterval ();
145 extern void main_SelectNeighbor ();
146 extern void main_OpenFile (gboolean OpenMerge, char *path);
147 extern void main_ReverseVoice ();
148 extern void main_SelectLastDPs ();
149 extern void main_SelectFirstDPs ();
150 extern void main_TruncateSchedule ();
151 extern void main_PasteAtEnd ();
152 extern void main_InvertY ();
153 extern void main_SelectDuration_All ();
154 extern void main_SelectDuration_SinglePoint ();
155 extern void main_Preferences ();
156 extern void main_SelectDuration ();
157 extern void main_SelectProximity_All ();
158 extern void main_SelectProximity_SinglePoint ();
159 extern void main_ResetScheduleInfo ();
160 extern void main_Sleep (int microseconds);      //BB wants to call this as a function pointer
161 extern void main_DuplicateAllVoices ();
162 extern int main_LoadSoundFile (char *filename,
163                                int **buffer, unsigned int *size);
164 extern void main_ProcessAudioFile (char *filename,
165                                    int **buffer, unsigned int *size);
166 extern void main_CleanupAudioFileData ();
167 extern void main_ProcessVolBal ();
168 extern void main_vscale_Y_button_event (GtkWidget * widget, gboolean pressed);
169 extern void main_vscale_Y_value_change (GtkRange * range);
170 extern void main_hscale_X_button_event (GtkWidget * widget, gboolean pressed);
171 extern void main_hscale_X_value_change (GtkRange * range);
172 extern void main_slider_XY_handler (float vertical, float horizontal);
173 extern void main_FormatProgressString ();
174 extern void main_DialogAddFileFilters (GtkWidget * dialog,
175                                        gchar * strFilterString);
176 extern void main_MakeAudioFormatsFileFilterString (gchar * strUserfilter,
177                                                    int size);
178 extern void main_OnDragDataReceived (GtkWidget * wgt,
179                                      GdkDragContext * context, int x, int y,
180                                      GtkSelectionData * seldata, guint info,
181                                      guint time, gpointer userdata);
182 extern void main_RoundValues ();
183 extern void main_GnauralNet_StopStart (GtkMenuItem * menuitem);
184 extern void main_GnauralNet_JoinFriend (GtkMenuItem * menuitem);
185 extern void main_GnauralNet_PhaseInfo (GtkMenuItem * menuitem);
186 extern void main_GnauralNet_ShowInfo (GtkMenuItem * menuitem);
187 extern void main_AskUserForIP_Port (char *title, char *question, char *IP,
188                                     unsigned short Port, int type);
189 extern int main_CheckSndfileVersion (void);
190 extern int main_CheckSndfileFormat (int format);
191 extern void main_progressbar_button_press_event (GtkWidget * widget,
192                                                  GdkEventButton * event);
193 extern int main_playAudio_SoundInit ();
194 extern void main_SelectFont ();
195 extern void main_DataPointSize ();
196 extern void main_OpenFromLibrary ();
197 extern void main_VoiceInfoFormatter_type (SG_Voice * curVoice, char *tmstr);
198 extern void main_VoiceInfoFormatter (SG_Voice * curVoice);
199 extern double Stopwatch ();     //20101109
200 extern void main_PhaseInfoToggle (unsigned int ip, unsigned short port);
201 extern void main_DPPropertiesDialog ();
202 #endif
203