28 #include <wx/stdpaths.h>
37 #pragma comment(lib, "PowrProf.lib")
39 #include <wx/taskbarbutton.h>
46 BatchFrame* MyBatchFrame = wxGetApp().GetFrame();
51 if(filenames.GetCount()==0)
55 for(
unsigned int i=0; i< filenames.GetCount(); i++)
57 wxFileName file(filenames[i]);
60 if (file.GetExt().CmpNoCase(
"pto") == 0 ||
61 file.GetExt().CmpNoCase(
"ptp") == 0 ||
62 file.GetExt().CmpNoCase(
"pts") == 0 )
92 wxXmlResource::Get()->LoadFrame(
this, (wxWindow* )NULL,
"batch_frame");
95 wxApp::s_macExitMenuItemId = XRCID(
"menu_exit");
96 wxApp::s_macHelpMenuTitleName = _(
"&Help");
98 SetMenuBar(wxXmlResource::Get()->LoadMenuBar(
this,
"batch_menu"));
101 SetToolBar(wxXmlResource::Get()->LoadToolBar(
this,
"batch_toolbar"));
103 int widths[2] = { -1, 150 };
105 SetStatusWidths(2, widths);
106 SetStatusText(_(
"Not doing much..."));
113 wxIconBundle myIcons(
m_xrcPrefix +
"data/ptbatcher.ico", wxBITMAP_TYPE_ICO);
123 if(wxGetKeyState(WXK_COMMAND))
126 wxString text(_(
"You have pressed the Command key."));
128 wxString text(_(
"You have pressed the Control key."));
131 text.Append(_(
"Should the loading of the batch queue be skipped?"));
149 m_endChoice = XRCCTRL(*
this,
"choice_end", wxChoice);
153 #if !defined __WXMAC__ && !defined __WXOSX_COCOA__
159 SYSTEM_POWER_CAPABILITIES pwrCap;
160 if (GetPwrCapabilities(&pwrCap))
166 if (pwrCap.SystemS4 && pwrCap.HiberFilePresent)
178 if (wxTaskBarIcon::IsAvailable())
182 GetMenuBar()->Enable(XRCID(
"menu_tray"),
true);
185 wxConfigBase::Get()->Read(
"/BatchFrame/minimizeTray", &minTray,
false);
186 GetMenuBar()->Check(XRCID(
"menu_tray"), minTray);
277 if(tempFile.FileExists())
280 modify=tempFile.GetModificationTime();
342 wxTextEntryDialog dlg(
this,_(
"Please enter the command-line application to execute:"),_(
"Enter application"));
343 wxTheApp->SetEvtHandlerEnabled(
false);
344 if(dlg.ShowModal() == wxID_OK)
346 wxString
line = dlg.GetValue();
352 wxTheApp->SetEvtHandlerEnabled(
true);
357 wxString defaultdir = wxConfigBase::Get()->Read(
"/BatchFrame/actualPath",wxEmptyString);
358 wxDirDialog dlg(
this,
359 _(
"Specify a directory to search for projects in"),
360 defaultdir, wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST);
361 dlg.SetPath(wxConfigBase::Get()->Read(
"/BatchFrame/actualPath",wxEmptyString));
362 if (dlg.ShowModal() == wxID_OK)
364 wxConfig::Get()->Write(
"/BatchFrame/actualPath", dlg.GetPath());
372 findpano_dlg.ShowModal();
377 wxString defaultdir = wxConfigBase::Get()->Read(
"/BatchFrame/actualPath", wxEmptyString);
379 _(
"Specify project source file(s)"),
380 defaultdir, wxEmptyString,
381 _(
"Project files (*.pto)|*.pto|All files (*)|*"),
382 wxFD_OPEN , wxDefaultPosition);
383 dlg.SetDirectory(defaultdir);
385 if (dlg.ShowModal() == wxID_OK)
387 wxConfig::Get()->Write(
"/BatchFrame/actualPath", wxPathOnly(dlg.GetPath()));
389 if (sequenceDialog.IsValidPanorama())
391 if (sequenceDialog.ShowModal())
398 wxOK | wxICON_EXCLAMATION,
this);
405 wxString defaultdir = wxConfigBase::Get()->Read(
"/BatchFrame/actualPath",wxEmptyString);
407 _(
"Specify project source file(s)"),
408 defaultdir, wxEmptyString,
409 _(
"Project files (*.pto)|*.pto|All files (*)|*"),
410 wxFD_OPEN | wxFD_MULTIPLE, wxDefaultPosition);
411 dlg.SetDirectory(defaultdir);
413 if (dlg.ShowModal() == wxID_OK)
419 wxConfig::Get()->Write(
"/BatchFrame/actualPath", wxPathOnly(paths[0]));
421 wxConfig::Get()->Write(
"/BatchFrame/actualPath", dlg.GetDirectory());
423 for(
unsigned int i=0; i<paths.GetCount(); i++)
433 wxString defaultdir = wxConfigBase::Get()->Read(
"/BatchFrame/actualPath",wxEmptyString);
435 _(
"Specify project source file(s)"),
436 defaultdir, wxEmptyString,
437 _(
"Project files (*.pto)|*.pto|All files (*)|*"),
438 wxFD_OPEN | wxFD_MULTIPLE, wxDefaultPosition);
439 dlg.SetDirectory(defaultdir);
441 if (dlg.ShowModal() == wxID_OK)
447 wxConfig::Get()->Write(
"/BatchFrame/actualPath", wxPathOnly(paths[0]));
449 wxConfig::Get()->Write(
"/BatchFrame/actualPath", dlg.GetDirectory());
452 for(
unsigned int i=0; i<paths.GetCount(); i++)
465 dir.Traverse(traverser);
467 for(
unsigned int i=0; i<projects.GetCount(); i++)
478 SetStatusText(wxString::Format(_(
"Added projects from dir %s"), aDir.c_str()));
488 s=wxString::Format(_(
"Add project %s to stitching queue."),aFile.c_str());
491 s=wxString::Format(_(
"Add project %s to assistant queue."),aFile.c_str());
501 for (
size_t i = 0; i < fileList.GetCount(); ++i)
511 GetToolBar()->ToggleTool(XRCID(
"tool_pause"),
false);
514 SetStatusText(_(
"Batch stopped"));
524 if(selected.size()== 1)
529 SetStatusText(_(
"The prefix of command cannot be changed."));
535 wxFileName prefix(project->
prefix);
536 wxFileDialog dlg(0, wxString::Format(_(
"Specify output prefix for project %s"), project->
path),
538 prefix.GetFullName(), wxEmptyString,
539 wxFD_SAVE, wxDefaultPosition);
540 if (dlg.ShowModal() == wxID_OK)
545 list.Add(dlg.GetPath());
547 if(dlg.ShowModal()!=wxID_OK)
552 wxFileName prefix(dlg.GetPath());
553 while (!prefix.IsDirWritable())
555 hugin_utils::HuginMessageBox(wxString::Format(_(
"You have no permissions to write in folder \"%s\".\nPlease select another folder for the final output."), prefix.GetPath()),
556 _(
"PTBatcherGUI"), wxOK | wxICON_INFORMATION,
this);
557 if (dlg.ShowModal() != wxID_OK)
561 prefix = dlg.GetPath();
564 wxString outname(dlg.GetPath());
572 SetStatusText(_(
"The prefix of an assistant target cannot be changed."));
578 if (selected.empty())
580 SetStatusText(_(
"Please select a project"));
585 SetStatusText(_(
"Please select only one project"));
623 if (selectedProjects.empty())
625 SetStatusText(_(
"Please select a project"));
631 for (
auto& i : selectedProjects)
634 if (projectI->
id < 0)
637 SetStatusText(_(
"Changing user defined sequence is not possible for application entries."));
640 if (target != projectI->
target)
643 SetStatusText(_(
"You can change the user defined sequence only for the same type of operation (either stitching or assistant)."));
648 if (dialog.ShowModal() == wxID_OK)
651 for (
auto& i : selectedProjects)
667 else if(returnCode == 2)
671 if(GetToolBar()->GetToolState(XRCID(
"tool_pause")))
673 GetToolBar()->ToggleTool(XRCID(
"tool_pause"),
false);
688 if (selected.size() == 1)
702 if (selected.size() == 1)
715 wxString defaultdir = wxConfigBase::Get()->Read(
"/BatchFrame/batchPath",wxEmptyString);
717 _(
"Specify batch file to open"),
718 defaultdir, wxEmptyString,
719 _(
"Batch file (*.ptq)|*.ptq;|All files (*)|*"),
720 wxFD_OPEN, wxDefaultPosition);
721 if (dlg.ShowModal() == wxID_OK)
723 wxConfig::Get()->Write(
"/BatchFrame/batchPath", dlg.GetDirectory());
739 const wxFileName exePath(wxStandardPaths::Get().GetExecutablePath());
741 if (selected.size() == 1)
745 wxExecute(_T(
"open -b net.sourceforge.Hugin \"" +
m_batch->
GetProject(*selected.begin())->path + _T(
"\"")));
747 wxExecute(exePath.GetPath(wxPATH_GET_VOLUME | wxPATH_GET_SEPARATOR) + _T(
"hugin \"" +
m_batch->
GetProject(*selected.begin())->path + _T(
"\" -notips")));
751 SetStatusText(_(
"Cannot open app in Hugin."));
756 if (selected.empty())
759 if (
hugin_utils::HuginMessageBox(_(
"No project selected. Open Hugin without project?"), _(
"PTBatcherGUI"), wxYES_NO|wxICON_INFORMATION,
this) == wxYES)
762 wxExecute(_T(
"open -b net.sourceforge.Hugin"));
764 wxExecute(exePath.GetPath(wxPATH_GET_VOLUME | wxPATH_GET_SEPARATOR) + _T(
"hugin"));
771 SetStatusText(_(
"Please select only one project"));
783 GetToolBar()->ToggleTool(XRCID(
"tool_pause"),
true);
784 SetStatusText(_(
"Batch paused"));
793 GetToolBar()->ToggleTool(XRCID(
"tool_pause"),
false);
794 SetStatusText(_(
"Continuing batch..."));
803 GetToolBar()->ToggleTool(XRCID(
"tool_pause"),
false);
810 bool removeErrors=
false;
813 if (
hugin_utils::HuginMessageBox(_(
"There are failed projects in the list.\nRemove them too?"), _(
"PTBatcherGUI"), wxYES_NO | wxICON_INFORMATION,
this) == wxYES)
818 for(
int i=
projListBox->GetItemCount()-1; i>=0; i--)
835 if(!selected.empty())
837 for (
auto i = selected.rbegin(); i != selected.rend(); ++i)
839 const int selIndex = *i;
842 if (
hugin_utils::HuginMessageBox(_(
"Cannot remove project in progress.\nDo you want to cancel it?"), _(
"PTBatcherGUI"), wxYES_NO | wxICON_INFORMATION,
this) == wxYES)
849 SetStatusText(wxString::Format(_(
"Removed project %s"),
m_batch->
GetProject(selIndex)->
path.c_str()));
859 SetStatusText(_(
"Please select a project to remove"));
867 if(!selected.empty())
869 for (
auto selIndex : selected)
873 if (
hugin_utils::HuginMessageBox(_(
"Cannot reset project in progress.\nDo you want to cancel it?"), _(
"PTBatcherGUI"), wxYES_NO | wxICON_INFORMATION,
this) == wxYES)
887 SetStatusText(_(
"Please select a project to reset"));
896 if (
hugin_utils::HuginMessageBox(_(
"Cannot reset projects in progress.\nDo you want to cancel the batch?"), _(
"PTBatcherGUI"), wxYES_NO | wxICON_INFORMATION,
this) == wxYES)
903 for(
int i=
projListBox->GetItemCount()-1; i>=0; i--)
926 wxString defaultdir = wxConfigBase::Get()->Read(
"/BatchFrame/batchPath",wxEmptyString);
928 _(
"Specify batch file to save"),
929 defaultdir, wxEmptyString,
930 _(
"Batch file (*.ptq)|*.ptq;|All files (*)|*"),
931 wxFD_SAVE | wxFD_OVERWRITE_PROMPT, wxDefaultPosition);
932 if (dlg.ShowModal() == wxID_OK)
934 wxConfig::Get()->Write(
"/BatchFrame/batchPath", dlg.GetDirectory());
942 if(!selected.empty())
944 for (
auto selIndex : selected)
953 GetToolBar()->ToggleTool(XRCID(
"tool_pause"),
false);
987 for (
unsigned int i = 0; i<list->GetCount(); i++)
989 if (static_cast<Batch::EndTask>((
size_t)list->GetClientData(i)) == endTask)
991 list->SetSelection(i);
995 list->SetSelection(0);
1000 wxConfigBase* config=wxConfigBase::Get();
1003 #if defined __WXMAC__ || defined __WXOSX_COCOA__
1006 i=config->Read(
"/BatchFrame/ShutdownCheck", 0l);
1013 config->DeleteEntry(
"/BatchFrame/ShutdownCheck");
1015 i = config->Read(
"/BatchFrame/AtEnd", 0l);
1016 #if defined __WXMAC__ || defined __WXOSX_COCOA__
1025 i=config->Read(
"/BatchFrame/OverwriteCheck", 0l);
1026 XRCCTRL(*
this,
"cb_overwrite",wxCheckBox)->SetValue(i!=0);
1028 i=config->Read(
"/BatchFrame/VerboseCheck", 0l);
1029 XRCCTRL(*
this,
"cb_verbose",wxCheckBox)->SetValue(i!=0);
1031 i=config->Read(
"/BatchFrame/AutoRemoveCheck", 1l);
1032 XRCCTRL(*
this,
"cb_autoremove",wxCheckBox)->SetValue(i!=0);
1034 i=config->Read(
"/BatchFrame/AutoStitchCheck", 0l);
1035 XRCCTRL(*
this,
"cb_autostitch",wxCheckBox)->SetValue(i!=0);
1037 i=config->Read(
"/BatchFrame/SaveLog", 0l);
1038 XRCCTRL(*
this,
"cb_savelog",wxCheckBox)->SetValue(i!=0);
1049 return XRCCTRL(*
this,
"cb_overwrite",wxCheckBox)->IsChecked();
1054 return XRCCTRL(*
this,
"cb_verbose",wxCheckBox)->IsChecked();
1059 return XRCCTRL(*
this,
"cb_autoremove",wxCheckBox)->IsChecked();
1064 return XRCCTRL(*
this,
"cb_autostitch",wxCheckBox)->IsChecked();
1069 return XRCCTRL(*
this,
"cb_savelog",wxCheckBox)->IsChecked();
1074 wxConfigBase* config=wxConfigBase::Get();
1075 if(event.IsChecked())
1078 config->Write(
"/BatchFrame/OverwriteCheck", 1l);
1083 config->Write(
"/BatchFrame/OverwriteCheck", 0l);
1091 wxConfigBase* config=wxConfigBase::Get();
1092 config->Write(
"/BatchFrame/AtEnd", static_cast<long>(
m_batch->
atEnd));
1098 wxConfigBase* config=wxConfigBase::Get();
1099 if(event.IsChecked())
1102 config->Write(
"/BatchFrame/VerboseCheck", 1l);
1107 config->Write(
"/BatchFrame/VerboseCheck", 0l);
1121 wxConfigBase* config=wxConfigBase::Get();
1124 config->Write(
"/BatchFrame/AutoRemoveCheck", 1l);
1128 config->Write(
"/BatchFrame/AutoRemoveCheck", 0l);
1136 wxConfigBase* config=wxConfigBase::Get();
1139 config->Write(
"/BatchFrame/AutoStitchCheck", 1l);
1143 config->Write(
"/BatchFrame/AutoStitchCheck", 0l);
1151 wxConfigBase* config=wxConfigBase::Get();
1154 config->Write(
"/BatchFrame/SaveLog", 1l);
1158 config->Write(
"/BatchFrame/SaveLog", 0l);
1169 _(
"PTBatcherGUI"), wxYES_NO | wxICON_INFORMATION,
this);
1170 message->SetYesNoLabels(_(
"Clear batch queue now"), _(
"Keep batch queue"));
1171 if (message->ShowModal() == wxID_YES)
1178 wxConfigBase* config=wxConfigBase::Get();
1181 config->Write(
"/BatchFrame/Max", 1l);
1182 config->Write(
"/BatchFrame/Minimized", 0l);
1186 config->Write(
"/BatchFrame/Max", 0l);
1187 if(
m_tray!=NULL && !IsShown())
1189 config->Write(
"/BatchFrame/Minimized", 1l);
1193 config->Write(
"/BatchFrame/Minimized", 0l);
1194 config->Write(
"/BatchFrame/Width", GetSize().GetWidth());
1195 config->Write(
"/BatchFrame/Height", GetSize().GetHeight());
1221 SetStatusText(_(
"Starting batch"));
1238 if(index>=0 && index<(
projListBox->GetItemCount()-1))
1260 GetToolBar()->ToggleTool(XRCID(
"tool_pause"),
false);
1272 wxConfigBase* config=wxConfigBase::Get();
1273 int width = config->Read(
"/BatchFrame/Width", -1l);
1274 int height = config->Read(
"/BatchFrame/Height", -1l);
1275 int max = config->Read(
"/BatchFrame/Max", -1l);
1276 int min = config->Read(
"/BatchFrame/Minimized", -1l);
1277 if((width != -1) && (height != -1))
1279 SetSize(width,height);
1283 SetSize(this->FromDIP(wxSize(600,400)));
1302 failedProjects_dlg.ShowModal();
1308 SetStatusText(e.GetString());
1309 if (
m_tray && e.GetInt() == 1)
1324 #if defined __WXMSW__ && wxUSE_TASKBARBUTTON
1328 wxTaskBarButton* taskBarButton = MSWGetTaskBarButton();
1329 if (taskBarButton != NULL)
1333 taskBarButton->SetProgressValue(wxTASKBAR_BUTTON_NO_PROGRESS);
1337 taskBarButton->SetProgressRange(100);
1338 taskBarButton->SetProgressState(
m_batch->
IsPaused() ? wxTASKBAR_BUTTON_PAUSED : wxTASKBAR_BUTTON_NORMAL);
1351 Show(!e.IsIconized());
1359 m_batch->
verbose=XRCCTRL(*
this,
"cb_verbose",wxCheckBox)->IsChecked();
1366 if (!e.IsIconized())
1377 m_batch->
verbose=XRCCTRL(*
this,
"cb_verbose",wxCheckBox)->IsChecked();
1384 std::set<long> selectedID;
1385 for (
auto index : selected)
1391 for(
auto id:selectedID)
1404 wxConfigBase* config=wxConfigBase::Get();
1405 config->Write(
"/BatchFrame/minimizeTray", event.IsChecked());
bool NoErrors()
Returns true if there are no failed projects in batch.
int GetRunningCount()
Returns number of projects currently in progress.
int ClearBatch()
Clears batch list and returns 0 if succesful.
void SetLocaleAndXRC(wxLocale *locale, wxString xrc)
void OnButtonChangePrefix(wxCommandEvent &event)
bool FileExists(const std::string &filename)
checks if file exists
void ChangePrefix(int index, wxString newPrefix)
bool GetCheckAutoRemove()
return if auto remove checkbox is checked
Definition of GenerateSequenceDialog class.
void SwapProject(int index)
Swaps position in batch of project at index with project at index+1.
void RemoveProjectAtIndex(int selIndex)
Removes project at index from batch list.
int GetProjectCount()
Returns number of projects in batch list.
wxString userDefindSequence
bool GetCheckSaveLog()
return if always save log is checked
void AddDirToList(wxString aDir)
class for showing a status bar with progress, the progress bar is always in the last field of the sta...
void SetMissing(int index)
std::unique_ptr< wxMessageDialogBase > MessageDialog
Definition of failed projects dialog.
void OnButtonReset(wxCommandEvent &event)
ProgressStatusBar * m_progStatusBar
void SetStatus(int index, Project::Status status)
Used internally to set status of selected project.
size_t GetFailedProjectsCount()
returns number of failed projects
Batch::EndTask GetEndTask()
return which task should be executed at end
void OnButtonOpenBatch(wxCommandEvent &event)
void AddToList(wxString aFile, Project::Target target=Project::STITCHING, wxString userDefined=wxEmptyString)
void CancelBatch()
Stops batch run, failing projects in progress.
void OnButtonGenerateSequence(wxCommandEvent &e)
generate a sequence of panoramas
void OnButtonPause(wxCommandEvent &event)
void OnProcessTerminate(wxProcessEvent &event)
Dialog for generate panoramas from a sequence of images.
void AppendProject(Project *project)
void OnButtonHelp(wxCommandEvent &event)
void OnButtonChangeUserDefinedSequence(wxCommandEvent &event)
void OnClose(wxCloseEvent &event)
bool GetCheckOverwrite()
return if overwrite checkbox is checked
void AddProjectToBatch(wxString projectFile, wxString outputFile=wxEmptyString, wxString userDefinedSequence=wxEmptyString, Project::Target target=Project::STITCHING)
Adds a project entry in the batch list.
void OnButtonSaveBatch(wxCommandEvent &event)
wxString GetText(int row, int column)
wxString GetNewSequence()
returns the newly selected sequence
void AddAppToBatch(wxString app)
Adds an application entry in the batch list.
int LoadBatchFile(wxString file)
Clears current batch list and loads projects from batch file.
bool IsPaused()
Returns true if batch execution is currently paused.
void UpdateBatchVerboseStatus()
update visibility of verbose output window depending on status of verbose checkbox ...
MessageDialog GetMessageDialog(const wxString &message, const wxString &caption, int style, wxWindow *parent)
void ChangePrefix(int index, wxString newPrefix)
Changes output prefix for project at index.
Batch processor for Hugin with GUI.
void OnUpdateListBox(wxTimerEvent &event)
called by thread to update listbox
void ChangePrefix(int index, wxString newPrefix)
void ChangeUserDefined(int index, wxString newUserDefined)
std::set< unsigned int > UIntSet
void OnButtonSkip(wxCommandEvent &event)
Project::Status GetStatus(int index)
Returns current status of project at index.
bool IsRunning()
return true, if batch is running
void OnRefillListBox(wxCommandEvent &e)
called if the project box needs to be updated, because projects were added or deleted ...
void UpdateTaskBarProgressBar()
update the progress bar in the task bar
void PauseBatch()
Pauses and continues batch execution.
void OnButtonAddCommand(wxCommandEvent &event)
void OnButtonMoveUp(wxCommandEvent &event)
Dialog for finding panorama in given directory.
class for showing a taskbar/tray icon
Definition of dialog to change user defined sequence.
void ChangeUserDefined(int index, wxString newUserDefined)
int GetProgress()
return current progress value, should be in range 0 - 100, or -1 if the progress gauge is hidden ...
bool UpdateStatus(int index, Project *project)
void UpdateTrayIcon(const bool createTrayIcon)
create or destroy the tray icon
void OnMinimizeTrayMenu(wxCommandEvent &e)
void SaveTemp()
Saves batch list to temporary file.
void OnButtonClear(wxCommandEvent &event)
Project * GetProject(int index)
Returns project at index.
void OnCheckVerbose(wxCommandEvent &event)
wxStatusBar * OnCreateStatusBar(int number, long style, wxWindowID id, const wxString &name)
Dialog for changing the user defined sequence.
void ShowOutput(bool isVisible=true)
Set visibility of all running projects.
void OnButtonSearchPano(wxCommandEvent &e)
void OnButtonAddToStitchingQueue(wxCommandEvent &event)
let the user select a project file which should be added to the stitching queue
wxArrayString GetProjectFiles()
BatchTaskBarIcon * m_tray
void OnCheckOverwrite(wxCommandEvent &event)
void OnButtonOpenWithHugin(wxCommandEvent &event)
void OnMinimize(wxIconizeEvent &e)
handle when minimize or restore image
void OnButtonResetAll(wxCommandEvent &event)
Batch processor for Hugin with GUI.
void OnButtonMoveDown(wxCommandEvent &event)
wxHelpController & GetHelpController()
return help controller for open help
bool IsRunning()
returns true, if batch is running
void RunBatch()
Starts batch execution.
void SwapProject(int index, bool down)
bool OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &filenames)
File/directory drag and drop handler method.
void SetProgress(int progress)
update progress bar
void OnButtonCancel(wxCommandEvent &event)
HuginBase::UIntSet GetSelectedProjects()
void OnChoiceEnd(wxCommandEvent &event)
void OnButtonRemoveComplete(wxCommandEvent &event)
wxTimer * m_updateProjectsTimer
void CancelProject(int index)
Cancels project at index in batch, failing it.
void OnBatchInformation(wxCommandEvent &e)
called when batch wants to show some progress message
void SaveBatchFile(wxString file)
Saves batch list to file.
bool CompareProjectsInLists(int stitchListIndex, int batchListIndex)
Compares two project at indexes in both lists and returns true if they have identical project ids...
void OnUserExit(wxCommandEvent &event)
bool GetCheckAutoStitch()
return if auto stitch checkbox is checked
void OnCheckAutoRemove(wxCommandEvent &event)
event handler called when auto remove checkbox was changed
Simple class that forward the drop to the mainframe.
void SelectEndTask(wxControlWithItems *list, const Batch::EndTask endTask)
void OnBatchFailed(wxCommandEvent &event)
called when batch was finished and there are failed projects
bool IsPaused()
returns true, if batch is paused
void OnCheckAutoStitch(wxCommandEvent &event)
event handler called when auto stitch checkbox was changed
void ReloadProject(int index, Project *project)
Dialog for finding panorama in given directory.
void OnCheckSaveLog(wxCommandEvent &event)
event handler called when always save log checkbox was changed
void OnButtonRemoveFromList(wxCommandEvent &event)
ProjectListBox * projListBox
void OnProgress(wxCommandEvent &event)
event handler for update progress controls
void OnButtonAddDir(wxCommandEvent &event)
int LoadTemp()
Loads temporary batch file.
bool GetCheckVerbose()
return if verbose checkbox is checked
void OnButtonRunBatch(wxCommandEvent &event)
void SetInternalVerbose(bool newVerbose)
sets the current verbose status, does not update the checkbox
int HuginMessageBox(const wxString &message, const wxString &caption, int style, wxWindow *parent)
BatchFrame(wxLocale *locale, wxString xrc)
void ChangeUserDefined(int index, wxString newUserDefined)
Changes user defined sequence for project at index.
void SwapProject(int index)
void OnButtonAddToAssistantQueue(wxCommandEvent &event)
let the user select a project file which should be added to the stitching queue
void AddArrayToList(const wxArrayString &fileList, Project::Target target)