r370: Heroine Virutal's official release 1.2.1
[cinelerra_cv/mob.git] / hvirtual / guicast / bcprogressbox.C
blob93cacca0c0a51187f737bd684b623b7ad07a03c6
1 #include "bcbutton.h"
2 #include "bcprogress.h"
3 #include "bcprogressbox.h"
4 #include "bctitle.h"
5 #include "bcwindow.h"
7 BC_ProgressBox::BC_ProgressBox(int x, int y, char *text, long length)
8  : Thread()
10         set_synchronous(1);
11         pwindow = new BC_ProgressWindow(x, y);
12         pwindow->create_objects(text, length);
13         cancelled = 0;
16 BC_ProgressBox::~BC_ProgressBox()
18         delete pwindow;
21 void BC_ProgressBox::run()
23         int result = pwindow->run_window();
24         if(result) cancelled = 1;
27 int BC_ProgressBox::update(long position)
29         if(!cancelled)
30         {
31                 pwindow->lock_window("BC_ProgressBox::update");
32                 pwindow->bar->update(position);
33                 pwindow->unlock_window();
34         }
35         return cancelled;
38 int BC_ProgressBox::update_title(char *title)
40         pwindow->caption->update(title);
41         return cancelled;
44 int BC_ProgressBox::update_length(long length)
46         pwindow->bar->update_length(length);
47         return cancelled;
51 int BC_ProgressBox::is_cancelled()
53         return cancelled;
56 int BC_ProgressBox::stop_progress()
58         pwindow->set_done(0);
59         Thread::join();
60         return 0;
63 void BC_ProgressBox::lock_window()
65         pwindow->lock_window("BC_ProgressBox::lock_window");
68 void BC_ProgressBox::unlock_window()
70         pwindow->unlock_window();
75 BC_ProgressWindow::BC_ProgressWindow(int x, int y)
76  : BC_Window("Progress", x, y, 340, 120, 0, 0, 0)
80 BC_ProgressWindow::~BC_ProgressWindow()
84 int BC_ProgressWindow::create_objects(char *text, long length)
86         int x = 10, y = 10;
87         this->text = text;
88         add_tool(caption = new BC_Title(x, y, text));
89         y += caption->get_h() + 20;
90         add_tool(bar = new BC_ProgressBar(x, y, get_w() - 20, length));
91         y += 40;
92         add_tool(new BC_CancelButton(x, y));
93         return 0;