1 /************************************************
2 
3    Variables for temporary storage of data
4 
5 *************************************************/
6 
7 extern int        TG_reflectstore;
8 extern int        TG_graphstore;
9 extern int        TG_visualstore;
10 extern int        TG_P1spot, TG_P2spot;
11 extern int        TG_S1spot, TG_S2spot;
12 extern int        SpotActive[4];
13 extern int        TG_1spots, TG_2spots;
14 extern int        FitSpotS[16];
15 extern SpotLight  SpotStore[2][2];            /* surface spots             */
16 
17 /************************************************
18 
19    Global widgets
20 
21 *************************************************/
22 
23 
24 /* -------------------  entry fields (basic)  --------------------- */
25 
26 extern   GtkWidget   *e_101;         /* mass ratio                  */
27 extern   GtkWidget   *e_102;         /* inclination                 */
28 extern   GtkWidget   *e_103;         /* primary rochefill           */
29 extern   GtkWidget   *e_104;         /* secondary rochefill         */
30 extern   GtkWidget   *e_105;         /* primary temperature         */
31 extern   GtkWidget   *e_106;         /* secondary temperature       */
32 
33 /* ----------------  entry fields (advanced)  --------------------- */
34 
35 extern   GtkWidget   *e_107;         /* eccentricity                */
36 extern   GtkWidget   *e_108;         /* periastron length           */
37 extern   GtkWidget   *e_109;         /* primary F ratio             */
38 extern   GtkWidget   *e_110;         /* secondary F ratio           */
39 extern   GtkWidget   *e_111;         /* line rest wavelength        */
40 extern   GtkWidget   *e_112;         /* # of lightcurve steps       */
41 extern   GtkWidget   *e_113;         /* # of reflection iterations  */
42 
43 extern   GtkWidget   *e_114;         /* outer disk radius           */
44 extern   GtkWidget   *e_115;         /* inner disk radius           */
45 extern   GtkWidget   *e_116;         /* disk tilt                   */
46 extern   GtkWidget   *e_117;         /* disk warp                   */
47 extern   GtkWidget   *e_118;         /* disk thickness              */
48 extern   GtkWidget   *e_119;         /* disk H/R                    */
49 extern   GtkWidget   *e_120;         /* disk temperature            */
50 
51 extern   GtkWidget   *e_121;         /* primary log_g               */
52 extern   GtkWidget   *e_122;         /* secondary log_g             */
53 
54 extern   GtkWidget   *e_130;         /* hot spot temperature        */
55 extern   GtkWidget   *e_131;         /* hot spot longitude          */
56 extern   GtkWidget   *e_132;         /* hot spot extent             */
57 extern   GtkWidget   *e_133;         /* hot spot depth              */
58 extern   GtkWidget   *e_134;         /* hot spot puff               */
59 
60 extern   GtkWidget   *e_140;         /* Warp maximum                */
61 extern   GtkWidget   *e_141;         /* Warp longitude              */
62 extern   GtkWidget   *e_142;         /* Warp width                  */
63 extern   GtkWidget   *e_143;         /* Warp centre                 */
64 
65 
66 
67 /* ------------------  entry fields (fit)  ------------------------ */
68 
69 extern   GtkWidget   *e_name;        /* system name                 */
70 extern   GtkWidget   *e_301;         /* fit tolerance               */
71 extern   GtkWidget   *e_302;         /* period                      */
72 extern   GtkWidget   *e_303;         /* mass                        */
73 extern   GtkWidget   *e_304;         /* separation                  */
74 extern   GtkWidget   *e_305;         /* step1                       */
75 extern   GtkWidget   *e_306;         /* step2                       */
76 
77 /* -----------------------  entry fields (spots)  ----------------- */
78 
79 extern   GtkWidget   *e_401;         /* spot1 primary   longitude   */
80 extern   GtkWidget   *e_402;         /* spot1 primary   latitude    */
81 extern   GtkWidget   *e_403;         /* spot1 primary   radius      */
82 extern   GtkWidget   *e_404;         /* spot1 primary   dimfactor   */
83 extern   GtkWidget   *e_405;         /* spot2 primary   longitude   */
84 extern   GtkWidget   *e_406;         /* spot2 primary   latitude    */
85 extern   GtkWidget   *e_407;         /* spot2 primary   radius      */
86 extern   GtkWidget   *e_408;         /* spot2 primary   dimfactor   */
87 extern   GtkWidget   *e_409;         /* spot1 secondary longitude   */
88 extern   GtkWidget   *e_410;         /* spot1 secondary latitude    */
89 extern   GtkWidget   *e_411;         /* spot1 secondary radius      */
90 extern   GtkWidget   *e_412;         /* spot1 secondary dimfactor   */
91 extern   GtkWidget   *e_413;         /* spot2 secondary longitude   */
92 extern   GtkWidget   *e_414;         /* spot2 secondary latitude    */
93 extern   GtkWidget   *e_415;         /* spot2 secondary radius      */
94 extern   GtkWidget   *e_416;         /* spot2 secondary dimfactor   */
95 
96 /* ----------------------  entry fields (third light)  ------------ */
97 
98 extern   GtkWidget   *e_501;         /* third light U               */
99 extern   GtkWidget   *e_502;         /* third light B               */
100 extern   GtkWidget   *e_503;         /* third light V               */
101 extern   GtkWidget   *e_504;         /* third light R               */
102 extern   GtkWidget   *e_505;         /* third light I               */
103 extern   GtkWidget   *e_506;         /* third light J               */
104 extern   GtkWidget   *e_507;         /* third light H               */
105 extern   GtkWidget   *e_508;         /* third light K               */
106 extern   GtkWidget   *e_509;         /* third light u               */
107 extern   GtkWidget   *e_510;         /* third light v               */
108 extern   GtkWidget   *e_511;         /* third light b               */
109 extern   GtkWidget   *e_512;         /* third light y               */
110 
111 /* ------------------------  toggle buttons  ---------------------- */
112 
113 extern   GtkWidget   *t_anim_button;       /* toggle animated       */
114 extern   GtkWidget   *t_disk_button;       /* toggle disk on/off    */
115 extern   GtkWidget   *t_warp_button;       /* toggle warped disk    */
116 extern   GtkWidget   *t_eccentric_button;  /* toggle eccentric      */
117 extern   GtkWidget   *t_fpri_button;	   /* toggle asynchron pri. */
118 extern   GtkWidget   *t_fsec_button;	   /* toggle asynchron sec. */
119 extern   GtkWidget   *t_ssp1_button;       /* toggle spot1 sec.     */
120 extern   GtkWidget   *t_ssp2_button;       /* toggle spot2 sec.     */
121 extern   GtkWidget   *t_psp1_button;       /* toggle spot1 pri.     */
122 extern   GtkWidget   *t_psp2_button;       /* toggle spot2 pri.     */
123 extern   GtkWidget   *t_bbody_button;      /* toggle blackbody      */
124 extern   GtkWidget   *t_sian_button;       /* toggle simul.anneal   */
125 extern   GtkWidget   *t_mcmc_button;       /* toggle mcmc           */
126 
127 extern   GtkWidget   *td_button_0;         /* disk temp distribution*/
128 extern   GtkWidget   *td_button_1;         /* disk temp distribution*/
129 extern   GtkWidget   *td_button_2;         /* disk temp distribution*/
130 
131 extern   GtkWidget   *hs_temp_label;       /* hot spot temperature  */
132 extern   GtkWidget   *hs_longitude_label;  /* hot spot longitude    */
133 extern   GtkWidget   *hs_extent_label;     /* hot spot extent       */
134 extern   GtkWidget   *hs_depth_label;      /* hot spot depth        */
135 extern   GtkWidget   *hs_puff_label;       /* hot spot puff         */
136 
137 extern   GtkWidget   *wp_max_label;        /* warp maximum          */
138 extern   GtkWidget   *wp_longitude_label;  /* warp longitude        */
139 extern   GtkWidget   *wp_width_label;      /* warp width            */
140 extern   GtkWidget   *wp_centre_label;     /* warp centre           */
141 
142 
143 /* ------------------------  menu items (to grey out)  ------------ */
144 
145 extern   GtkWidget   *menu_plot;           /* plot lightcurve       */
146 extern   GtkWidget   *menu_profile;        /* line profiles         */
147 extern   GtkWidget   *ome_button;          /* fit omega             */
148 extern   GtkWidget   *ecc_button;          /* fit eccentricity      */
149 extern   GtkWidget   *as1_button;          /* fit async primary     */
150 extern   GtkWidget   *as2_button;          /* fit async secondary   */
151 extern   GtkWidget   *ref_label;           /* reflection label      */
152 extern   GtkWidget   *orad_label;          /* outer radius label    */
153 extern   GtkWidget   *irad_label;          /* inner radius label    */
154 extern   GtkWidget   *tilt_label;          /* disk tilt label       */
155 extern   GtkWidget   *warp_label;          /* disk warp label       */
156 extern   GtkWidget   *thick_label;         /* disk trickness label  */
157 extern   GtkWidget   *hr_label;            /* disk H/R label        */
158 extern   GtkWidget   *disktmp_label;       /* disk temperature label*/
159 
160 
161 /* --------------------------  misc            -------------------- */
162 
163 extern   GtkWidget   *progress_bar;        /* progress bar          */
164 extern   GtkWidget   *top_window;          /* the top window        */
165 extern   GtkWidget   *notebook;            /* the notebook          */
166 extern   GtkTooltips *tooltips;            /* the tooltips          */
167 
168 
169 /************************************************
170 
171    PROTOTYPES
172 
173 *************************************************/
174 
175 /* --- main window ---------------------------- */
176 
177 #ifdef HAVE_GNOME
178 void MakeMenu();
179 #else
180 void MakeMenu(GtkWidget *menu_bar);
181 #endif
182 
183 
184 /* --- session manager ------------------------ */
185 
186 void doQuit();
187 
188 /* --- configuration -------------------------- */
189 
190 void show_properties_dialog();
191 
192 /* --- convenience function  ------------------ */
193 
194 GtkWidget * create_pixmap(GtkWidget *widget,
195 				  gchar **data);
196 
197 /* --- interactive plotting ------------------- */
198 
199 void Profiler();
200 
201 void MakeSliceBox();
202 
203 void MakeVbox();
204 
205 /* --- error handling       ------------------- */
206 
207 void make_dialog (char *message);
208 
209 void delete_dialog (GtkWidget *widget, gpointer *data);
210 
211 void check_data ();
212 
213 void my_appbar_push(char *message);
214 
215 /* --- toggle buttons     --------------------  */
216 
217 void toggle_fit_spot (GtkWidget *widget, gpointer *data);
218 void toggle_p_spot1 (GtkWidget *widget, gpointer *data);
219 void toggle_p_spot2 (GtkWidget *widget, gpointer *data);
220 void toggle_s_spot1 (GtkWidget *widget, gpointer *data);
221 void toggle_s_spot2 (GtkWidget *widget, gpointer *data);
222 void toggle_anneal (GtkWidget *widget, gpointer *data);
223 void toggle_elliptic (GtkWidget *widget, gpointer *data);
224 void toggle_fratio1 (GtkWidget *widget, gpointer *data);
225 void toggle_fratio2 (GtkWidget *widget, gpointer *data);
226 void toggle_blackbody (GtkWidget *widget, gpointer *data);
227 void toggle_fractional (GtkWidget *widget, gpointer *data);
228 void toggle_reflect (GtkWidget *widget, gpointer *data);
229 void toggle_lineprofile (GtkWidget *widget, gpointer *data);
230 void toggle_animate (GtkWidget *widget, gpointer *data);
231 void toggle_psfile (GtkWidget *widget, gpointer *data);
232 #ifdef _WITH_OPENGL
233 void toggle_opengl (GtkWidget *widget, gpointer *data);
234 #endif
235 void toggle_fit (GtkWidget *widget, gpointer *data);
236 void toggle_debug (GtkWidget *widget, gpointer *data);
237 void toggle_disk (GtkWidget *widget, gpointer *data);
238 void toggle_warp (GtkWidget *widget, gpointer *data);
239 
240 /* --- entry fields       --------------------  */
241 
242 void enter_name(GtkWidget *widget, GtkWidget *entry);
243 void enter_abs_period(GtkWidget *widget, GtkWidget *entry);
244 void enter_abs_mass(GtkWidget *widget, GtkWidget *entry);
245 void enter_abs_distance(GtkWidget *widget, GtkWidget *entry);
246 void enter_step1(GtkWidget *widget, GtkWidget *entry);
247 void enter_step2(GtkWidget *widget, GtkWidget *entry);
248 void enter_thirdU(GtkWidget *widget, GtkWidget *entry);
249 void enter_thirdB(GtkWidget *widget, GtkWidget *entry);
250 void enter_thirdV(GtkWidget *widget, GtkWidget *entry);
251 void enter_thirdR(GtkWidget *widget, GtkWidget *entry);
252 void enter_thirdI(GtkWidget *widget, GtkWidget *entry);
253 void enter_thirdJ(GtkWidget *widget, GtkWidget *entry);
254 void enter_thirdH(GtkWidget *widget, GtkWidget *entry);
255 void enter_thirdK(GtkWidget *widget, GtkWidget *entry);
256 void enter_thirdu(GtkWidget *widget, GtkWidget *entry);
257 void enter_thirdb(GtkWidget *widget, GtkWidget *entry);
258 void enter_thirdv(GtkWidget *widget, GtkWidget *entry);
259 void enter_thirdy(GtkWidget *widget, GtkWidget *entry);
260 void enter_longitude_p_spot1(GtkWidget *widget, GtkWidget *entry);
261 void enter_longitude_p_spot2(GtkWidget *widget, GtkWidget *entry);
262 void enter_longitude_s_spot1(GtkWidget *widget, GtkWidget *entry);
263 void enter_longitude_s_spot2(GtkWidget *widget, GtkWidget *entry);
264 void enter_latitude_p_spot1(GtkWidget *widget, GtkWidget *entry);
265 void enter_latitude_p_spot2(GtkWidget *widget, GtkWidget *entry);
266 void enter_latitude_s_spot1(GtkWidget *widget, GtkWidget *entry);
267 void enter_latitude_s_spot2(GtkWidget *widget, GtkWidget *entry);
268 void enter_radius_p_spot1(GtkWidget *widget, GtkWidget *entry);
269 void enter_radius_p_spot2(GtkWidget *widget, GtkWidget *entry);
270 void enter_radius_s_spot1(GtkWidget *widget, GtkWidget *entry);
271 void enter_radius_s_spot2(GtkWidget *widget, GtkWidget *entry);
272 void enter_dimfactor_p_spot1(GtkWidget *widget, GtkWidget *entry);
273 void enter_dimfactor_p_spot2(GtkWidget *widget, GtkWidget *entry);
274 void enter_dimfactor_s_spot1(GtkWidget *widget, GtkWidget *entry);
275 void enter_dimfactor_s_spot2(GtkWidget *widget, GtkWidget *entry);
276 void enter_massratio(GtkWidget *widget, GtkWidget *entry);
277 void enter_inclination(GtkWidget *widget, GtkWidget *entry);
278 void enter_rochefill1(GtkWidget *widget, GtkWidget *entry);
279 void enter_rochefill2(GtkWidget *widget, GtkWidget *entry);
280 void enter_temp1(GtkWidget *widget, GtkWidget *entry);
281 void enter_temp2(GtkWidget *widget, GtkWidget *entry);
282 void enter_odiskrad(GtkWidget *widget, GtkWidget *entry);
283 void enter_idiskrad(GtkWidget *widget, GtkWidget *entry);
284 void enter_disktilt(GtkWidget *widget, GtkWidget *entry);
285 void enter_diskwarp(GtkWidget *widget, GtkWidget *entry);
286 void enter_diskthick(GtkWidget *widget, GtkWidget *entry);
287 void enter_diskhr(GtkWidget *widget, GtkWidget *entry);
288 void enter_disktemp(GtkWidget *widget, GtkWidget *entry);
289 void enter_excentricity(GtkWidget *widget, GtkWidget *entry);
290 void enter_omega(GtkWidget *widget, GtkWidget *entry);
291 void enter_fratio1(GtkWidget *widget, GtkWidget *entry);
292 void enter_fratio2(GtkWidget *widget, GtkWidget *entry);
293 void enter_linewave (GtkWidget *widget, GtkWidget *entry);
294 void enter_reflect_iterations (GtkWidget *widget, GtkWidget *entry);
295 void enter_phasesteps (GtkWidget *widget, GtkWidget *entry);
296 void enter_simplextol (GtkWidget *widget, GtkWidget *entry);
297 void enter_log_g_1 (GtkWidget *widget, GtkWidget *entry);
298 void enter_log_g_2(GtkWidget *widget, GtkWidget *entry);
299 void enter_hs_longitude(GtkWidget *widget, GtkWidget *entry);
300 void enter_hs_extent(GtkWidget *widget, GtkWidget *entry);
301 void enter_hs_depth(GtkWidget *widget, GtkWidget *entry);
302 void enter_hs_temp(GtkWidget *widget, GtkWidget *entry);
303 void enter_hs_puff(GtkWidget *widget, GtkWidget *entry);
304 void enter_warp_max(GtkWidget *widget, GtkWidget *entry);
305 void enter_warp_longitude(GtkWidget *widget, GtkWidget *entry);
306 void enter_warp_width(GtkWidget *widget, GtkWidget *entry);
307 void enter_warp_centre(GtkWidget *widget, GtkWidget *entry);
308 
309 
310 /* --- radio buttons      -----------------------  */
311 
312 void radio_tdisk (GtkWidget *widget, gpointer *data);
313 void radio_limb (GtkWidget *widget, gpointer *data);
314 void radio_band (GtkWidget *widget, gpointer *data);
315 void radio_graph (GtkWidget *widget, gpointer *data);
316 void radio_visual (GtkWidget *widget, gpointer *data);
317 
318 /* --- applications       -----------------------  */
319 
320 void reset_params (GtkWidget *widget, gpointer *data);
321 
322 void delete_event (GtkWidget *widget, gpointer *data);
323 void lightcurve_event (GtkWidget *widget, gpointer *data);
324 void lightfit_event (GtkWidget *widget, gpointer *data);
325 void lightcurveplot_event (GtkWidget *widget, gpointer *data);
326 void reset_event (GtkWidget *widget, gpointer *data);
327 void lightgeometry_event (GtkWidget *widget, gpointer *data);
328 void help_event (GtkWidget *widget, gpointer *data);
329 void lightstarview_event (GtkWidget *widget, gpointer *data);
330 void lightslice_event (GtkWidget *widget, gpointer *data);
331 void showdata_event (GtkWidget *widget, gpointer *data);
332 void profiler_event (GtkWidget *widget, gpointer *data);
333 void lightmap_event (GtkWidget *widget, gpointer *data);
334 
335 /* --- file readin        ----------------------  */
336 
337 void select_file (GtkWidget *widget, gpointer *data);
338 void file_ok_sel (GtkWidget *w, GtkFileSelection *fs);
339 
340 void select_config (GtkWidget *widget, gpointer *data);
341 void config_ok_sel (GtkWidget *w, GtkFileSelection *fs);
342 
343 void out_config (GtkWidget *widget, gpointer *data);
344 void config_ok_out (GtkWidget *w, GtkFileSelection *fs);
345 
346 /* --- MAIN               ----------------------  */
347 
348 int  the_gui (int argc, char *argv[]);
349 void makepage3 ();
350 void updatepage3 ();
351 void updateplotflagpage3 ();
352 
353 /* ------ LightConfig.c ------------------------- */
354 
355 /* update the entry fields in the GUI             */
356 void UpdateGui();
357 
358 void WriteConfig(const char *OutputFile);
359 
360 
361 
362 
363 
364