branch:
details: http://hugin.hg.sourceforge.net/hgweb/hugin/hugin/hgroot/hugin/hugin/rev/6b0238c5509e
changeset: 6026:6b0238c5509e
user: tmodes
date: Sun Nov 11 12:06:00 2012 +0100
description:
Added more option to remember log messages
* Hugin can now copy log messages to clipboard
* PTBatcherGUI can now save all log messages to disc.
diffstat:
src/hugin1/base_wx/MyExternalCmdExecDialog.cpp | 10 ++++
src/hugin1/base_wx/MyExternalCmdExecDialog.h | 2 +
src/hugin1/hugin/PreferencesDialog.cpp | 6 ++
src/hugin1/hugin/xrc/batch_frame.xrc | 5 ++
src/hugin1/hugin/xrc/pref_dialog.xrc | 19 +++++++++
src/hugin1/ptbatcher/Batch.cpp | 17 +++++--
src/hugin1/ptbatcher/Batch.h | 1 +
src/hugin1/ptbatcher/BatchFrame.cpp | 54 +++++++++++++++++++++++++-
src/hugin1/ptbatcher/BatchFrame.h | 35 +++++-----------
9 files changed, 118 insertions(+), 31 deletions(-)
diffs (310 lines):
diff -r a2b73e9cde1c -r 6b0238c5509e src/hugin1/base_wx/MyExternalCmdExecDialog.cpp
--- a/src/hugin1/base_wx/MyExternalCmdExecDialog.cpp Sun Nov 11 10:26:40 2012 +0100
+++ b/src/hugin1/base_wx/MyExternalCmdExecDialog.cpp Sun Nov 11 12:06:00 2012 +0100
@@ -519,6 +519,12 @@
return m_textctrl->SaveFile(filename);
};
+void MyExecPanel::CopyLogToClipboard()
+{
+ m_textctrl->SelectAll();
+ m_textctrl->Copy();
+};
+
// ----------------------------------------------------------------------------
// MyProcess
// ----------------------------------------------------------------------------
@@ -617,6 +623,10 @@
void MyExecDialog::OnProcessTerminate(wxProcessEvent & event)
{
DEBUG_DEBUG("Process terminated with return code: " << event.GetExitCode());
+ if(wxConfigBase::Get()->Read(wxT("CopyLogToClipboard"), 0l)==1l)
+ {
+ m_execPanel->CopyLogToClipboard();
+ };
if (m_cancelled) {
EndModal(HUGIN_EXIT_CODE_CANCELLED);
} else {
diff -r a2b73e9cde1c -r 6b0238c5509e src/hugin1/base_wx/MyExternalCmdExecDialog.h
--- a/src/hugin1/base_wx/MyExternalCmdExecDialog.h Sun Nov 11 10:26:40 2012 +0100
+++ b/src/hugin1/base_wx/MyExternalCmdExecDialog.h Sun Nov 11 12:06:00 2012 +0100
@@ -77,6 +77,8 @@
/** save the content of the window into a given log file
@return true if log was saved successful */
bool SaveLog(const wxString &filename);
+ /** copy the content of the log window into the clipboard */
+ void CopyLogToClipboard();
virtual ~MyExecPanel();
diff -r a2b73e9cde1c -r 6b0238c5509e src/hugin1/hugin/PreferencesDialog.cpp
--- a/src/hugin1/hugin/PreferencesDialog.cpp Sun Nov 11 10:26:40 2012 +0100
+++ b/src/hugin1/hugin/PreferencesDialog.cpp Sun Nov 11 12:06:00 2012 +0100
@@ -467,6 +467,10 @@
t = cfg->Read(wxT("smartUndo"), HUGIN_SMART_UNDO) == 1;
MY_BOOL_VAL("prefs_smart_undo", t);
+ // copy log to clipboard
+ t = cfg->Read(wxT("CopyLogToClipboard"), 0l) == 1;
+ MY_BOOL_VAL("prefs_copy_log", t);
+
t = cfg->Read(wxT("/GLPreviewFrame/ShowProjectionHints"), HUGIN_SHOW_PROJECTION_HINTS) == 1;
MY_BOOL_VAL("pref_show_projection_hints", t)
};
@@ -695,6 +699,7 @@
cfg->Write(wxT("language"), int(HUGIN_LANGUAGE));
// smart undo
cfg->Write(wxT("smartUndo"), HUGIN_SMART_UNDO);
+ cfg->Write(wxT("CopyLogToClipboard"), 0l);
// projection hints
cfg->Write(wxT("/GLPreviewFrame/ShowProjectionHints"), HUGIN_SHOW_PROJECTION_HINTS);
}
@@ -860,6 +865,7 @@
DEBUG_INFO("Language Selection ID: " << templ);
// smart undo
cfg->Write(wxT("smartUndo"), MY_G_BOOL_VAL("prefs_smart_undo"));
+ cfg->Write(wxT("CopyLogToClipboard"), MY_G_BOOL_VAL("prefs_copy_log"));
// show projections hints
cfg->Write(wxT("/GLPreviewFrame/ShowProjectionHints"), MY_G_BOOL_VAL("pref_show_projection_hints"));
// cursor
diff -r a2b73e9cde1c -r 6b0238c5509e src/hugin1/hugin/xrc/batch_frame.xrc
--- a/src/hugin1/hugin/xrc/batch_frame.xrc Sun Nov 11 10:26:40 2012 +0100
+++ b/src/hugin1/hugin/xrc/batch_frame.xrc Sun Nov 11 12:06:00 2012 +0100
@@ -114,6 +114,11 @@
</object>
<flag>wxEXPAND</flag>
</object>
+ <object class="sizeritem">
+ <object class="wxCheckBox" name="cb_savelog">
+ <label>Always save log</label>
+ </object>
+ </object>
</object>
<flag>wxALL|wxEXPAND</flag>
<border>5</border>
diff -r a2b73e9cde1c -r 6b0238c5509e src/hugin1/hugin/xrc/pref_dialog.xrc
--- a/src/hugin1/hugin/xrc/pref_dialog.xrc Sun Nov 11 10:26:40 2012 +0100
+++ b/src/hugin1/hugin/xrc/pref_dialog.xrc Sun Nov 11 12:06:00 2012 +0100
@@ -123,6 +123,25 @@
<flag>wxLEFT|wxEXPAND|wxALIGN_RIGHT|wxALIGN_TOP</flag>
<border>5</border>
</object>
+ <object class="sizeritem">
+ <object class="wxStaticText">
+ <label>Progress:</label>
+ </object>
+ <flag>wxALL|wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL</flag>
+ <border>5</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxCheckBox" name="prefs_copy_log">
+ <label>Remember log messages.</label>
+ <tooltip>Copies the log messages to the clipboard.</tooltip>
+ </object>
+ <flag>wxALL|wxEXPAND|wxALIGN_TOP</flag>
+ <border>5</border>
+ </object>
+ <object class="spacer">
+ <flag>wxALL|wxEXPAND|wxALIGN_TOP</flag>
+ <border>5</border>
+ </object>
<growablecols>2</growablecols>
<object class="spacer">
<size>0,0</size>
diff -r a2b73e9cde1c -r 6b0238c5509e src/hugin1/ptbatcher/Batch.cpp
--- a/src/hugin1/ptbatcher/Batch.cpp Sun Nov 11 10:26:40 2012 +0100
+++ b/src/hugin1/ptbatcher/Batch.cpp Sun Nov 11 12:06:00 2012 +0100
@@ -51,6 +51,7 @@
verbose = false;
autoremove = false;
autostitch = false;
+ saveLog = false;
gui = bgui;
m_cancelled = false;
m_paused = false;
@@ -536,12 +537,9 @@
m_paused = false;
}
i = GetIndex(event.GetId());
- if (event.GetExitCode() != 0 || event.GetTimestamp()==-1) //timestamp is used as a fake exit code because it cannot be set manually
+ wxString savedLogfile=wxEmptyString;
+ if(saveLog || event.GetExitCode() != 0 || event.GetTimestamp()==-1)
{
- m_projList.Item(i).status=Project::FAILED;
- struct FailedProject failedProject;
- failedProject.project=m_projList.Item(i).path;
- failedProject.logfile=wxEmptyString;
//get filename for automatic saving of log file
wxFileName logFile(m_projList.Item(i).path);
logFile.MakeAbsolute();
@@ -558,9 +556,16 @@
//now save log file
if(((RunStitchFrame*)(event.GetEventObject()))->SaveLog(logFile.GetFullPath()))
{
- failedProject.logfile=logFile.GetFullPath();
+ savedLogfile=logFile.GetFullPath();
}
};
+ };
+ if (event.GetExitCode() != 0 || event.GetTimestamp()==-1) //timestamp is used as a fake exit code because it cannot be set manually
+ {
+ m_projList.Item(i).status=Project::FAILED;
+ struct FailedProject failedProject;
+ failedProject.project=m_projList.Item(i).path;
+ failedProject.logfile=savedLogfile;
//remember failed project
m_failedProjects.push_back(failedProject);
}
diff -r a2b73e9cde1c -r 6b0238c5509e src/hugin1/ptbatcher/Batch.h
--- a/src/hugin1/ptbatcher/Batch.h Sun Nov 11 10:26:40 2012 +0100
+++ b/src/hugin1/ptbatcher/Batch.h Sun Nov 11 12:06:00 2012 +0100
@@ -58,6 +58,7 @@
bool verbose;
bool autostitch;
bool autoremove;
+ bool saveLog;
bool gui;
/** Main constructor */
diff -r a2b73e9cde1c -r 6b0238c5509e src/hugin1/ptbatcher/BatchFrame.cpp
--- a/src/hugin1/ptbatcher/BatchFrame.cpp Sun Nov 11 10:26:40 2012 +0100
+++ b/src/hugin1/ptbatcher/BatchFrame.cpp Sun Nov 11 12:06:00 2012 +0100
@@ -109,6 +109,7 @@
EVT_CHECKBOX(XRCID("cb_verbose"), BatchFrame::OnCheckVerbose)
EVT_CHECKBOX(XRCID("cb_autoremove"), BatchFrame::OnCheckAutoRemove)
EVT_CHECKBOX(XRCID("cb_autostitch"), BatchFrame::OnCheckAutoStitch)
+ EVT_CHECKBOX(XRCID("cb_savelog"), BatchFrame::OnCheckSaveLog)
EVT_END_PROCESS(-1, BatchFrame::OnProcessTerminate)
EVT_CLOSE(BatchFrame::OnClose)
EVT_MENU(wxEVT_COMMAND_RELOAD_BATCH, BatchFrame::OnReloadBatch)
@@ -913,6 +914,43 @@
XRCCTRL(*this,"cb_autoremove",wxCheckBox)->SetValue(i!=0);
i=config->Read(wxT("/BatchFrame/AutoStitchCheck"), 0l);
XRCCTRL(*this,"cb_autostitch",wxCheckBox)->SetValue(i!=0);
+ i=config->Read(wxT("/BatchFrame/SaveLog"), 0l);
+ XRCCTRL(*this, "cb_savelog",wxCheckBox)->SetValue(i!=0);
+};
+
+bool BatchFrame::GetCheckParallel()
+{
+ return XRCCTRL(*this,"cb_parallel",wxCheckBox)->IsChecked();
+};
+
+bool BatchFrame::GetCheckShutdown()
+{
+ return XRCCTRL(*this,"cb_shutdown",wxCheckBox)->IsChecked();
+};
+
+bool BatchFrame::GetCheckOverwrite()
+{
+ return XRCCTRL(*this,"cb_overwrite",wxCheckBox)->IsChecked();
+};
+
+bool BatchFrame::GetCheckVerbose()
+{
+ return XRCCTRL(*this,"cb_verbose",wxCheckBox)->IsChecked();
+};
+
+bool BatchFrame::GetCheckAutoRemove()
+{
+ return XRCCTRL(*this,"cb_autoremove",wxCheckBox)->IsChecked();
+};
+
+bool BatchFrame::GetCheckAutoStitch()
+{
+ return XRCCTRL(*this,"cb_autostitch",wxCheckBox)->IsChecked();
+};
+
+bool BatchFrame::GetCheckSaveLog()
+{
+ return XRCCTRL(*this,"cb_savelog",wxCheckBox)->IsChecked();
};
void BatchFrame::OnCheckOverwrite(wxCommandEvent& event)
@@ -992,7 +1030,6 @@
config->Flush();
};
-
void BatchFrame::OnCheckAutoStitch(wxCommandEvent& event)
{
m_batch->autostitch=event.IsChecked();
@@ -1008,6 +1045,21 @@
config->Flush();
};
+void BatchFrame::OnCheckSaveLog(wxCommandEvent& event)
+{
+ m_batch->saveLog=event.IsChecked();
+ wxConfigBase* config=wxConfigBase::Get();
+ if(m_batch->saveLog)
+ {
+ config->Write(wxT("/BatchFrame/SaveLog"), 1l);
+ }
+ else
+ {
+ config->Write(wxT("/BatchFrame/SaveLog"), 0l);
+ }
+ config->Flush();
+};
+
void BatchFrame::OnClose(wxCloseEvent& event)
{
//save windows position
diff -r a2b73e9cde1c -r 6b0238c5509e src/hugin1/ptbatcher/BatchFrame.h
--- a/src/hugin1/ptbatcher/BatchFrame.h Sun Nov 11 10:26:40 2012 +0100
+++ b/src/hugin1/ptbatcher/BatchFrame.h Sun Nov 11 12:06:00 2012 +0100
@@ -91,6 +91,9 @@
void OnCheckAutoRemove(wxCommandEvent& event);
/** event handler called when auto stitch checkbox was changed */
void OnCheckAutoStitch(wxCommandEvent& event);
+ /** event handler called when always save log checkbox was changed */
+ void OnCheckSaveLog(wxCommandEvent& event);
+
//Called on window close to take care of the child thread
void OnClose(wxCloseEvent& event);
@@ -108,35 +111,19 @@
void SwapProject(int index);
//PanoramaOptions readOptions(wxString projectFile);
/** return if parallel checkbox is checked */
- bool GetCheckParallel()
- {
- return XRCCTRL(*this,"cb_parallel",wxCheckBox)->IsChecked();
- };
+ bool GetCheckParallel();
/** return if shutdown checkbox is checked */
- bool GetCheckShutdown()
- {
- return XRCCTRL(*this,"cb_shutdown",wxCheckBox)->IsChecked();
- };
+ bool GetCheckShutdown();
/** return if overwrite checkbox is checked */
- bool GetCheckOverwrite()
- {
- return XRCCTRL(*this,"cb_overwrite",wxCheckBox)->IsChecked();
- };
+ bool GetCheckOverwrite();
/** return if verbose checkbox is checked */
- bool GetCheckVerbose()
- {
- return XRCCTRL(*this,"cb_verbose",wxCheckBox)->IsChecked();
- };
+ bool GetCheckVerbose();
/** return if auto remove checkbox is checked */
- bool GetCheckAutoRemove()
- {
- return XRCCTRL(*this,"cb_autoremove",wxCheckBox)->IsChecked();
- };
+ bool GetCheckAutoRemove();
/** return if auto stitch checkbox is checked */
- bool GetCheckAutoStitch()
- {
- return XRCCTRL(*this,"cb_autostitch",wxCheckBox)->IsChecked();
- };
+ bool GetCheckAutoStitch();
+ /** return if always save log is checked */
+ bool GetCheckSaveLog();
void RestoreSize();
void AddToList(wxString aFile, Project::Target target=Project::STITCHING);
void AddDirToList(wxString aDir);
|