exec bits, desktop icon props, noexecstack, attach transitions to selected edits...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / reindex.C
1
2 /*
3  * CINELERRA
4  * Copyright (C) 2008 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 #include "reindex.h"
23
24
25 #include <libintl.h>
26 #define _(String) gettext(String)
27 #define gettext_noop(String) String
28 #define N_(String) gettext_noop (String)
29
30
31 ReIndex::ReIndex(MWindow *mwindow)
32  : BC_MenuItem(_("Redraw Indexes"), "", 0), Thread()
33 {
34         this->mwindow = mwindow;
35 }
36
37 ReIndex::~ReIndex()
38 {
39 }
40
41 ReIndex::handle_event() { start(); }
42
43 void ReIndex::run()
44 {
45         int result;
46
47         if(mwindow->gui) mwindow->gui->disable_window();
48         if(mwindow->gui) mwindow->lock_resize();
49
50         {
51                 ReIndexWindow window;
52                 window.create_objects();
53                 result = window.run_window();
54         }
55
56         if(!result)       // user didn't cancel
57         {
58 // ========== need pointers since mainmenu is created after tracks
59 // ==================================== delete old index files
60                 mwindow->tracks->delete_index_files();
61 // ==================================== create new index files
62                 mwindow->tracks->create_index_files(1);
63 // ==================================== draw
64                 mwindow->draw();
65         }
66         if(mwindow->gui) mwindow->unlock_resize();
67         if(mwindow->gui) mwindow->gui->enable_window();
68 }
69
70 ReIndexWindow::ReIndexWindow(char *display = "")
71  : BC_Window(display, MEGREY, _(PROGRAM_NAME ": Redraw Indexes"), 340, 140, 340, 140)
72 {
73 }
74
75 ReIndexWindow::~ReIndexWindow()
76 {
77         delete ok;
78         delete cancel;
79 }
80
81 ReIndexWindow::create_objects()
82 {
83         lock_window("ReIndexWindow::create_objects");
84         BC_SubWindow *subwindow;
85
86         add_subwindow(subwindow = new BC_SubWindow(0, 0, w, h, MEGREY));
87         subwindow->add_subwindow(new BC_Title(5, 5, _("Redraw all indexes for the current project?")));
88         subwindow->add_subwindow(ok = new ReIndexOkButton(this));
89         subwindow->add_subwindow(cancel = new ReIndexCancelButton(this));
90         unlock_window();
91 }
92
93 ReIndexOkButton::ReIndexOkButton(ReIndexWindow *window)
94  : BC_Button(5, 80, _("Yes"))
95 {
96         this->window = window;
97 }
98
99 ReIndexOkButton::handle_event()
100 {
101         window->set_done(0);
102 }
103
104 ReIndexOkButton::keypress_event()
105 {
106         if(window->get_keypress() == 13) { handle_event(); return 1; }
107         return 0;
108 }
109
110 ReIndexCancelButton::ReIndexCancelButton(ReIndexWindow *window)
111  : BC_Button(140, 80, _("No"))
112 {
113         this->window = window;
114 }
115
116 ReIndexCancelButton::handle_event()
117 {
118         window->set_done(1);
119 }
120
121 ReIndexCancelButton::keypress_event()
122 {
123         if(window->get_keypress() == ESC) { handle_event(); return 1; }
124         return 0;
125 }
126