diff options
Diffstat (limited to 'ui/MainDialog.cpp')
-rw-r--r-- | ui/MainDialog.cpp | 129 |
1 files changed, 60 insertions, 69 deletions
diff --git a/ui/MainDialog.cpp b/ui/MainDialog.cpp index 932d0b4a..9c5e0f46 100644 --- a/ui/MainDialog.cpp +++ b/ui/MainDialog.cpp @@ -18,7 +18,7 @@ #include "../comparison.h" #include "../synchronization.h" #include "../algorithm.h" -#include "util.h" +#include "../shared/util.h" #include "checkVersion.h" #include "guiStatusHandler.h" #include "settingsDialog.h" @@ -269,8 +269,8 @@ MainDialog::MainDialog(wxFrame* frame, wxWindowUpdateLocker dummy(this); //avoid display distortion //avoid mirroring this dialog in RTL languages like Hebrew or Arabic -SetLayoutDirection(wxLayout_LeftToRight); -m_panelStatusBar->SetLayoutDirection(wxLayout_LeftToRight); + SetLayoutDirection(wxLayout_LeftToRight); + m_panelStatusBar->SetLayoutDirection(wxLayout_LeftToRight); //init handling of first folder pair @@ -513,11 +513,11 @@ void MainDialog::writeGlobalSettings() } -void MainDialog::setSyncDirManually(const std::set<unsigned int>& rowsToSetOnUiTable, const FreeFileSync::SyncDirection dir) +void MainDialog::setSyncDirManually(const std::set<size_t>& rowsToSetOnUiTable, const FreeFileSync::SyncDirection dir) { if (rowsToSetOnUiTable.size() > 0) { - for (std::set<unsigned int>::const_iterator i = rowsToSetOnUiTable.begin(); i != rowsToSetOnUiTable.end(); ++i) + for (std::set<size_t>::const_iterator i = rowsToSetOnUiTable.begin(); i != rowsToSetOnUiTable.end(); ++i) { FileSystemObject* fsObj = gridDataView->getObject(*i); if (fsObj) @@ -532,7 +532,7 @@ void MainDialog::setSyncDirManually(const std::set<unsigned int>& rowsToSetOnUiT } -void MainDialog::filterRangeManually(const std::set<unsigned int>& rowsToFilterOnUiTable, const int leadingRow) +void MainDialog::filterRangeManually(const std::set<size_t>& rowsToFilterOnUiTable, int leadingRow) { if (rowsToFilterOnUiTable.size() > 0) { @@ -584,16 +584,16 @@ void MainDialog::OnIdleEvent(wxEvent& event) void MainDialog::copySelectionToClipboard(const CustomGrid* selectedGrid) { - const std::set<unsigned int> selectedRows = getSelectedRows(selectedGrid); + const std::set<size_t> selectedRows = getSelectedRows(selectedGrid); if (selectedRows.size() > 0) { wxString clipboardString; - for (std::set<unsigned int>::const_iterator i = selectedRows.begin(); i != selectedRows.end(); ++i) + for (std::set<size_t>::const_iterator i = selectedRows.begin(); i != selectedRows.end(); ++i) { for (int k = 0; k < const_cast<CustomGrid*>(selectedGrid)->GetNumberCols(); ++k) { - clipboardString+= const_cast<CustomGrid*>(selectedGrid)->GetCellValue(*i, k); + clipboardString+= const_cast<CustomGrid*>(selectedGrid)->GetCellValue(static_cast<int>(*i), k); if (k != const_cast<CustomGrid*>(selectedGrid)->GetNumberCols() - 1) clipboardString+= '\t'; } @@ -613,9 +613,9 @@ void MainDialog::copySelectionToClipboard(const CustomGrid* selectedGrid) } -std::set<unsigned int> MainDialog::getSelectedRows(const CustomGrid* grid) const +std::set<size_t> MainDialog::getSelectedRows(const CustomGrid* grid) const { - std::set<unsigned int> output = grid->getAllSelectedRows(); + std::set<size_t> output = grid->getAllSelectedRows(); //remove invalid rows output.erase(output.lower_bound(gridDataView->rowsOnView()), output.end()); @@ -624,11 +624,11 @@ std::set<unsigned int> MainDialog::getSelectedRows(const CustomGrid* grid) const } -std::set<unsigned int> MainDialog::getSelectedRows() const +std::set<size_t> MainDialog::getSelectedRows() const { //merge selections from left and right grid - std::set<unsigned int> selection = getSelectedRows(m_gridLeft); - std::set<unsigned int> additional = getSelectedRows(m_gridRight); + std::set<size_t> selection = getSelectedRows(m_gridLeft); + std::set<size_t> additional = getSelectedRows(m_gridRight); selection.insert(additional.begin(), additional.end()); return selection; } @@ -637,7 +637,7 @@ std::set<unsigned int> MainDialog::getSelectedRows() const class ManualDeletionHandler : private wxEvtHandler, public DeleteFilesHandler { public: - ManualDeletionHandler(MainDialog* main, int totalObjToDel) : + ManualDeletionHandler(MainDialog* main, size_t totalObjToDel) : mainDlg(main), totalObjToDelete(totalObjToDel), abortRequested(false), @@ -695,8 +695,8 @@ public: if (updateUiIsAllowed()) //test if specific time span between ui updates is over { wxString statusMessage = _("%x / %y objects deleted successfully"); - statusMessage.Replace(wxT("%x"), globalFunctions::numberToWxString(deletionCount), false); - statusMessage.Replace(wxT("%y"), globalFunctions::numberToWxString(totalObjToDelete), false); + statusMessage.Replace(wxT("%x"), FreeFileSync::numberToWxString(deletionCount, true), false); + statusMessage.Replace(wxT("%y"), FreeFileSync::numberToWxString(totalObjToDelete, true), false); mainDlg->m_staticTextStatusMiddle->SetLabel(statusMessage); mainDlg->m_panelStatusBar->Layout(); @@ -715,19 +715,19 @@ private: } MainDialog* const mainDlg; - const int totalObjToDelete; + const size_t totalObjToDelete; bool abortRequested; bool ignoreErrors; - unsigned int deletionCount; + size_t deletionCount; }; void MainDialog::deleteSelectedFiles() { //get set of selected rows on view - const std::set<unsigned int> viewSelectionLeft = getSelectedRows(m_gridLeft); - const std::set<unsigned int> viewSelectionRight = getSelectedRows(m_gridRight); + const std::set<size_t> viewSelectionLeft = getSelectedRows(m_gridLeft); + const std::set<size_t> viewSelectionRight = getSelectedRows(m_gridRight); if (viewSelectionLeft.size() + viewSelectionRight.size()) { @@ -806,7 +806,7 @@ void exstractNames(const FileSystemObject& fsObj, wxString& name, wxString& dir) } -void MainDialog::openExternalApplication(unsigned int rowNumber, bool leftSide, const wxString& commandline) +void MainDialog::openExternalApplication(size_t rowNumber, bool leftSide, const wxString& commandline) { if (commandline.empty()) return; @@ -1241,10 +1241,10 @@ void MainDialog::OnContextRim(wxGridEvent& event) //------------------------------------------------------------------------------ - const std::set<unsigned int> selectionLeft = getSelectedRows(m_gridLeft); - const std::set<unsigned int> selectionRight = getSelectedRows(m_gridRight); + const std::set<size_t> selectionLeft = getSelectedRows(m_gridLeft); + const std::set<size_t> selectionRight = getSelectedRows(m_gridRight); - const unsigned int selectionBegin = selectionLeft.size() + selectionRight.size() == 0 ? 0 : + const size_t selectionBegin = selectionLeft.size() + selectionRight.size() == 0 ? 0 : selectionLeft.size() == 0 ? *selectionRight.begin() : selectionRight.size() == 0 ? *selectionLeft.begin() : std::min(*selectionLeft.begin(), *selectionRight.begin()); @@ -1312,14 +1312,14 @@ void MainDialog::OnContextRim(wxGridEvent& event) //############################################################################################### //get list of relative file/dir-names for filtering FilterObjList exFilterCandidateObj; - for (std::set<unsigned int>::const_iterator i = selectionLeft.begin(); i != selectionLeft.end(); ++i) + for (std::set<size_t>::const_iterator i = selectionLeft.begin(); i != selectionLeft.end(); ++i) { const FileSystemObject* currObj = gridDataView->getObject(*i); if (currObj && !currObj->isEmpty<LEFT_SIDE>()) exFilterCandidateObj.push_back( FilterObject(currObj->getRelativeName<LEFT_SIDE>(), isDirectoryMapping(*currObj))); } - for (std::set<unsigned int>::const_iterator i = selectionRight.begin(); i != selectionRight.end(); ++i) + for (std::set<size_t>::const_iterator i = selectionRight.begin(); i != selectionRight.end(); ++i) { const FileSystemObject* currObj = gridDataView->getObject(*i); if (currObj && !currObj->isEmpty<RIGHT_SIDE>()) @@ -1441,9 +1441,9 @@ void MainDialog::OnContextRim(wxGridEvent& event) void MainDialog::OnContextFilterTemp(wxCommandEvent& event) { //merge selections from left and right grid - std::set<unsigned int> selection = getSelectedRows(); + std::set<size_t> selection = getSelectedRows(); if (!selection.empty()) - filterRangeManually(selection, *selection.begin()); + filterRangeManually(selection, static_cast<int>(*selection.begin())); } @@ -1524,12 +1524,12 @@ void MainDialog::OnContextOpenWith(wxCommandEvent& event) const CustomGrid* leadGrid = m_gridLeft->isLeadGrid() ? static_cast<CustomGrid*>(m_gridLeft) : static_cast<CustomGrid*>(m_gridRight); - std::set<unsigned int> selection = getSelectedRows(leadGrid); + std::set<size_t> selection = getSelectedRows(leadGrid); const int index = event.GetId() - externalAppIDFirst; if ( selection.size() == 1 && - 0 <= index && static_cast<unsigned>(index) < globalSettings.gui.externelApplications.size()) + 0 <= index && static_cast<size_t>(index) < globalSettings.gui.externelApplications.size()) openExternalApplication(*selection.begin(), m_gridLeft->isLeadGrid(), globalSettings.gui.externelApplications[index].second); } } @@ -1544,7 +1544,7 @@ void MainDialog::OnContextDeleteFiles(wxCommandEvent& event) void MainDialog::OnContextSyncDirLeft(wxCommandEvent& event) { //merge selections from left and right grid - const std::set<unsigned int> selection = getSelectedRows(); + const std::set<size_t> selection = getSelectedRows(); setSyncDirManually(selection, FreeFileSync::SYNC_DIR_LEFT); } @@ -1552,7 +1552,7 @@ void MainDialog::OnContextSyncDirLeft(wxCommandEvent& event) void MainDialog::OnContextSyncDirNone(wxCommandEvent& event) { //merge selections from left and right grid - const std::set<unsigned int> selection = getSelectedRows(); + const std::set<size_t> selection = getSelectedRows(); setSyncDirManually(selection, FreeFileSync::SYNC_DIR_NONE); } @@ -1560,7 +1560,7 @@ void MainDialog::OnContextSyncDirNone(wxCommandEvent& event) void MainDialog::OnContextSyncDirRight(wxCommandEvent& event) { //merge selections from left and right grid - const std::set<unsigned int> selection = getSelectedRows(); + const std::set<size_t> selection = getSelectedRows(); setSyncDirManually(selection, FreeFileSync::SYNC_DIR_RIGHT); } @@ -1963,7 +1963,7 @@ void MainDialog::OnCheckRows(FFSCheckRowsEvent& event) if (0 <= lowerBound) { - std::set<unsigned int> selectedRowsOnView; + std::set<size_t> selectedRowsOnView; for (int i = lowerBound; i <= std::min(upperBound, int(gridDataView->rowsOnView()) - 1); ++i) selectedRowsOnView.insert(i); @@ -2010,15 +2010,15 @@ bool MainDialog::readConfigurationFromXml(const wxString& filename, bool program ; else { + parsingError = true; + if (error.getSeverity() == xmlAccess::XmlError::WARNING) - { wxMessageBox(error.show(), _("Warning"), wxOK | wxICON_WARNING); - parsingError = true; - } else { wxMessageBox(error.show(), _("Error"), wxOK | wxICON_ERROR); - return false; + if (!programStartup) + return false; } } } @@ -2028,8 +2028,6 @@ bool MainDialog::readConfigurationFromXml(const wxString& filename, bool program //########################################################### addFileToCfgHistory(filename); //put filename on list of last used config files - lastConfigurationSaved = parsingError ? xmlAccess::XmlGuiConfig() : currentCfg; //simulate changed config on parsing errors - //set title if (filename == lastConfigFileName()) { @@ -2040,9 +2038,11 @@ bool MainDialog::readConfigurationFromXml(const wxString& filename, bool program { SetTitle(wxString(wxT("FreeFileSync - ")) + filename); currentConfigFileName = filename; + + lastConfigurationSaved = parsingError ? xmlAccess::XmlGuiConfig() : currentCfg; //simulate changed config on parsing errors } - return true; + return !parsingError; } @@ -2611,9 +2611,9 @@ void MainDialog::calculatePreview() { //update preview of bytes to be transferred: const SyncStatistics st(gridDataView->getDataTentative()); - const wxString toCreate = FreeFileSync::includeNumberSeparator(globalFunctions::numberToWxString(st.getCreate())); - const wxString toUpdate = FreeFileSync::includeNumberSeparator(globalFunctions::numberToWxString(st.getOverwrite())); - const wxString toDelete = FreeFileSync::includeNumberSeparator(globalFunctions::numberToWxString(st.getDelete())); + const wxString toCreate = FreeFileSync::numberToWxString(st.getCreate(), true); + const wxString toUpdate = FreeFileSync::numberToWxString(st.getOverwrite(), true); + const wxString toDelete = FreeFileSync::numberToWxString(st.getDelete(), true); const wxString data = FreeFileSync::formatFilesizeToShortString(st.getDataToProcess()); m_textCtrlCreate->SetValue(toCreate); @@ -2948,10 +2948,10 @@ void MainDialog::OnSwapSides(wxCommandEvent& event) void MainDialog::updateGridViewData() { - unsigned int filesOnLeftView = 0; - unsigned int foldersOnLeftView = 0; - unsigned int filesOnRightView = 0; - unsigned int foldersOnRightView = 0; + size_t filesOnLeftView = 0; + size_t foldersOnLeftView = 0; + size_t filesOnRightView = 0; + size_t foldersOnRightView = 0; wxULongLong filesizeLeftView; wxULongLong filesizeRightView; @@ -3086,7 +3086,7 @@ void MainDialog::updateGridViewData() statusLeftNew += _("1 directory"); else { - wxString folderCount = FreeFileSync::includeNumberSeparator(globalFunctions::numberToWxString(foldersOnLeftView)); + wxString folderCount = FreeFileSync::numberToWxString(foldersOnLeftView, true); wxString outputString = _("%x directories"); outputString.Replace(wxT("%x"), folderCount, false); @@ -3103,7 +3103,7 @@ void MainDialog::updateGridViewData() statusLeftNew += _("1 file,"); else { - wxString fileCount = FreeFileSync::includeNumberSeparator(globalFunctions::numberToWxString(filesOnLeftView)); + wxString fileCount = FreeFileSync::numberToWxString(filesOnLeftView, true); wxString outputString = _("%x files,"); outputString.Replace(wxT("%x"), fileCount, false); @@ -3113,8 +3113,7 @@ void MainDialog::updateGridViewData() statusLeftNew += FreeFileSync::formatFilesizeToShortString(filesizeLeftView); } - const wxString objectsView = FreeFileSync::includeNumberSeparator( - globalFunctions::numberToWxString(static_cast<unsigned int>(gridDataView->rowsOnView()))); + const wxString objectsView = FreeFileSync::numberToWxString(gridDataView->rowsOnView(), true); if (gridDataView->rowsTotal() == 1) { wxString outputString = _("%x of 1 row in view"); @@ -3123,8 +3122,7 @@ void MainDialog::updateGridViewData() } else { - const wxString objectsTotal = FreeFileSync::includeNumberSeparator( - globalFunctions::numberToWxString(static_cast<unsigned int>(gridDataView->rowsTotal()))); + const wxString objectsTotal = FreeFileSync::numberToWxString(gridDataView->rowsTotal(), true); wxString outputString = _("%x of %y rows in view"); outputString.Replace(wxT("%x"), objectsView, false); @@ -3138,7 +3136,7 @@ void MainDialog::updateGridViewData() statusRightNew += _("1 directory"); else { - wxString folderCount = FreeFileSync::includeNumberSeparator(globalFunctions::numberToWxString(foldersOnRightView)); + wxString folderCount = FreeFileSync::numberToWxString(foldersOnRightView, true); wxString outputString = _("%x directories"); outputString.Replace(wxT("%x"), folderCount, false); @@ -3155,7 +3153,7 @@ void MainDialog::updateGridViewData() statusRightNew += _("1 file,"); else { - wxString fileCount = FreeFileSync::includeNumberSeparator(globalFunctions::numberToWxString(filesOnRightView)); + wxString fileCount = FreeFileSync::numberToWxString(filesOnRightView, true); wxString outputString = _("%x files,"); outputString.Replace(wxT("%x"), fileCount, false); @@ -3383,8 +3381,8 @@ void MainDialog::addFolderPair(const std::vector<FolderPairEnh>& newPairs, bool } //set size of scrolled window - const int visiblePairs = std::min(additionalFolderPairs.size(), MAX_ADD_FOLDER_PAIRS); //up to MAX_ADD_FOLDER_PAIRS additional pairs shall be shown - m_scrolledWindowFolderPairs->SetMinSize(wxSize( -1, pairHeight * visiblePairs)); + const size_t visiblePairs = std::min(additionalFolderPairs.size(), MAX_ADD_FOLDER_PAIRS); //up to MAX_ADD_FOLDER_PAIRS additional pairs shall be shown + m_scrolledWindowFolderPairs->SetMinSize(wxSize( -1, pairHeight * static_cast<int>(visiblePairs))); //update controls m_scrolledWindowFolderPairs->Fit(); //adjust scrolled window size @@ -3413,7 +3411,7 @@ void MainDialog::removeAddFolderPair(const unsigned int pos) //set size of scrolled window const size_t additionalRows = additionalFolderPairs.size(); if (additionalRows <= MAX_ADD_FOLDER_PAIRS) //up to MAX_ADD_FOLDER_PAIRS additional pairs shall be shown - m_scrolledWindowFolderPairs->SetMinSize(wxSize(-1, pairHeight * additionalRows)); + m_scrolledWindowFolderPairs->SetMinSize(wxSize(-1, pairHeight * static_cast<int>(additionalRows))); //update controls m_scrolledWindowFolderPairs->Fit(); //adjust scrolled window size @@ -3586,7 +3584,7 @@ void MainDialog::OnRegularUpdateCheck(wxIdleEvent& event) //execute just once per startup! Disconnect(wxEVT_IDLE, wxIdleEventHandler(MainDialog::OnRegularUpdateCheck), NULL, this); - FreeFileSync::checkForUpdatePeriodically(globalSettings.lastUpdateCheck); + FreeFileSync::checkForUpdatePeriodically(globalSettings.gui.lastUpdateCheck); } @@ -3613,7 +3611,7 @@ void MainDialog::OnMenuAbout(wxCommandEvent& event) void MainDialog::OnShowHelp(wxCommandEvent& event) { -FreeFileSync::displayHelpEntry(); + FreeFileSync::displayHelpEntry(); } @@ -3712,10 +3710,3 @@ bool MainDialog::SyncPreview::synchronizationIsEnabled() const { return synchronizationEnabled; } - - - - - - - |