#include "dvdcreate.h"
#include "bdcreate.h"
+#include <stdlib.h>
+
int BatchRenderThread::column_widths[] = { 42, 42, 42, 222, 222, 150 };
const char *BatchRenderThread::column_titles[] = {
N_("Enabled"), N_("Labeled"), N_("Farmed"), N_("Output"), N_("EDL"), N_("Elapsed")
void BatchRenderJob::load(FileXML *file)
{
int result = 0;
+ char job_title[BCSTRLEN];
+ strcpy(job_title, file->tag.title);
enabled = file->tag.get_property("ENABLED", enabled);
farmed = file->tag.get_property("FARMED", farmed);
// coding maintenance. The defaults must now be stuffed into the XML for
// unique storage.
BC_Hash defaults;
- defaults.load_string(file->read_text());
+ defaults.load_string(file->read_text(job_title));
asset->load_defaults(&defaults,
"", 0, 1, 0, 0, 0);
}
int BatchRenderJob::get_strategy()
{
- return Render::get_strategy(farmed, labeled);
+ int range = File::is_image_render(asset->format) ?
+ RANGE_1FRAME : RANGE_SELECTION;
+ return Render::get_strategy(farmed, labeled, range);
}
default_job = 0;
boot_defaults = 0;
preferences = 0;
- warn = 1;
+ warn = 0;
render = 0;
batch_path[0] = 0;
do_farmed = 0;
while( !result ) {
if( !(result = file.read_tag()) ) {
if( file.tag.title_is("JOBS") ) {
+ if (mwindow && mwindow->preferences->unsafe_gui)
warn = file.tag.get_property("WARN", 1);
+ if (mwindow && !mwindow->preferences->unsafe_gui)
+ warn = 0;
}
else if( file.tag.title_is("JOB") ) {
BatchRenderJob *job = new BatchRenderJob(preferences, 0,0);
{
FileXML file;
file.tag.set_title("JOBS");
+ if (mwindow && mwindow->preferences->unsafe_gui)
file.tag.set_property("WARN", warn);
file.append_tag();
file.append_newline();
FileXML xml_file;
char *path = get_current_edl();
EDL *edl = mwindow->edl;
+ // result = 1 if user cancelled operation
+ int result = ConfirmSave::test_file(mwindow, path);
+ if (!result) {
edl->save_xml(&xml_file, path);
xml_file.terminate_string();
if( xml_file.write_to_file(path) ) {
sprintf(msg, _("Unable to save: %s"), path);
MainError::show_error(msg);
}
+ }
}
BatchRenderJob* BatchRenderThread::get_current_job()
if( !ret && mwindow )
ret = test_errmsg(no_rendering, _("%d job EDLs no audio or video in render asset format\n"), 0);
if( !ret && mwindow )
- ret = test_errmsg(no_labels, _("%d job EDLs render file per label and no labels\n"), 0);
+ ret = test_errmsg(no_labels, _("%d job EDLs Create new file at labels checked, but no labels\n"), 0);
if( ret )
is_rendering = 0;
return ret;
PackageDispatcher *packages = new PackageDispatcher;
// Load EDL
- TransportCommand *command = new TransportCommand;
+ TransportCommand *command = new TransportCommand(preferences);
FileXML *file = new FileXML;
file->read_from_file(job->edl_path);
else {
BC_Trace::disable_locks();
}
-
+// In batch mode there is no mwindow, so init_plugins is called with
+// mwindow* = NULL.
MWindow::init_plugins(0, preferences);
+ MWindow::init_ladspa_plugins(0, preferences);
char font_path[BCTEXTLEN];
strcpy(font_path, preferences->plugin_dir);
strcat(font_path, "/" FONT_SEARCHPATH);
this->mwindow = mwindow;
this->thread = thread;
use_renderfarm = 0;
+// *** CONTEXT_HELP ***
+ context_help_set_keyword("Batch Rendering");
}
BatchRenderGUI::~BatchRenderGUI()
y2 = y + edl_path_browse->get_h() + mwindow->theme->widget_border;
x = x2; y = y2;
+ if (mwindow->preferences->unsafe_gui) {
add_subwindow(update_selected_edl = new BatchRenderUpdateEDL(thread, x, y));
y += update_selected_edl->get_h() + mwindow->theme->widget_border;
+ }
add_subwindow(use_current_edl = new BatchRenderCurrentEDL(thread, x, y));
y += use_current_edl->get_h() + mwindow->theme->widget_border;
if( !mwindow->edl || !mwindow->edl->path[0] ) use_current_edl->disable();
x += savelist_batch->get_w() + mwindow->theme->widget_border;
add_subwindow(loadlist_batch = new BatchRenderLoadList(thread, x, y));
y += loadlist_batch->get_h() + mwindow->theme->widget_border;
+ if (mwindow->preferences->unsafe_gui) {
add_subwindow(warning = new BatchRenderWarning(thread, x2, y));
y2 = y + warning->get_h() + mwindow->theme->widget_border;
+ }
if( y2 > y1 ) y1 = y2;
x = mwindow->theme->batchrender_x1, y = y1;
y += batch_list->get_h() + mwindow->theme->widget_border;
add_subwindow(start_button = new BatchRenderStart(thread, x, y));
- x = get_w() / 2 - BC_GenericButton::calculate_w(this, _("Stop")) / 2;
+ x = get_w() / 3 - BC_GenericButton::calculate_w(this, _("Stop")) / 3;
add_subwindow(stop_button = new BatchRenderStop(thread, x, y));
+ x = get_w() / 1.5 - BC_GenericButton::calculate_w(this, _("?")) / 1.5;
+ add_subwindow(help_button = new BatchRenderHelp(thread, x, y));
x = get_w() - BC_GenericButton::calculate_w(this, _("Close")) - xs10;
add_subwindow(cancel_button = new BatchRenderCancel(thread, x, y));
new_batch->disable();
delete_batch->disable();
use_current_edl->disable();
+ if (mwindow->preferences->unsafe_gui)
update_selected_edl->disable();
}
delete_batch->enable();
if( mwindow->edl && mwindow->edl->path[0] )
use_current_edl->enable();
+ if (mwindow->preferences->unsafe_gui)
update_selected_edl->enable();
}
y2 = y + edl_path_browse->get_h() + mwindow->theme->widget_border;
x = x2; y = y2;
+ if (mwindow->preferences->unsafe_gui) {
update_selected_edl->reposition_window(x, y);
y += update_selected_edl->get_h() + mwindow->theme->widget_border;
+ }
use_current_edl->reposition_window(x, y);
y += use_current_edl->get_h() + mwindow->theme->widget_border;
new_batch->reposition_window(x, y);
x += savelist_batch->get_w() + mwindow->theme->widget_border;
loadlist_batch->reposition_window(x, y);
y += loadlist_batch->get_h() + mwindow->theme->widget_border;
+ if (mwindow->preferences->unsafe_gui) {
warning->reposition_window(x2, y);
-
+ }
y1 = ys15 + BC_GenericButton::calculate_h() + mwindow->theme->widget_border;
y2 = get_h() - y1 - batch_list->get_h();
y2 -= list_title->get_h() + mwindow->theme->widget_border;
y += batch_list->get_h() + mwindow->theme->widget_border;
start_button->reposition_window(x, y);
- x = w / 2 - stop_button->get_w() / 2;
+ x = w / 3 - stop_button->get_w() / 3;
stop_button->reposition_window(x, y);
x = w - cancel_button->get_w() - xs10;
cancel_button->reposition_window(x, y);
+ x = w / 1.5 - help_button->get_w() / 1.5;
+ help_button->reposition_window(x, y);
return 1;
}
: BC_GenericButton(x, y, _("New"))
{
this->thread = thread;
+ set_tooltip(_("Create a new batch"));
}
int BatchRenderNew::handle_event()
: BC_GenericButton(x, y, _("Delete"))
{
this->thread = thread;
+ set_tooltip(_("Delete loaded (highlighted) batch"));
}
int BatchRenderDelete::handle_event()
int BatchRenderSaveList::keypress_event() {
if( get_keypress() == 's' ||
get_keypress() == 'S' ) return handle_event();
- return 0;
+ return context_help_check_and_show();
}
int result2 = filewindow.run_window();
if( !result2 ) {
+ thread->gui->lock_window("BatchRenderLoadList::run");
strcpy(thread->batch_path, filewindow.get_submitted_path());
thread->gui->batch_path->update(thread->batch_path);
thread->mwindow->defaults->update("DEFAULT_BATCHLOADPATH", thread->batch_path);
thread->gui->create_list(1);
thread->current_job = 0;
thread->gui->change_job();
+ thread->gui->unlock_window();
}
startup_lock->lock("BatchRenderLoadList::run");
int BatchRenderLoadList::keypress_event() {
if( get_keypress() == 'o' ||
get_keypress() == 'O' ) return handle_event();
- return 0;
+ return context_help_check_and_show();
}
BatchRenderCurrentEDL::BatchRenderCurrentEDL(BatchRenderThread *thread,
: BC_GenericButton(x, y, _("Use Current EDL"))
{
this->thread = thread;
+ set_tooltip(_("Replaces highlighted batch job with session currently on timeline. File on disk NOT changed!"));
}
int BatchRenderCurrentEDL::handle_event()
: BC_GenericButton(x, y, _("Save to EDL Path"))
{
this->thread = thread;
+ set_tooltip(_("WARNING - saves to loaded (highlighted) EDL, *overwrites* highlighted project!"));
}
int BatchRenderUpdateEDL::handle_event()
: BC_GenericButton(x, y, _("Start"))
{
this->thread = thread;
+ set_tooltip(_("Start batch rendering"));
}
int BatchRenderStart::handle_event()
: BC_GenericButton(x, y, _("Stop"))
{
this->thread = thread;
+ set_tooltip(_("Stops currently active batch rendering"));
}
int BatchRenderStop::handle_event()
: BC_CheckBox(x, y, thread->warn, _("warn if jobs/session mismatched"))
{
this->thread = thread;
+ set_tooltip(_("Prevents rendering if loaded session and batch job(s) differ"));
}
int BatchRenderWarning::handle_event()
: BC_GenericButton(x, y, _("Close"))
{
this->thread = thread;
+ set_tooltip(_("Closes this window"));
}
int BatchRenderCancel::handle_event()
thread->gui->set_done(1);
return 1;
}
+ return context_help_check_and_show();
+}
+
+//new help button
+BatchRenderHelp::BatchRenderHelp(BatchRenderThread *thread, int x, int y)
+ : BC_GenericButton(x, y, _("?"))
+{
+ this->thread = thread;
+ set_tooltip(_("Open quick start guide in default browser"));
+}
+
+int BatchRenderHelp::handle_event()
+{
+ system("xdg-open file://$CIN_DAT/doc/help_br_index.html");
return 0;
}