983addcb89f98d75d40f6c13a2ecaa94cdc83e21
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / mainmenu.h
1
2 /*
3  * CINELERRA
4  * Copyright (C) 1997-2014 Adam Williams <broadcast at earthling dot net>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  */
21
22 #ifndef MAINMENU_H
23 #define MAINMENU_H
24
25 #include "arraylist.h"
26 #include "guicast.h"
27 #include "bchash.inc"
28 #include "loadfile.inc"
29 #include "mainmenu.inc"
30 #include "mwindow.inc"
31 #include "mwindowgui.inc"
32 #include "maxchannels.h"
33 #include "menuaeffects.inc"
34 #include "menuveffects.inc"
35 #include "module.inc"
36 #include "new.inc"
37 #include "plugindialog.inc"
38 #include "proxy.inc"
39 #include "quit.inc"
40 #include "record.inc"
41 #include "render.inc"
42 #include "threadloader.inc"
43 #include "viewmenu.inc"
44
45 #define TOTAL_LOADS 20       // number of files to cache
46 #define TOTAL_EFFECTS 10     // number of effects to cache
47
48 #define LAYOUT_LOAD 0
49 #define LAYOUT_SAVE 1
50
51 class LoadRecentItem
52 {
53 public:
54         LoadRecentItem(const char *path);
55         ~LoadRecentItem();
56         char *path;
57 };
58
59 class LoadRecentItems : public ArrayList<LoadRecentItem *>
60 {
61 public:
62         LoadRecentItems();
63         ~LoadRecentItems();
64         int add_load(char *path);
65 };
66
67 class LoadRecentSubMenu : public BC_SubMenu
68 {
69 public:
70         LoadRecentSubMenu(LoadRecent *load_recent);
71         ~LoadRecentSubMenu();
72
73         LoadRecent *load_recent;
74 };
75
76 class LoadRecent : public BC_MenuItem
77 {
78 public:
79         LoadRecent(MWindow *mwindow, MainMenu *main_menu);
80         ~LoadRecent();
81         void create_objects();
82         LoadPrevious *get_next_item();
83         int activate_submenu();
84         void scan_items(int use_xml);
85
86         MWindow *mwindow;
87         MainMenu *main_menu;
88         LoadRecentSubMenu *submenu;
89         int total_items;
90 };
91
92
93 class MainMenu : public BC_MenuBar
94 {
95 public:
96         MainMenu(MWindow *mwindow, MWindowGUI *gui, int w);
97         ~MainMenu();
98         void create_objects();
99         int load_defaults(BC_Hash *defaults);
100         int save_defaults(BC_Hash *defaults);
101
102 // most recent loads
103         int add_load(char *path);
104         void init_loads(BC_Hash *defaults);
105
106 // most recent effects
107         int init_aeffects(BC_Hash *defaults);
108         int save_aeffects(BC_Hash *defaults);
109         int add_aeffect(char *title);
110         int init_veffects(BC_Hash *defaults);
111         int save_veffects(BC_Hash *defaults);
112         int save_loads(BC_Hash *defaults);
113         int add_veffect(char *title);
114
115         int quit();
116 // show only one of these at a time
117         int set_show_autos();
118         void update_toggles(int use_lock);
119
120         MWindowGUI *gui;
121         MWindow *mwindow;
122         ThreadLoader *threadloader;
123         MenuAEffects *aeffects;
124         MenuVEffects *veffects;
125
126         Load *load_file;
127         LoadRecentItems load;
128         LoadRecent *load_recent;
129
130         RecordMenuItem *record_menu_item;
131         RenderItem *render;
132         NewProject *new_project;
133         MenuAEffectItem *aeffect[TOTAL_EFFECTS];
134         MenuVEffectItem *veffect[TOTAL_EFFECTS];
135         Quit *quit_program;              // affected by save
136         MainDumpsMenu *dump_menu;
137         EditClearMenu *clear_menu;
138         Undo *undo;
139         Redo *redo;
140         BC_Menu *filemenu;
141         BC_Menu *audiomenu, *videomenu;      // needed by most recents
142         int total_aeffects, total_veffects;
143
144         KeyframeCurveType *keyframe_curve_type;
145         KeyframeCreate *keyframe_create;
146         SetAutomationCurveMode *set_auto_curves;
147         LabelsFollowEdits *labels_follow_edits;
148         PluginsFollowEdits *plugins_follow_edits;
149         KeyframesFollowEdits *keyframes_follow_edits;
150         CursorOnFrames *cursor_on_frames;
151         TypelessKeyframes *typeless_keyframes;
152         SetBRenderActive *brender_active;
153         LoopPlayback *loop_playback;
154         ShowAssets *show_assets;
155         ShowTitles *show_titles;
156         ShowTransitions *show_transitions;
157         ShowAutomation *fade_automation;
158         ShowAutomation *mute_automation;
159         ShowAutomation *pan_automation;
160         ShowAutomation *camera_x;
161         ShowAutomation *camera_y;
162         ShowAutomation *camera_z;
163         ShowAutomation *project_x;
164         ShowAutomation *project_y;
165         ShowAutomation *project_z;
166         PluginAutomation *plugin_automation;
167         ShowAutomation *mask_automation;
168         ShowAutomation *mode_automation;
169         ShowAutomation *speed_automation;
170         ShowVWindow *show_vwindow;
171         ShowAWindow *show_awindow;
172         ShowCWindow *show_cwindow;
173         ShowGWindow *show_gwindow;
174         ShowLWindow *show_lwindow;
175         SplitX *split_x;
176         SplitY *split_y;
177         MixerItems *mixer_items;
178         LoadLayout *load_layout;
179         LoadLayout *save_layout;
180         ProxyMenuItem *proxy;
181 };
182
183 // ========================================= edit
184
185 class Undo : public BC_MenuItem
186 {
187 public:
188         Undo(MWindow *mwindow);
189         int handle_event();
190         int update_caption(const char *new_caption = "");
191         MWindow *mwindow;
192 };
193
194 class MainDumpsSubMenu : public BC_SubMenu
195 {
196 public:
197         MainDumpsSubMenu(BC_MenuItem *menu_item);
198         ~MainDumpsSubMenu();
199
200         BC_MenuItem *menu_item;
201 };
202
203 class MainDumpsMenu : public BC_MenuItem
204 {
205 public:
206         MainDumpsMenu(MWindow *mwindow);
207         ~MainDumpsMenu();
208         void create_objects();
209
210         MWindow *mwindow;
211         MainDumpsSubMenu *dumps_menu;
212 };
213
214 class DumpCICache : public BC_MenuItem
215 {
216 public:
217         DumpCICache(MWindow *mwindow);
218         int handle_event();
219         MWindow *mwindow;
220 };
221
222 class DumpEDL : public BC_MenuItem
223 {
224 public:
225         DumpEDL(MWindow *mwindow);
226         int handle_event();
227         MWindow *mwindow;
228 };
229
230 class DumpPlugins : public BC_MenuItem
231 {
232 public:
233         DumpPlugins(MWindow *mwindow);
234         int handle_event();
235         MWindow *mwindow;
236 };
237
238 class DumpAssets : public BC_MenuItem
239 {
240 public:
241         DumpAssets(MWindow *mwindow);
242         int handle_event();
243         MWindow *mwindow;
244 };
245
246 class DumpUndo : public BC_MenuItem
247 {
248 public:
249         DumpUndo(MWindow *mwindow);
250         int handle_event();
251         MWindow *mwindow;
252 };
253
254 class Redo : public BC_MenuItem
255 {
256 public:
257         Redo(MWindow *mwindow);
258         int handle_event();
259         int update_caption(const char *new_caption = "");
260         MWindow *mwindow;
261 };
262
263 class Cut : public BC_MenuItem
264 {
265 public:
266         Cut(MWindow *mwindow);
267         int handle_event();
268         MWindow *mwindow;
269 };
270
271 class Copy : public BC_MenuItem
272 {
273 public:
274         Copy(MWindow *mwindow);
275         int handle_event();
276         MWindow *mwindow;
277 };
278
279 class Paste : public BC_MenuItem
280 {
281 public:
282         Paste(MWindow *mwindow);
283         int handle_event();
284         MWindow *mwindow;
285 };
286
287 class EditClearSubMenu : public BC_SubMenu
288 {
289 public:
290         EditClearSubMenu(BC_MenuItem *menu_item);
291         ~EditClearSubMenu();
292
293         BC_MenuItem *menu_item;
294 };
295
296 class EditClearMenu : public BC_MenuItem
297 {
298 public:
299         EditClearMenu(MWindow *mwindow);
300         ~EditClearMenu();
301         void create_objects();
302
303         MWindow *mwindow;
304         EditClearSubMenu *clear_sub_menu;
305 };
306
307 class Clear : public BC_MenuItem
308 {
309 public:
310         Clear(MWindow *mwindow);
311         int handle_event();
312         MWindow *mwindow;
313 };
314
315 class CutKeyframes : public BC_MenuItem
316 {
317 public:
318         CutKeyframes(MWindow *mwindow);
319         int handle_event();
320         MWindow *mwindow;
321 };
322
323 class CopyKeyframes : public BC_MenuItem
324 {
325 public:
326         CopyKeyframes(MWindow *mwindow);
327         int handle_event();
328         MWindow *mwindow;
329 };
330
331 class PasteKeyframes : public BC_MenuItem
332 {
333 public:
334         PasteKeyframes(MWindow *mwindow);
335         int handle_event();
336         MWindow *mwindow;
337 };
338
339
340 class ClearKeyframes : public BC_MenuItem
341 {
342 public:
343         ClearKeyframes(MWindow *mwindow);
344         int handle_event();
345         MWindow *mwindow;
346 };
347
348
349 class SetAutomationCurveItem : public BC_MenuItem
350 {
351 public:
352         SetAutomationCurveItem(SetAutomationCurveMode *set_curve_mode, int id);
353         int handle_event();
354         SetAutomationCurveMode *set_curve_mode;
355         int id;
356 };
357
358 class SetAutoCurveModeMenu : public BC_SubMenu
359 {
360 public:
361         SetAutoCurveModeMenu(SetAutomationCurveMode *curve_mode);
362         SetAutomationCurveMode *curve_mode;
363 };
364
365 class SetAutomationCurveMode : public BC_MenuItem
366 {
367 public:
368         SetAutomationCurveMode(MWindow *mwindow);
369         void create_objects();
370
371         MWindow *mwindow;
372         SetAutoCurveModeMenu *curve_mode_menu;
373 };
374
375
376 class KeyframeCurveType : public BC_MenuItem
377 {
378 public:
379         KeyframeCurveType(MWindow *mwindow);
380         ~KeyframeCurveType();
381
382         void create_objects();
383         void update(int curve_type);
384         int handle_event();
385
386         MWindow *mwindow;
387         KeyframeCurveTypeMenu *curve_menu;
388 };
389
390 class KeyframeCurveTypeMenu : public BC_SubMenu
391 {
392 public:
393         KeyframeCurveTypeMenu(KeyframeCurveType *menu_item);
394         ~KeyframeCurveTypeMenu();
395
396         KeyframeCurveType *menu_item;
397 };
398
399 class KeyframeCurveTypeItem : public BC_MenuItem
400 {
401 public:
402         KeyframeCurveTypeItem(int type, KeyframeCurveType *main_item);
403         ~KeyframeCurveTypeItem();
404
405         KeyframeCurveType *main_item;
406         int type;
407
408         int handle_event();
409 };
410
411 class KeyframeCreateItem : public BC_MenuItem
412 {
413 public:
414         KeyframeCreateItem(KeyframeCreate *keyframe_create, const char *text, int mask);
415         int handle_event();
416
417         KeyframeCreate *keyframe_create;
418         int mask;
419 };
420
421 class KeyframeCreateMenu : public BC_SubMenu
422 {
423 public:
424         KeyframeCreateMenu(KeyframeCreate *keyframe_create);
425         KeyframeCreate *keyframe_create;
426 };
427
428 class KeyframeCreate : public BC_MenuItem
429 {
430 public:
431         KeyframeCreate(MWindow *mwindow);
432         void create_objects();
433
434         MWindow *mwindow;
435         KeyframeCreateMenu *keyframe_create_menu;
436 };
437
438
439 class CutDefaultKeyframe : public BC_MenuItem
440 {
441 public:
442         CutDefaultKeyframe(MWindow *mwindow);
443         int handle_event();
444         MWindow *mwindow;
445 };
446
447 class CopyDefaultKeyframe : public BC_MenuItem
448 {
449 public:
450         CopyDefaultKeyframe(MWindow *mwindow);
451         int handle_event();
452         MWindow *mwindow;
453 };
454
455 class PasteDefaultKeyframe : public BC_MenuItem
456 {
457 public:
458         PasteDefaultKeyframe(MWindow *mwindow);
459         int handle_event();
460         MWindow *mwindow;
461 };
462
463 class ClearDefaultKeyframe : public BC_MenuItem
464 {
465 public:
466         ClearDefaultKeyframe(MWindow *mwindow);
467         int handle_event();
468         MWindow *mwindow;
469 };
470
471 class PasteSilence : public BC_MenuItem
472 {
473 public:
474         PasteSilence(MWindow *mwindow);
475         int handle_event();
476         MWindow *mwindow;
477 };
478
479 class SelectAll : public BC_MenuItem
480 {
481 public:
482         SelectAll(MWindow *mwindow);
483         int handle_event();
484         MWindow *mwindow;
485 };
486
487 class ClearHardEdges : public BC_MenuItem
488 {
489 public:
490         ClearHardEdges(MWindow *mwindow);
491         int handle_event();
492         MWindow *mwindow;
493 };
494
495 class ClearLabels : public BC_MenuItem
496 {
497 public:
498         ClearLabels(MWindow *mwindow);
499         int handle_event();
500         MWindow *mwindow;
501 };
502
503 class ClearSelect : public BC_MenuItem
504 {
505 public:
506         ClearSelect(MWindow *mwindow);
507         int handle_event();
508         MWindow *mwindow;
509 };
510
511 class CutCommercials : public BC_MenuItem
512 {
513 public:
514         CutCommercials(MWindow *mwindow);
515         int handle_event();
516         MWindow *mwindow;
517 };
518
519 class DetachTransitions : public BC_MenuItem
520 {
521 public:
522         DetachTransitions(MWindow *mwindow);
523         int handle_event();
524         MWindow *mwindow;
525 };
526
527 class MuteSelection : public BC_MenuItem
528 {
529 public:
530         MuteSelection(MWindow *mwindow);
531         int handle_event();
532         MWindow *mwindow;
533 };
534
535 class TrimSelection : public BC_MenuItem
536 {
537 public:
538         TrimSelection(MWindow *mwindow);
539         int handle_event();
540         MWindow *mwindow;
541 };
542
543 class MixerItems : public BC_MenuItem
544 {
545 public:
546         MixerItems(MWindow *mwindow);
547         void create_objects();
548         int activate_submenu();
549
550         MWindow *mwindow;
551 };
552
553 class MixerItem : public BC_MenuItem
554 {
555 public:
556         MixerItem(MixerItems *mixer_items, const char *text, int idx);
557         MixerItem(MixerItems *mixer_items, const char *text, const char *hotkey_text, int hotkey);
558         virtual int handle_event();
559
560         MixerItems *mixer_items;
561         int idx;
562 };
563
564 class MixerViewer : public MixerItem
565 {
566 public:
567         MixerViewer(MixerItems *mixer_items);
568         int handle_event();
569 };
570
571 class TileMixers : public MixerItem
572 {
573 public:
574         TileMixers(MixerItems *mixer_items);
575         int handle_event();
576 };
577
578 class AlignMixers : public MixerItem
579 {
580 public:
581         AlignMixers(MixerItems *mixer_items);
582         int handle_event();
583 };
584
585 class MixMasters : public MixerItem
586 {
587 public:
588         MixMasters(MixerItems *mixer_items);
589         int handle_event();
590 };
591
592 class AlignTimecodes : public BC_MenuItem
593 {
594 public:
595         AlignTimecodes(MWindow *mwindow);
596         int handle_event();
597         MWindow *mwindow;
598 };
599
600 // ======================================== audio
601
602 class AddAudioTrack : public BC_MenuItem
603 {
604 public:
605         AddAudioTrack(MWindow *mwindow);
606         int handle_event();
607         MWindow *mwindow;
608 };
609
610 class DeleteAudioTrack : public BC_MenuItem
611 {
612 public:
613         DeleteAudioTrack(MWindow *mwindow);
614         int handle_event();
615         MWindow *mwindow;
616 };
617
618 class DefaultATransition : public BC_MenuItem
619 {
620 public:
621         DefaultATransition(MWindow *mwindow);
622         int handle_event();
623         MWindow *mwindow;
624 };
625
626 class MapAudio1 : public BC_MenuItem
627 {
628 public:
629         MapAudio1(MWindow *mwindow);
630         int handle_event();
631         MWindow *mwindow;
632 };
633
634 class MapAudio2 : public BC_MenuItem
635 {
636 public:
637         MapAudio2(MWindow *mwindow);
638         int handle_event();
639         MWindow *mwindow;
640 };
641
642 // ========================================== video
643
644
645 class AddVideoTrack : public BC_MenuItem
646 {
647 public:
648         AddVideoTrack(MWindow *mwindow);
649         int handle_event();
650         MWindow *mwindow;
651 };
652
653
654 class DeleteVideoTrack : public BC_MenuItem
655 {
656 public:
657         DeleteVideoTrack(MWindow *mwindow);
658         int handle_event();
659         MWindow *mwindow;
660 };
661
662 class ResetTranslation : public BC_MenuItem
663 {
664 public:
665         ResetTranslation(MWindow *mwindow);
666         int handle_event();
667         MWindow *mwindow;
668 };
669
670 class DefaultVTransition : public BC_MenuItem
671 {
672 public:
673         DefaultVTransition(MWindow *mwindow);
674         int handle_event();
675         MWindow *mwindow;
676 };
677
678
679 // ========================================== subtitle
680
681 class AddSubttlTrack : public BC_MenuItem
682 {
683 public:
684         AddSubttlTrack(MWindow *mwindow);
685         int handle_event();
686         MWindow *mwindow;
687 };
688
689 class PasteSubttl : public BC_MenuItem
690 {
691 public:
692         PasteSubttl(MWindow *mwindow);
693         int handle_event();
694         MWindow *mwindow;
695 };
696
697
698 // ========================================== settings
699
700
701 class RollTracksUp : public BC_MenuItem
702 {
703 public:
704         RollTracksUp(MWindow *mwindow);
705         int handle_event();
706         MWindow *mwindow;
707 };
708
709 class RollTracksDown : public BC_MenuItem
710 {
711 public:
712         RollTracksDown(MWindow *mwindow);
713         int handle_event();
714         MWindow *mwindow;
715 };
716
717 class MoveTracksUp : public BC_MenuItem
718 {
719 public:
720         MoveTracksUp(MWindow *mwindow);
721         int handle_event();
722         MWindow *mwindow;
723 };
724
725 class MoveTracksDown : public BC_MenuItem
726 {
727 public:
728         MoveTracksDown(MWindow *mwindow);
729         int handle_event();
730         MWindow *mwindow;
731 };
732
733 class DeleteTracks : public BC_MenuItem
734 {
735 public:
736         DeleteTracks(MWindow *mwindow);
737         int handle_event();
738         MWindow *mwindow;
739 };
740
741 class ConcatenateTracks : public BC_MenuItem
742 {
743 public:
744         ConcatenateTracks(MWindow *mwindow);
745         int handle_event();
746         MWindow *mwindow;
747 };
748
749 class DeleteFirstTrack : public BC_MenuItem
750 {
751 public:
752         DeleteFirstTrack(MWindow *mwindow);
753         int handle_event();
754         MWindow *mwindow;
755 };
756
757 class DeleteLastTrack : public BC_MenuItem
758 {
759 public:
760         DeleteLastTrack(MWindow *mwindow);
761         int handle_event();
762         MWindow *mwindow;
763 };
764
765 class LoopPlayback : public BC_MenuItem
766 {
767 public:
768         LoopPlayback(MWindow *mwindow);
769
770         int handle_event();
771         MWindow *mwindow;
772 };
773
774 class SetBRenderActive : public BC_MenuItem
775 {
776 public:
777         SetBRenderActive(MWindow *mwindow);
778         int handle_event();
779         MWindow *mwindow;
780 };
781
782 class LabelsFollowEdits : public BC_MenuItem
783 {
784 public:
785         LabelsFollowEdits(MWindow *mwindow);
786         int handle_event();
787         MWindow *mwindow;
788 };
789
790 class PluginsFollowEdits : public BC_MenuItem
791 {
792 public:
793         PluginsFollowEdits(MWindow *mwindow);
794         int handle_event();
795         MWindow *mwindow;
796 };
797
798 class KeyframesFollowEdits : public BC_MenuItem
799 {
800 public:
801         KeyframesFollowEdits(MWindow *mwindow);
802         int handle_event();
803         MWindow *mwindow;
804 };
805
806 class CursorOnFrames : public BC_MenuItem
807 {
808 public:
809         CursorOnFrames(MWindow *mwindow);
810         int handle_event();
811         MWindow *mwindow;
812 };
813
814 class TypelessKeyframes : public BC_MenuItem
815 {
816 public:
817         TypelessKeyframes(MWindow *mwindow);
818         int handle_event();
819         MWindow *mwindow;
820 };
821
822 class ScrubSpeed : public BC_MenuItem
823 {
824 public:
825         ScrubSpeed(MWindow *mwindow);
826         int handle_event();
827         MWindow *mwindow;
828 };
829
830 class SaveSettingsNow : public BC_MenuItem
831 {
832 public:
833         SaveSettingsNow(MWindow *mwindow);
834         int handle_event();
835         MWindow *mwindow;
836 };
837
838 // ========================================== window
839 class ShowVWindow : public BC_MenuItem
840 {
841 public:
842         ShowVWindow(MWindow *mwindow);
843         int handle_event();
844         MWindow *mwindow;
845 };
846
847 class ShowAWindow : public BC_MenuItem
848 {
849 public:
850         ShowAWindow(MWindow *mwindow);
851         int handle_event();
852         MWindow *mwindow;
853 };
854
855 class ShowGWindow : public BC_MenuItem
856 {
857 public:
858         ShowGWindow(MWindow *mwindow);
859         int handle_event();
860         MWindow *mwindow;
861 };
862
863 class ShowCWindow : public BC_MenuItem
864 {
865 public:
866         ShowCWindow(MWindow *mwindow);
867         int handle_event();
868         MWindow *mwindow;
869 };
870
871 class ShowLWindow : public BC_MenuItem
872 {
873 public:
874         ShowLWindow(MWindow *mwindow);
875         int handle_event();
876         MWindow *mwindow;
877 };
878
879 class TileWindows : public BC_MenuItem
880 {
881 public:
882         TileWindows(MWindow *mwindow, const char *item_title, int config,
883                 const char *hot_keytext="", int hot_key=0);
884         int handle_event();
885         MWindow *mwindow;
886         int config;
887 };
888
889 class SplitX : public BC_MenuItem
890 {
891 public:
892         SplitX(MWindow *mwindow);
893         int handle_event();
894         MWindow *mwindow;
895 };
896
897 class SplitY : public BC_MenuItem
898 {
899 public:
900         SplitY(MWindow *mwindow);
901         int handle_event();
902         MWindow *mwindow;
903 };
904
905
906 class LoadLayoutItem : public BC_MenuItem
907 {
908 public:
909         LoadLayoutItem(LoadLayout *load_layout, const char *text, int no, int hotkey);
910         int handle_event();
911
912         int idx;
913         char layout_text[BCSTRLEN];
914         char layout_file[BCSTRLEN];
915         LoadLayout *load_layout;
916 };
917
918 class LoadLayout : public BC_MenuItem
919 {
920 public:
921         LoadLayout(MWindow *mwindow, const char *text, int action);
922         ~LoadLayout();
923         void create_objects();
924         void update();
925         int activate_submenu();
926
927         MWindow *mwindow; 
928         LoadLayoutDialog *layout_dialog;
929         int action;
930 };
931
932 class LoadLayoutDialog : public BC_DialogThread
933 {
934 public:
935         LoadLayoutDialog(LoadLayout *load_layout);
936         ~LoadLayoutDialog();
937
938         void start_confirm_dialog(int wx, int wy, int idx);
939         void handle_done_event(int result);
940         void handle_close_event(int result);
941         BC_Window* new_gui();
942
943         LoadLayout *load_layout;
944         LoadLayoutConfirm *lgui;
945         int wx, wy, idx;
946 };
947
948 class LoadLayoutNameText : public BC_TextBox
949 {
950 public:
951         LoadLayoutNameText(LoadLayoutConfirm *confirm,
952                 int x, int y, int w, const char *text);
953         ~LoadLayoutNameText();
954
955         int handle_event();
956
957         LoadLayoutConfirm *confirm;
958 };
959
960 class LoadLayoutConfirm : public BC_Window
961 {
962 public:
963         LoadLayoutConfirm(LoadLayoutDialog *load_dialog, int x, int y);
964         ~LoadLayoutConfirm();
965         void create_objects();
966
967         LoadLayoutDialog *layout_dialog;
968         LoadLayoutNameText *name_text;
969 };
970
971 #endif