arch bld deps, opus bld fix, add render beep, shortcut filebox ctrl a/z, batchrender...
[goodguy/history.git] / cinelerra-5.1 / cinelerra / render.C
index 5b35292404b0f040ae6ae333433c479ba5a6ca60..e7b3e12d54b3dafc3ca942a31ab9b19ef8853a14 100644 (file)
@@ -219,6 +219,7 @@ Render::Render(MWindow *mwindow)
        render_window = 0;
        asset = 0;
        result = 0;
+       beep = 0;
 }
 
 Render::~Render()
@@ -314,6 +315,7 @@ BC_Window* Render::new_gui()
 void Render::handle_done_event(int result)
 {
        if(!result) {
+               mwindow->edl->session->render_beep = beep;
                // add to recentlist only on OK
                render_window->render_format->path_recent->
                        add_item(File::formattostr(asset->format), asset->path);
@@ -1075,6 +1077,9 @@ void RenderThread::run()
                }
        }
        render->completion->unlock();
+
+       if( render->mode == Render::INTERACTIVE && render->beep )
+               mwindow->beep(3000., 1.5, 0.5);
 }
 
 
@@ -1141,23 +1146,33 @@ void RenderWindow::create_objects()
        if( is_image )
                render->range_type = RANGE_1FRAME;
 
-       int x1 = x + title->get_w() + 20;
+       int x1 = x + title->get_w() + 20, y1 = y;
        add_subwindow(rangeproject = new RenderRangeProject(this,
                render->range_type == RANGE_PROJECT, x1, y));
+       int x2 = x1 + rangeproject->get_w();
        y += 20;
        add_subwindow(rangeselection = new RenderRangeSelection(this,
                render->range_type == RANGE_SELECTION, x1, y));
+       int x3 = x1 + rangeselection->get_w();
+       if( x2 < x3 ) x2 = x3;
        y += 20;
        add_subwindow(rangeinout = new RenderRangeInOut(this,
                render->range_type == RANGE_INOUT, x1, y));
+       x3 = x1 + rangeinout->get_w();
+       if( x2 < x3 ) x2 = x3;
        y += 20;
        add_subwindow(range1frame = new RenderRange1Frame(this,
                render->range_type == RANGE_1FRAME, x1, y));
+       x3 = x1 + range1frame->get_w();
+       if( x2 < x3 ) x2 = x3;
        y += 30;
-
        if( is_image )
                enable_render_range(0);
 
+       x1 = x2 + 20;
+       render->beep = mwindow->edl->session->render_beep;
+       add_subwindow(beep_on_done = new RenderBeepOnDone(this, x1, y1));
+
        renderprofile = new RenderProfile(mwindow, this, x, y, 1);
        renderprofile->create_objects();
        y += 70;
@@ -1303,3 +1318,16 @@ void RenderFormat::update_format()
                render_window->enable_render_range(1);
 }
 
+RenderBeepOnDone::RenderBeepOnDone(RenderWindow *rwindow, int x, int y)
+ : BC_CheckBox(x, y, rwindow->render->beep, _("Beep on done"))
+{
+       this->rwindow = rwindow;
+}
+
+int RenderBeepOnDone::handle_event()
+{
+       rwindow->render->beep = get_value();
+       return 1;
+}
+
+