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