summaryrefslogtreecommitdiff
path: root/RealtimeSync
diff options
context:
space:
mode:
authorDaniel Wilhelm <daniel@wili.li>2014-04-18 17:15:16 +0200
committerDaniel Wilhelm <daniel@wili.li>2014-04-18 17:15:16 +0200
commitbd6336c629841c6db3a6ca53a936d629d34db53b (patch)
tree3721ef997864108df175ce677a8a7d4342a6f1d2 /RealtimeSync
parent4.0 (diff)
downloadFreeFileSync-bd6336c629841c6db3a6ca53a936d629d34db53b.tar.gz
FreeFileSync-bd6336c629841c6db3a6ca53a936d629d34db53b.tar.bz2
FreeFileSync-bd6336c629841c6db3a6ca53a936d629d34db53b.zip
4.1
Diffstat (limited to 'RealtimeSync')
-rw-r--r--RealtimeSync/RealtimeSync.cbp71
-rw-r--r--RealtimeSync/RealtimeSync.vcxproj71
-rw-r--r--RealtimeSync/application.cpp44
-rw-r--r--RealtimeSync/gui_generated.cpp55
-rw-r--r--RealtimeSync/gui_generated.h29
-rw-r--r--RealtimeSync/main_dlg.cpp32
-rw-r--r--RealtimeSync/main_dlg.h4
-rw-r--r--RealtimeSync/makefile36
-rw-r--r--RealtimeSync/resources.cpp57
-rw-r--r--RealtimeSync/resources.h20
-rw-r--r--RealtimeSync/tray_menu.cpp22
-rw-r--r--RealtimeSync/watcher.cpp76
-rw-r--r--RealtimeSync/watcher.h4
-rw-r--r--RealtimeSync/xml_ffs.cpp15
-rw-r--r--RealtimeSync/xml_proc.cpp16
-rw-r--r--RealtimeSync/xml_proc.h2
16 files changed, 266 insertions, 288 deletions
diff --git a/RealtimeSync/RealtimeSync.cbp b/RealtimeSync/RealtimeSync.cbp
index 5a928487..5c14d918 100644
--- a/RealtimeSync/RealtimeSync.cbp
+++ b/RealtimeSync/RealtimeSync.cbp
@@ -27,7 +27,7 @@
<Add library="libwxbase28u.a" />
<Add library="libwxpng.a" />
<Add library="libwxzlib.a" />
- <Add library="libboost_thread-mgw45-mt-s-1_47.a" />
+ <Add library="libboost_thread-mgw46-mt-s-1_47.a" />
<Add directory="C:\Programme\C++\wxWidgets\lib\gcc_lib" />
</Linker>
</Target>
@@ -41,7 +41,7 @@
<Compiler>
<Add option="-g" />
<Add option="-Winvalid-pch" />
- <Add option='-include &quot;../shared/pch.h&quot;' />
+ <Add option='-include &quot;../wx+/pch.h&quot;' />
<Add option="-D__WXDEBUG__" />
<Add directory="C:\Program Files\C++\wxWidgets\lib\gcc_dll\mswud" />
</Compiler>
@@ -51,7 +51,7 @@
<Add library="libwxbase28ud.a" />
<Add library="libwxpngd.a" />
<Add library="libwxzlibd.a" />
- <Add library="libboost_thread-mgw45-mt-sd-1_47.a" />
+ <Add library="libboost_thread-mgw46-mt-sd-1_47.a" />
<Add directory="C:\Program Files\C++\wxWidgets\lib\gcc_dll" />
</Linker>
</Target>
@@ -65,7 +65,7 @@
<Add option="-pipe" />
<Add option="-mthreads" />
<Add option="-std=gnu++0x" />
- <Add option='-include &quot;../shared/warn_static.h&quot;' />
+ <Add option='-include &quot;../zen/warn_static.h&quot;' />
<Add option="-D__GNUWIN32__" />
<Add option="-D__WXMSW__" />
<Add option="-DwxUSE_UNICODE" />
@@ -76,7 +76,7 @@
<Add option="-DWXINTL_NO_GETTEXT_MACRO" />
<Add directory="C:\Programme\C++\wxWidgets\include" />
<Add directory="C:\Program Files\C++\Boost" />
- <Add directory="..\shared" />
+ <Add directory="..\." />
</Compiler>
<ResourceCompiler>
<Add directory="C:\Programme\C++\wxWidgets\include" />
@@ -103,7 +103,6 @@
<Unit filename="gui_generated.h" />
<Unit filename="main_dlg.cpp" />
<Unit filename="main_dlg.h" />
- <Unit filename="notify.h" />
<Unit filename="resource.rc">
<Option compilerVar="WINDRES" />
</Unit>
@@ -117,51 +116,29 @@
<Unit filename="xml_ffs.h" />
<Unit filename="xml_proc.cpp" />
<Unit filename="xml_proc.h" />
- <Unit filename="..\Shared\custom_button.cpp" />
- <Unit filename="..\Shared\custom_button.h" />
- <Unit filename="..\Shared\dir_name.cpp" />
- <Unit filename="..\Shared\dir_name.h" />
- <Unit filename="..\Shared\zstring.cpp" />
- <Unit filename="..\Shared\zstring.h" />
- <Unit filename="..\library\process_xml.cpp" />
- <Unit filename="..\shared\dir_watcher.cpp" />
- <Unit filename="..\shared\dir_watcher.h" />
- <Unit filename="..\shared\dll_loader.h" />
- <Unit filename="..\shared\dst_hack.cpp" />
- <Unit filename="..\shared\dst_hack.h" />
- <Unit filename="..\shared\file_error.h" />
- <Unit filename="..\shared\file_handling.cpp" />
- <Unit filename="..\shared\file_handling.h" />
- <Unit filename="..\shared\file_id.cpp" />
- <Unit filename="..\shared\file_io.cpp" />
- <Unit filename="..\shared\file_traverser.cpp" />
- <Unit filename="..\shared\folder_history_box.cpp" />
- <Unit filename="..\shared\global_func.h" />
- <Unit filename="..\shared\help_provider.cpp" />
- <Unit filename="..\shared\i18n.cpp" />
- <Unit filename="..\shared\i18n.h" />
- <Unit filename="..\shared\last_error.cpp" />
- <Unit filename="..\shared\last_error.h" />
- <Unit filename="..\shared\localization.cpp" />
- <Unit filename="..\shared\long_path_prefix.h" />
- <Unit filename="..\shared\mouse_move_dlg.cpp" />
- <Unit filename="..\shared\notify_removal.cpp" />
- <Unit filename="..\shared\notify_removal.h" />
- <Unit filename="..\shared\pch.h">
+ <Unit filename="..\lib\dir_name.cpp" />
+ <Unit filename="..\lib\folder_history_box.cpp" />
+ <Unit filename="..\lib\localization.cpp" />
+ <Unit filename="..\lib\process_xml.cpp" />
+ <Unit filename="..\lib\resolve_path.cpp" />
+ <Unit filename="..\lib\xml_base.cpp" />
+ <Unit filename="..\structures.cpp" />
+ <Unit filename="..\wx+\button.cpp" />
+ <Unit filename="..\wx+\format_unit.cpp" />
+ <Unit filename="..\wx+\mouse_move_dlg.cpp" />
+ <Unit filename="..\wx+\pch.h">
<Option compile="1" />
<Option weight="0" />
<Option target="Debug-DLL" />
</Unit>
- <Unit filename="..\shared\privilege.cpp" />
- <Unit filename="..\shared\resolve_path.cpp" />
- <Unit filename="..\shared\resolve_path.h" />
- <Unit filename="..\shared\shell_execute.h" />
- <Unit filename="..\shared\standard_paths.cpp" />
- <Unit filename="..\shared\standard_paths.h" />
- <Unit filename="..\shared\util.cpp" />
- <Unit filename="..\shared\xml_base.cpp" />
- <Unit filename="..\shared\xml_base.h" />
- <Unit filename="..\structures.cpp" />
+ <Unit filename="..\zen\dir_watcher.cpp" />
+ <Unit filename="..\zen\dst_hack.cpp" />
+ <Unit filename="..\zen\file_handling.cpp" />
+ <Unit filename="..\zen\file_io.cpp" />
+ <Unit filename="..\zen\file_traverser.cpp" />
+ <Unit filename="..\zen\notify_removal.cpp" />
+ <Unit filename="..\zen\privilege.cpp" />
+ <Unit filename="..\zen\zstring.cpp" />
<Extensions>
<code_completion />
<envvars />
diff --git a/RealtimeSync/RealtimeSync.vcxproj b/RealtimeSync/RealtimeSync.vcxproj
index f6f018a1..81b51005 100644
--- a/RealtimeSync/RealtimeSync.vcxproj
+++ b/RealtimeSync/RealtimeSync.vcxproj
@@ -100,13 +100,13 @@
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>ZEN_PLATFORM_WINDOWS;wxUSE_UNICODE;__WXMSW__;FFS_WIN;WXINTL_NO_GETTEXT_MACRO;__WXDEBUG__</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\shared;C:\Program Files\C++\wxWidgets\include;C:\Program Files\C++\wxWidgets\lib\vc_lib\mswud;C:\Program Files\C++\Boost</AdditionalIncludeDirectories>
- <PrecompiledHeaderFile>$(ProjectDir)/../shared/pch.h</PrecompiledHeaderFile>
- <DisableSpecificWarnings>4100;4996</DisableSpecificWarnings>
+ <AdditionalIncludeDirectories>..;../zenXml;C:\Program Files\C++\wxWidgets\include;C:\Program Files\C++\wxWidgets\lib\vc_lib\mswud;C:\Program Files\C++\Boost</AdditionalIncludeDirectories>
+ <PrecompiledHeaderFile>wx+/pch.h</PrecompiledHeaderFile>
+ <DisableSpecificWarnings>4100;4996;4267;4512</DisableSpecificWarnings>
<MultiProcessorCompilation>false</MultiProcessorCompilation>
<DisableLanguageExtensions>false</DisableLanguageExtensions>
<PrecompiledHeaderOutputFile>$(IntDir)pch.obj</PrecompiledHeaderOutputFile>
- <ForcedIncludeFiles>$(SolutionDir)shared/warn_static.h;$(ProjectDir)/../shared/pch.h</ForcedIncludeFiles>
+ <ForcedIncludeFiles>zen/warn_static.h;wx+/pch.h</ForcedIncludeFiles>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Link>
@@ -130,13 +130,13 @@
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>ZEN_PLATFORM_WINDOWS;wxUSE_UNICODE;__WXMSW__;FFS_WIN;WXINTL_NO_GETTEXT_MACRO;__WXDEBUG__</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\shared;C:\Program Files\C++\wxWidgets-x64\include;C:\Program Files\C++\wxWidgets-x64\lib\vc_lib\mswud;C:\Program Files\C++\Boost</AdditionalIncludeDirectories>
- <PrecompiledHeaderFile>$(ProjectDir)/../shared/pch.h</PrecompiledHeaderFile>
- <DisableSpecificWarnings>4100;4996</DisableSpecificWarnings>
+ <AdditionalIncludeDirectories>..;../zenXml;C:\Program Files\C++\wxWidgets-x64\include;C:\Program Files\C++\wxWidgets-x64\lib\vc_lib\mswud;C:\Program Files\C++\Boost</AdditionalIncludeDirectories>
+ <PrecompiledHeaderFile>wx+/pch.h</PrecompiledHeaderFile>
+ <DisableSpecificWarnings>4100;4996;4267;4512</DisableSpecificWarnings>
<MultiProcessorCompilation>false</MultiProcessorCompilation>
<DisableLanguageExtensions>false</DisableLanguageExtensions>
<PrecompiledHeaderOutputFile>$(IntDir)pch.obj</PrecompiledHeaderOutputFile>
- <ForcedIncludeFiles>$(SolutionDir)shared/warn_static.h;$(ProjectDir)/../shared/pch.h</ForcedIncludeFiles>
+ <ForcedIncludeFiles>zen/warn_static.h;wx+/pch.h</ForcedIncludeFiles>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
@@ -163,13 +163,13 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>ZEN_PLATFORM_WINDOWS;wxUSE_UNICODE;__WXMSW__;FFS_WIN;WXINTL_NO_GETTEXT_MACRO;NDEBUG</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\shared;C:\Program Files\C++\wxWidgets\include;C:\Program Files\C++\wxWidgets\lib\vc_lib\mswu;C:\Program Files\C++\Boost</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..;../zenXml;C:\Program Files\C++\wxWidgets\include;C:\Program Files\C++\wxWidgets\lib\vc_lib\mswu;C:\Program Files\C++\Boost</AdditionalIncludeDirectories>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <DisableSpecificWarnings>4100;4996</DisableSpecificWarnings>
+ <DisableSpecificWarnings>4100;4996;4267;4512</DisableSpecificWarnings>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<DisableLanguageExtensions>false</DisableLanguageExtensions>
- <ForcedIncludeFiles>$(SolutionDir)shared/warn_static.h;</ForcedIncludeFiles>
+ <ForcedIncludeFiles>zen/warn_static.h</ForcedIncludeFiles>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -198,14 +198,14 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>ZEN_PLATFORM_WINDOWS;wxUSE_UNICODE;__WXMSW__;FFS_WIN;WXINTL_NO_GETTEXT_MACRO;NDEBUG</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\shared;C:\Program Files\C++\wxWidgets-x64\include;C:\Program Files\C++\wxWidgets-x64\lib\vc_lib\mswu;C:\Program Files\C++\Boost</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..;../zenXml;C:\Program Files\C++\wxWidgets-x64\include;C:\Program Files\C++\wxWidgets-x64\lib\vc_lib\mswu;C:\Program Files\C++\Boost</AdditionalIncludeDirectories>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <DisableSpecificWarnings>4512;4996;4100;4127</DisableSpecificWarnings>
+ <DisableSpecificWarnings>4100;4996;4267;4512</DisableSpecificWarnings>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<DisableLanguageExtensions>false</DisableLanguageExtensions>
<SuppressStartupBanner>true</SuppressStartupBanner>
- <ForcedIncludeFiles>$(SolutionDir)shared/warn_static.h;</ForcedIncludeFiles>
+ <ForcedIncludeFiles>zen/warn_static.h</ForcedIncludeFiles>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -227,32 +227,28 @@
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
- <ClCompile Include="..\library\process_xml.cpp" />
- <ClCompile Include="..\shared\custom_button.cpp" />
- <ClCompile Include="..\shared\dir_watcher.cpp" />
- <ClCompile Include="..\shared\dir_name.cpp" />
- <ClCompile Include="..\shared\dst_hack.cpp" />
- <ClCompile Include="..\shared\file_handling.cpp" />
- <ClCompile Include="..\shared\file_io.cpp" />
- <ClCompile Include="..\shared\file_traverser.cpp" />
- <ClCompile Include="..\shared\folder_history_box.cpp" />
- <ClCompile Include="..\shared\help_provider.cpp" />
- <ClCompile Include="..\shared\i18n.cpp" />
- <ClCompile Include="..\shared\localization.cpp" />
- <ClCompile Include="..\shared\mouse_move_dlg.cpp" />
- <ClCompile Include="..\shared\notify_removal.cpp" />
- <ClCompile Include="..\shared\privilege.cpp" />
- <ClCompile Include="..\shared\resolve_path.cpp" />
- <ClCompile Include="..\shared\standard_paths.cpp" />
- <ClCompile Include="..\shared\last_error.cpp" />
- <ClCompile Include="..\shared\util.cpp" />
- <ClCompile Include="..\shared\xml_base.cpp" />
- <ClCompile Include="..\shared\zstring.cpp" />
+ <ClCompile Include="..\lib\dir_name.cpp" />
+ <ClCompile Include="..\lib\folder_history_box.cpp" />
+ <ClCompile Include="..\lib\localization.cpp" />
+ <ClCompile Include="..\lib\process_xml.cpp" />
+ <ClCompile Include="..\lib\resolve_path.cpp" />
+ <ClCompile Include="..\lib\xml_base.cpp" />
<ClCompile Include="..\structures.cpp" />
+ <ClCompile Include="..\wx+\button.cpp" />
+ <ClCompile Include="..\wx+\format_unit.cpp" />
+ <ClCompile Include="..\wx+\mouse_move_dlg.cpp" />
+ <ClCompile Include="..\zen\dir_watcher.cpp" />
+ <ClCompile Include="..\zen\dst_hack.cpp" />
+ <ClCompile Include="..\zen\file_handling.cpp" />
+ <ClCompile Include="..\zen\file_io.cpp" />
+ <ClCompile Include="..\zen\file_traverser.cpp" />
+ <ClCompile Include="..\zen\notify_removal.cpp" />
+ <ClCompile Include="..\zen\privilege.cpp" />
+ <ClCompile Include="..\zen\zstring.cpp" />
<ClCompile Include="application.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)/../shared/pch.h</PrecompiledHeaderFile>
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">wx+/pch.h</PrecompiledHeaderFile>
</ClCompile>
<ClCompile Include="gui_generated.cpp" />
<ClCompile Include="main_dlg.cpp" />
@@ -268,9 +264,6 @@
<ItemGroup>
<None Include="WxWizDialog.fbp" />
</ItemGroup>
- <ItemGroup>
- <ClInclude Include="../shared/pch.h" />
- </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
diff --git a/RealtimeSync/application.cpp b/RealtimeSync/application.cpp
index aa1a1385..55c2e9c3 100644
--- a/RealtimeSync/application.cpp
+++ b/RealtimeSync/application.cpp
@@ -9,17 +9,21 @@
#include <wx/event.h>
#include "resources.h"
#include <wx/msgdlg.h>
-#include "../shared/localization.h"
+#include "../lib/localization.h"
#include "xml_ffs.h"
-#include "../shared/standard_paths.h"
+#include "../lib/ffs_paths.h"
#include <wx/file.h>
-#include "../shared/string_conv.h"
+#include <wx+/string_conv.h>
#include <wx/log.h>
+#include <zen/file_handling.h>
#ifdef FFS_LINUX
#include <gtk/gtk.h>
#endif
+using namespace zen;
+
+
IMPLEMENT_APP(Application);
bool Application::OnInit()
@@ -49,28 +53,32 @@ void Application::OnStartApplication(wxIdleEvent& event)
zen::setLanguage(rts::getProgramLanguage());
//try to set config/batch-filename set by %1 parameter
- wxString cfgFilename;
- if (argc > 1)
+ std::vector<wxString> commandArgs;
+ for (int i = 1; i < argc; ++i)
{
- const wxString filename(argv[1]);
-
- if (wxFileExists(filename)) //load file specified by %1 parameter:
- cfgFilename = filename;
- else if (wxFileExists(filename + wxT(".ffs_real")))
- cfgFilename = filename + wxT(".ffs_real");
- else if (wxFileExists(filename + wxT(".ffs_batch")))
- cfgFilename = filename + wxT(".ffs_batch");
- else
+ Zstring filename = toZ(argv[i]);
+
+ if (!fileExists(filename)) //be a little tolerant
{
- wxMessageBox(wxString(_("File does not exist:")) + wxT(" \"") + filename + wxT("\""), _("Error"), wxOK | wxICON_ERROR);
- return;
+ if (fileExists(filename + Zstr(".ffs_real")))
+ filename = filename + Zstr(".ffs_real");
+ else if (fileExists(filename + Zstr(".ffs_batch")))
+ filename = filename + Zstr(".ffs_batch");
+ else
+ {
+ wxMessageBox(wxString(_("File does not exist:")) + wxT(" \"") + toWx(filename) + wxT("\""), _("Error"), wxOK | wxICON_ERROR);
+ return;
+ }
}
+ commandArgs.push_back(toWx(filename));
}
- GlobalResources::getInstance().load(); //loads bitmap resources on program startup
+ wxString cfgFilename;
+ if (!commandArgs.empty())
+ cfgFilename = commandArgs[0];
MainDialog* frame = new MainDialog(NULL, cfgFilename);
- frame->SetIcon(*GlobalResources::getInstance().programIcon); //set application icon
+ frame->SetIcon(GlobalResources::instance().programIcon); //set application icon
frame->Show();
}
diff --git a/RealtimeSync/gui_generated.cpp b/RealtimeSync/gui_generated.cpp
index 2ec50c11..a8514907 100644
--- a/RealtimeSync/gui_generated.cpp
+++ b/RealtimeSync/gui_generated.cpp
@@ -1,12 +1,13 @@
///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version Mar 22 2011)
+// C++ code generated with wxFormBuilder (version Jun 30 2011)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
-#include "../shared/custom_button.h"
-#include "../shared/dir_picker_i18n.h"
+#include "../ui/wx_form_build_hide_warnings.h"
+#include "../wx+/button.h"
+#include "../wx+/dir_picker.h"
#include "gui_generated.h"
@@ -14,7 +15,7 @@
MainDlgGenerated::MainDlgGenerated( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
{
- this->SetSizeHints( wxSize( 420, 440 ), wxDefaultSize );
+ this->SetSizeHints( wxSize( 420,440 ), wxDefaultSize );
m_menubar1 = new wxMenuBar( 0 );
m_menuFile = new wxMenu();
@@ -66,7 +67,7 @@ MainDlgGenerated::MainDlgGenerated( wxWindow* parent, wxWindowID id, const wxStr
m_staticText2->Wrap( -1 );
m_staticText2->SetFont( wxFont( 10, 74, 90, 90, true, wxEmptyString ) );
- sbSizer41->Add( m_staticText2, 0, wxBOTTOM | wxRIGHT | wxLEFT, 5 );
+ sbSizer41->Add( m_staticText2, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_staticText3 = new wxStaticText( m_panelMain, wxID_ANY, _("1. Select directories to monitor."), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText3->Wrap( -1 );
@@ -81,16 +82,16 @@ MainDlgGenerated::MainDlgGenerated( wxWindow* parent, wxWindowID id, const wxStr
sbSizer41->Add( m_staticText5, 0, wxLEFT, 10 );
m_staticline3 = new wxStaticLine( m_panelMain, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
- sbSizer41->Add( m_staticline3, 0, wxEXPAND | wxTOP | wxBOTTOM, 5 );
+ sbSizer41->Add( m_staticline3, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
m_staticText21 = new wxStaticText( m_panelMain, wxID_ANY, _("The command line is executed each time:\n- all directories become available (e.g. USB stick insert)\n- files within these directories or subdirectories are modified"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText21->Wrap( -1 );
- sbSizer41->Add( m_staticText21, 0, wxRIGHT | wxLEFT | wxEXPAND, 5 );
+ sbSizer41->Add( m_staticText21, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
- bSizer1->Add( sbSizer41, 0, wxALIGN_CENTER_HORIZONTAL | wxRIGHT | wxLEFT | wxEXPAND, 40 );
+ bSizer1->Add( sbSizer41, 0, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT|wxEXPAND, 40 );
m_staticline2 = new wxStaticLine( m_panelMain, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
- bSizer1->Add( m_staticline2, 0, wxTOP | wxBOTTOM | wxEXPAND, 10 );
+ bSizer1->Add( m_staticline2, 0, wxTOP|wxBOTTOM|wxEXPAND, 10 );
wxBoxSizer* bSizer8;
bSizer8 = new wxBoxSizer( wxVERTICAL );
@@ -104,22 +105,22 @@ MainDlgGenerated::MainDlgGenerated( wxWindow* parent, wxWindowID id, const wxStr
wxBoxSizer* bSizer781;
bSizer781 = new wxBoxSizer( wxHORIZONTAL );
- m_bpButtonAddFolder = new wxBitmapButton( m_panelMainFolder, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 19, 21 ), wxBU_AUTODRAW );
+ m_bpButtonAddFolder = new wxBitmapButton( m_panelMainFolder, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 19,21 ), wxBU_AUTODRAW );
m_bpButtonAddFolder->SetToolTip( _("Add folder") );
- bSizer781->Add( m_bpButtonAddFolder, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5 );
+ bSizer781->Add( m_bpButtonAddFolder, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 );
- m_bpButtonRemoveTopFolder = new wxBitmapButton( m_panelMainFolder, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 19, 21 ), wxBU_AUTODRAW );
+ m_bpButtonRemoveTopFolder = new wxBitmapButton( m_panelMainFolder, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 19,21 ), wxBU_AUTODRAW );
m_bpButtonRemoveTopFolder->SetToolTip( _("Remove folder") );
- bSizer781->Add( m_bpButtonRemoveTopFolder, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5 );
+ bSizer781->Add( m_bpButtonRemoveTopFolder, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 );
bSizer114->Add( bSizer781, 0, wxALIGN_CENTER_VERTICAL, 5 );
m_txtCtrlDirectoryMain = new wxTextCtrl( m_panelMainFolder, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizer114->Add( m_txtCtrlDirectoryMain, 1, wxALIGN_CENTER_VERTICAL, 5 );
- m_dirPickerMain = new FfsDirPickerCtrl( m_panelMainFolder, wxID_ANY, wxEmptyString, _("Select a folder"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_dirPickerMain = new zen::DirPickerCtrl( m_panelMainFolder, wxID_ANY, wxEmptyString, _("Select a folder"), wxDefaultPosition, wxDefaultSize, 0 );
m_dirPickerMain->SetToolTip( _("Select a folder") );
bSizer114->Add( m_dirPickerMain, 0, wxALIGN_CENTER_VERTICAL, 5 );
@@ -129,7 +130,7 @@ MainDlgGenerated::MainDlgGenerated( wxWindow* parent, wxWindowID id, const wxStr
bSizer114->Fit( m_panelMainFolder );
sbSizerDirToWatch->Add( m_panelMainFolder, 0, wxEXPAND, 5 );
- m_scrolledWinFolders = new wxScrolledWindow( m_panelMain, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL | wxVSCROLL );
+ m_scrolledWinFolders = new wxScrolledWindow( m_panelMain, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
m_scrolledWinFolders->SetScrollRate( 5, 5 );
bSizerFolders = new wxBoxSizer( wxVERTICAL );
@@ -138,17 +139,17 @@ MainDlgGenerated::MainDlgGenerated( wxWindow* parent, wxWindowID id, const wxStr
bSizerFolders->Fit( m_scrolledWinFolders );
sbSizerDirToWatch->Add( m_scrolledWinFolders, 0, wxEXPAND, 5 );
- bSizer8->Add( sbSizerDirToWatch, 0, wxEXPAND | wxBOTTOM | wxRIGHT | wxLEFT, 5 );
+ bSizer8->Add( sbSizerDirToWatch, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
- bSizer1->Add( bSizer8, 1, wxEXPAND, 5 );
+ bSizer1->Add( bSizer8, 0, wxEXPAND, 5 );
wxStaticBoxSizer* sbSizer3;
sbSizer3 = new wxStaticBoxSizer( new wxStaticBox( m_panelMain, wxID_ANY, _("Command line") ), wxVERTICAL );
m_textCtrlCommand = new wxTextCtrl( m_panelMain, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
- sbSizer3->Add( m_textCtrlCommand, 0, wxEXPAND | wxBOTTOM, 5 );
+ sbSizer3->Add( m_textCtrlCommand, 0, wxEXPAND|wxBOTTOM, 5 );
- bSizer1->Add( sbSizer3, 0, wxEXPAND | wxTOP | wxRIGHT | wxLEFT, 5 );
+ bSizer1->Add( sbSizer3, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
wxStaticBoxSizer* sbSizer4;
sbSizer4 = new wxStaticBoxSizer( new wxStaticBox( m_panelMain, wxID_ANY, _("Minimum Idle Time [seconds]") ), wxVERTICAL );
@@ -156,20 +157,20 @@ MainDlgGenerated::MainDlgGenerated( wxWindow* parent, wxWindowID id, const wxStr
m_spinCtrlDelay = new wxSpinCtrl( m_panelMain, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 2000000000, 0 );
m_spinCtrlDelay->SetToolTip( _("Idle time between detection of last change and execution of command line in seconds") );
- sbSizer4->Add( m_spinCtrlDelay, 0, wxBOTTOM | wxRIGHT | wxLEFT | wxALIGN_CENTER_HORIZONTAL, 5 );
+ sbSizer4->Add( m_spinCtrlDelay, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_HORIZONTAL, 5 );
- bSizer1->Add( sbSizer4, 0, wxEXPAND | wxRIGHT | wxLEFT, 5 );
+ bSizer1->Add( sbSizer4, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
m_staticline1 = new wxStaticLine( m_panelMain, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
- bSizer1->Add( m_staticline1, 0, wxEXPAND | wxTOP | wxBOTTOM, 10 );
+ bSizer1->Add( m_staticline1, 0, wxEXPAND|wxTOP|wxBOTTOM, 10 );
- m_buttonStart = new wxButtonWithImage( m_panelMain, wxID_ANY, _("Start"), wxDefaultPosition, wxSize( -1, 40 ), 0 );
+ m_buttonStart = new zen::BitmapButton( m_panelMain, wxID_ANY, _("Start"), wxDefaultPosition, wxSize( -1,40 ), 0 );
m_buttonStart->SetDefault();
m_buttonStart->SetFont( wxFont( 14, 74, 90, 92, false, wxT("Arial Black") ) );
- bSizer1->Add( m_buttonStart, 0, wxALL | wxALIGN_CENTER_HORIZONTAL, 5 );
+ bSizer1->Add( m_buttonStart, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
- m_buttonCancel = new wxButton( m_panelMain, wxID_CANCEL, _("dummy"), wxDefaultPosition, wxSize( 0, 0 ), 0 );
+ m_buttonCancel = new wxButton( m_panelMain, wxID_CANCEL, _("dummy"), wxDefaultPosition, wxSize( 0,0 ), 0 );
bSizer1->Add( m_buttonCancel, 0, 0, 5 );
m_panelMain->SetSizer( bSizer1 );
@@ -215,7 +216,7 @@ FolderGenerated::FolderGenerated( wxWindow* parent, wxWindowID id, const wxPoint
wxBoxSizer* bSizer114;
bSizer114 = new wxBoxSizer( wxHORIZONTAL );
- m_bpButtonRemoveFolder = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 19, 21 ), wxBU_AUTODRAW );
+ m_bpButtonRemoveFolder = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 19,21 ), wxBU_AUTODRAW );
m_bpButtonRemoveFolder->SetToolTip( _("Remove folder") );
bSizer114->Add( m_bpButtonRemoveFolder, 0, wxALIGN_CENTER_VERTICAL, 5 );
@@ -226,7 +227,7 @@ FolderGenerated::FolderGenerated( wxWindow* parent, wxWindowID id, const wxPoint
m_txtCtrlDirectory = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizer20->Add( m_txtCtrlDirectory, 1, wxALIGN_CENTER_VERTICAL, 5 );
- m_dirPicker = new FfsDirPickerCtrl( this, wxID_ANY, wxEmptyString, _("Select a folder"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_dirPicker = new zen::DirPickerCtrl( this, wxID_ANY, wxEmptyString, _("Select a folder"), wxDefaultPosition, wxDefaultSize, 0 );
m_dirPicker->SetToolTip( _("Select a folder") );
bSizer20->Add( m_dirPicker, 0, wxALIGN_CENTER_VERTICAL, 5 );
diff --git a/RealtimeSync/gui_generated.h b/RealtimeSync/gui_generated.h
index fa31652f..cedd812f 100644
--- a/RealtimeSync/gui_generated.h
+++ b/RealtimeSync/gui_generated.h
@@ -1,17 +1,19 @@
///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version Mar 22 2011)
+// C++ code generated with wxFormBuilder (version Jun 30 2011)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
-#ifndef __gui_generated__
-#define __gui_generated__
+#ifndef __GUI_GENERATED_H__
+#define __GUI_GENERATED_H__
+#include <wx/artprov.h>
+#include <wx/xrc/xmlres.h>
#include <wx/intl.h>
-
-class FfsDirPickerCtrl;
-class wxButtonWithImage;
+class wxStaticText;
+namespace zen { class BitmapButton; }
+namespace zen { class DirPickerCtrl; }
#include <wx/string.h>
#include <wx/bitmap.h>
@@ -35,7 +37,7 @@ class wxButtonWithImage;
#include <wx/spinctrl.h>
#include <wx/frame.h>
-#include "../shared/i18n.h"
+#include "../zen/i18n.h"
///////////////////////////////////////////////////////////////////////////
@@ -53,7 +55,6 @@ protected:
wxMenuItem* m_menuItemAbout;
wxBoxSizer* bSizerMain;
wxPanel* m_panelMain;
-
wxStaticText* m_staticText2;
wxStaticText* m_staticText3;
wxStaticText* m_staticText4;
@@ -71,7 +72,7 @@ protected:
wxTextCtrl* m_textCtrlCommand;
wxSpinCtrl* m_spinCtrlDelay;
wxStaticLine* m_staticline1;
- wxButtonWithImage* m_buttonStart;
+ zen::BitmapButton* m_buttonStart;
wxButton* m_buttonCancel;
// Virtual event handlers, overide them in your derived class
@@ -87,9 +88,9 @@ protected:
public:
- FfsDirPickerCtrl* m_dirPickerMain;
+ zen::DirPickerCtrl* m_dirPickerMain;
- MainDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("RealtimeSync - Automated Synchronization"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1, -1 ), long style = wxDEFAULT_FRAME_STYLE | wxTAB_TRAVERSAL );
+ MainDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("RealtimeSync - Automated Synchronization"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL );
~MainDlgGenerated();
@@ -107,11 +108,11 @@ protected:
public:
wxBitmapButton* m_bpButtonRemoveFolder;
wxTextCtrl* m_txtCtrlDirectory;
- FfsDirPickerCtrl* m_dirPicker;
+ zen::DirPickerCtrl* m_dirPicker;
- FolderGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1, -1 ), long style = wxTAB_TRAVERSAL );
+ FolderGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL );
~FolderGenerated();
};
-#endif //__gui_generated__
+#endif //__GUI_GENERATED_H__
diff --git a/RealtimeSync/main_dlg.cpp b/RealtimeSync/main_dlg.cpp
index 539a8bbe..15623286 100644
--- a/RealtimeSync/main_dlg.cpp
+++ b/RealtimeSync/main_dlg.cpp
@@ -6,22 +6,22 @@
#include "main_dlg.h"
#include "resources.h"
-#include "../shared/custom_button.h"
-#include "../shared/standard_paths.h"
+#include <wx+/button.h>
+#include "../lib/ffs_paths.h"
#include <wx/msgdlg.h>
#include <wx/wupdlock.h>
#include "watcher.h"
#include <wx/utils.h>
#include "xml_proc.h"
#include "tray_menu.h"
-#include "../shared/file_handling.h"
+#include <zen/file_handling.h>
#include "xml_ffs.h"
-#include "../shared/string_conv.h"
-#include "../shared/assert_static.h"
-#include "../shared/build_info.h"
-#include "../shared/help_provider.h"
-#include "../shared/util.h"
-#include "../shared/mouse_move_dlg.h"
+#include <wx+/string_conv.h>
+#include <zen/assert_static.h>
+#include <zen/build_info.h>
+#include "../lib/help_provider.h"
+#include "../lib/process_xml.h"
+#include <wx+/mouse_move_dlg.h>
using namespace zen;
@@ -34,9 +34,9 @@ MainDialog::MainDialog(wxDialog* dlg, const wxString& cfgFileName)
m_bpButtonRemoveTopFolder->Hide();
m_panelMainFolder->Layout();
- m_bpButtonAddFolder->SetBitmapLabel(GlobalResources::getInstance().getImageByName(wxT("addFolderPair")));
- m_bpButtonRemoveTopFolder->SetBitmapLabel(GlobalResources::getInstance().getImageByName(wxT("removeFolderPair")));
- m_buttonStart->setBitmapFront(GlobalResources::getInstance().getImageByName(wxT("startRed")));
+ m_bpButtonAddFolder->SetBitmapLabel(GlobalResources::getImage(wxT("addFolderPair")));
+ m_bpButtonRemoveTopFolder->SetBitmapLabel(GlobalResources::getImage(wxT("removeFolderPair")));
+ m_buttonStart->setBitmapFront(GlobalResources::getImage(wxT("startRed")));
//register key event
Connect(wxEVT_CHAR_HOOK, wxKeyEventHandler(MainDialog::OnKeyPressed), NULL, this);
@@ -145,11 +145,11 @@ void MainDialog::OnMenuAbout(wxCommandEvent& event)
#endif //wxUSE_UNICODE
//compile time info about 32/64-bit build
- if (util::is64BitBuild)
+ if (zen::is64BitBuild)
build += wxT(" x64");
else
build += wxT(" x86");
- assert_static(util::is32BitBuild || util::is64BitBuild);
+ assert_static(zen::is32BitBuild || zen::is64BitBuild);
wxString buildFormatted = _("(Build: %x)");
buildFormatted.Replace(wxT("%x"), build);
@@ -176,7 +176,7 @@ void MainDialog::OnStart(wxCommandEvent& event)
Hide();
- switch (rts::startDirectoryMonitor(currentCfg, zen::extractJobName(currentConfigFileName)))
+ switch (rts::startDirectoryMonitor(currentCfg, xmlAccess::extractJobName(currentConfigFileName)))
{
case rts::QUIT:
{
@@ -378,7 +378,7 @@ void MainDialog::addFolder(const std::vector<wxString>& newFolders, bool addFron
{
//add new folder pair
DirectoryPanel* newFolder = new DirectoryPanel(m_scrolledWinFolders);
- newFolder->m_bpButtonRemoveFolder->SetBitmapLabel(GlobalResources::getInstance().getImageByName(wxT("removeFolderPair")));
+ newFolder->m_bpButtonRemoveFolder->SetBitmapLabel(GlobalResources::getImage(wxT("removeFolderPair")));
//get size of scrolled window
folderHeight = newFolder->GetSize().GetHeight();
diff --git a/RealtimeSync/main_dlg.h b/RealtimeSync/main_dlg.h
index ca054b65..5c77fa8f 100644
--- a/RealtimeSync/main_dlg.h
+++ b/RealtimeSync/main_dlg.h
@@ -10,8 +10,8 @@
#include "gui_generated.h"
#include <vector>
#include <memory>
-#include "../shared/dir_name.h"
-#include "../shared/dir_picker_i18n.h"
+#include "../lib/dir_name.h"
+#include <wx+/dir_picker.h>
namespace xmlAccess
{
diff --git a/RealtimeSync/makefile b/RealtimeSync/makefile
index c0ac3aa5..4cef8c62 100644
--- a/RealtimeSync/makefile
+++ b/RealtimeSync/makefile
@@ -2,7 +2,7 @@ APPNAME = RealtimeSync
prefix = /usr
BINDIR = $(DESTDIR)$(prefix)/bin
-COMMON_COMPILE_FLAGS = -Wall -pipe `pkg-config --cflags gtk+-2.0` -O3 -pthread -std=gnu++0x -DNDEBUG -DwxUSE_UNICODE -DFFS_LINUX -DZEN_PLATFORM_OTHER -DWXINTL_NO_GETTEXT_MACRO -I../shared
+COMMON_COMPILE_FLAGS = -Wall -pipe `pkg-config --cflags gtk+-2.0` -O3 -pthread -std=gnu++0x -DNDEBUG -DwxUSE_UNICODE -DFFS_LINUX -DZEN_PLATFORM_OTHER -DWXINTL_NO_GETTEXT_MACRO -I.. -I../zenXml
COMMON_LINK_FLAGS = -O3 -pthread
#default build
@@ -15,33 +15,29 @@ FFS_CPPFLAGS = $(COMMON_COMPILE_FLAGS) `wx-config --cxxflags --debug=no --unicod
LINKFLAGS = $(COMMON_LINK_FLAGS) `wx-config --libs --debug=no --unicode=yes --static=yes` /usr/local/lib/libboost_thread.a
endif
-FILE_LIST= #internal list of all *.cpp files needed for compilation
+FILE_LIST= #internal list of all *.cpp files needed for compilation
FILE_LIST+=application.cpp
FILE_LIST+=gui_generated.cpp
FILE_LIST+=main_dlg.cpp
FILE_LIST+=resources.cpp
FILE_LIST+=tray_menu.cpp
FILE_LIST+=watcher.cpp
-FILE_LIST+=xml_proc.cpp
FILE_LIST+=xml_ffs.cpp
-FILE_LIST+=../library/process_xml.cpp
+FILE_LIST+=xml_proc.cpp
+FILE_LIST+=../lib/dir_name.cpp
+FILE_LIST+=../lib/folder_history_box.cpp
+FILE_LIST+=../lib/localization.cpp
+FILE_LIST+=../lib/process_xml.cpp
+FILE_LIST+=../lib/resolve_path.cpp
+FILE_LIST+=../lib/xml_base.cpp
FILE_LIST+=../structures.cpp
-FILE_LIST+=../shared/folder_history_box.cpp
-FILE_LIST+=../shared/util.cpp
-FILE_LIST+=../shared/i18n.cpp
-FILE_LIST+=../shared/localization.cpp
-FILE_LIST+=../shared/dir_watcher.cpp
-FILE_LIST+=../shared/last_error.cpp
-FILE_LIST+=../shared/dir_name.cpp
-FILE_LIST+=../shared/zstring.cpp
-FILE_LIST+=../shared/xml_base.cpp
-FILE_LIST+=../shared/custom_button.cpp
-FILE_LIST+=../shared/file_handling.cpp
-FILE_LIST+=../shared/resolve_path.cpp
-FILE_LIST+=../shared/file_traverser.cpp
-FILE_LIST+=../shared/standard_paths.cpp
-FILE_LIST+=../shared/help_provider.cpp
-FILE_LIST+=../shared/file_io.cpp
+FILE_LIST+=../wx+/button.cpp
+FILE_LIST+=../wx+/format_unit.cpp
+FILE_LIST+=../zen/dir_watcher.cpp
+FILE_LIST+=../zen/file_handling.cpp
+FILE_LIST+=../zen/file_io.cpp
+FILE_LIST+=../zen/file_traverser.cpp
+FILE_LIST+=../zen/zstring.cpp
#list of all *.o files
OBJECT_LIST=$(foreach file, $(FILE_LIST), ../OBJ/RTS_Release_GCC_Make/$(subst .cpp,.o,$(notdir $(file))))
diff --git a/RealtimeSync/resources.cpp b/RealtimeSync/resources.cpp
index 2a7e2818..2936b7dc 100644
--- a/RealtimeSync/resources.cpp
+++ b/RealtimeSync/resources.cpp
@@ -5,42 +5,24 @@
// **************************************************************************
#include "resources.h"
+#include <memory>
#include <wx/wfstream.h>
#include <wx/zipstrm.h>
#include <wx/image.h>
-#include <wx/icon.h>
-#include <memory>
-#include "../shared/standard_paths.h"
+#include "../lib/ffs_paths.h"
using namespace zen;
-const GlobalResources& GlobalResources::getInstance()
+const GlobalResources& GlobalResources::instance()
{
- static GlobalResources instance;
- return instance;
+ static GlobalResources inst;
+ return inst;
}
GlobalResources::GlobalResources()
{
- programIcon = new wxIcon(wxNullIcon);
-}
-
-
-GlobalResources::~GlobalResources()
-{
- //free bitmap resources
- for (std::map<wxString, wxBitmap*>::iterator i = bitmapResource.begin(); i != bitmapResource.end(); ++i)
- delete i->second;
-
- //free other resources
- delete programIcon;
-}
-
-
-void GlobalResources::load() const
-{
wxFFileInputStream input(zen::getResourceDir() + wxT("Resources.zip"));
if (input.IsOk()) //if not... we don't want to react too harsh here
{
@@ -51,7 +33,7 @@ void GlobalResources::load() const
while (true)
{
- std::auto_ptr<wxZipEntry> entry(resourceFile.GetNextEntry());
+ std::unique_ptr<wxZipEntry> entry(resourceFile.GetNextEntry());
if (entry.get() == NULL)
break;
@@ -59,32 +41,31 @@ void GlobalResources::load() const
//generic image loading
if (name.EndsWith(wxT(".png")))
- {
- if (bitmapResource.find(name) == bitmapResource.end()) //avoid duplicate entry: prevent memory leak!
- bitmapResource[name] = new wxBitmap(wxImage(resourceFile, wxBITMAP_TYPE_PNG));
- }
+ bitmaps.insert(std::make_pair(name, wxImage(resourceFile, wxBITMAP_TYPE_PNG)));
}
}
#ifdef FFS_WIN
//for compatibility it seems we need to stick with a "real" icon
- *programIcon = wxIcon(wxT("A_PROGRAM_ICON"));
+ programIcon = wxIcon(wxT("A_PROGRAM_ICON"));
#else
//use big logo bitmap for better quality
- programIcon->CopyFromBitmap(getImageByName(wxT("RealtimeSync.png")));
+ programIcon.CopyFromBitmap(getImageInt(wxT("RealtimeSync.png")));
#endif
+
}
-const wxBitmap& GlobalResources::getImageByName(const wxString& imageName) const
+const wxBitmap& GlobalResources::getImageInt(const wxString& name) const
{
- const std::map<wxString, wxBitmap*>::const_iterator bmp = imageName.Find(wxChar('.')) == wxNOT_FOUND ? //assume .png ending if nothing else specified
- bitmapResource.find(imageName + wxT(".png")) :
- bitmapResource.find(imageName);
-
- if (bmp != bitmapResource.end())
- return *bmp->second;
+ auto iter = bitmaps.find(name.Find(L'.') == wxNOT_FOUND ? //assume .png ending if nothing else specified
+ name + wxT(".png") :
+ name);
+ if (iter != bitmaps.end())
+ return iter->second;
else
+ {
+ assert(false);
return wxNullBitmap;
+ }
}
-
diff --git a/RealtimeSync/resources.h b/RealtimeSync/resources.h
index fec82358..4c41d47d 100644
--- a/RealtimeSync/resources.h
+++ b/RealtimeSync/resources.h
@@ -7,29 +7,29 @@
#ifndef RESOURCES_H_INCLUDED
#define RESOURCES_H_INCLUDED
-#include <wx/bitmap.h>
-#include <wx/string.h>
#include <map>
+#include <wx/bitmap.h>
+#include <wx/icon.h>
class GlobalResources
{
public:
- static const GlobalResources& getInstance();
+ static const GlobalResources& instance();
- const wxBitmap& getImageByName(const wxString& imageName) const;
+ static const wxBitmap& getImage(const wxString& name) { return instance().getImageInt(name); }
//image resource objects
- wxIcon* programIcon;
-
- void load() const; //loads bitmap resources on program startup: logical const!
+ wxIcon programIcon;
private:
GlobalResources();
- ~GlobalResources();
+ GlobalResources(const GlobalResources&); //=delete
+ GlobalResources& operator=(const GlobalResources&); //=delete
+
+const wxBitmap& getImageInt(const wxString& name) const;
- //resource mapping
- mutable std::map<wxString, wxBitmap*> bitmapResource;
+ std::map<wxString, wxBitmap> bitmaps;
};
#endif // RESOURCES_H_INCLUDED
diff --git a/RealtimeSync/tray_menu.cpp b/RealtimeSync/tray_menu.cpp
index cbdf6070..8d43cabc 100644
--- a/RealtimeSync/tray_menu.cpp
+++ b/RealtimeSync/tray_menu.cpp
@@ -20,11 +20,10 @@
#include <wx/icon.h> //Linux needs this
#include <wx/timer.h>
#include "resources.h"
-#include "../shared/string_conv.h"
-#include "../shared/i18n.h"
-#include "../shared/assert_static.h"
-#include "../shared/build_info.h"
-#include "../shared/shell_execute.h"
+#include <wx+/string_conv.h>
+#include <zen/assert_static.h>
+#include <zen/build_info.h>
+#include <wx+/shell_execute.h>
using namespace rts;
using namespace zen;
@@ -148,9 +147,9 @@ void TrayIconHolder::showIconActive()
{
wxIcon realtimeIcon;
#ifdef FFS_WIN
- realtimeIcon.CopyFromBitmap(GlobalResources::getInstance().getImageByName(wxT("RTS_tray_win.png"))); //use a 16x16 bitmap
+ realtimeIcon.CopyFromBitmap(GlobalResources::getImage(wxT("RTS_tray_win.png"))); //use a 16x16 bitmap
#elif defined FFS_LINUX
- realtimeIcon.CopyFromBitmap(GlobalResources::getInstance().getImageByName(wxT("RTS_tray_linux.png"))); //use a 22x22 bitmap for perfect fit
+ realtimeIcon.CopyFromBitmap(GlobalResources::getImage(wxT("RTS_tray_linux.png"))); //use a 22x22 bitmap for perfect fit
#endif
const wxString postFix = jobName_.empty() ? wxString() : (wxT("\n\"") + jobName_ + wxT("\""));
trayMenu->SetIcon(realtimeIcon, _("Monitoring active...") + postFix);
@@ -161,9 +160,9 @@ void TrayIconHolder::showIconWaiting()
{
wxIcon realtimeIcon;
#ifdef FFS_WIN
- realtimeIcon.CopyFromBitmap(GlobalResources::getInstance().getImageByName(wxT("RTS_tray_waiting_win.png"))); //use a 16x16 bitmap
+ realtimeIcon.CopyFromBitmap(GlobalResources::getImage(wxT("RTS_tray_waiting_win.png"))); //use a 16x16 bitmap
#elif defined FFS_LINUX
- realtimeIcon.CopyFromBitmap(GlobalResources::getInstance().getImageByName(wxT("RTS_tray_waiting_linux.png"))); //use a 22x22 bitmap for perfect fit
+ realtimeIcon.CopyFromBitmap(GlobalResources::getImage(wxT("RTS_tray_waiting_linux.png"))); //use a 22x22 bitmap for perfect fit
#endif
const wxString postFix = jobName_.empty() ? wxString() : (wxT("\n\"") + jobName_ + wxT("\""));
trayMenu->SetIcon(realtimeIcon, _("Waiting for missing directories...") + postFix);
@@ -192,11 +191,11 @@ void TrayIconHolder::OnContextMenuSelection(wxCommandEvent& event)
#endif //wxUSE_UNICODE
//compile time info about 32/64-bit build
- if (util::is64BitBuild)
+ if (zen::is64BitBuild)
build += wxT(" x64");
else
build += wxT(" x86");
- assert_static(util::is32BitBuild || util::is64BitBuild);
+ assert_static(zen::is32BitBuild || zen::is64BitBuild);
wxString buildFormatted = _("(Build: %x)");
buildFormatted.Replace(wxT("%x"), build);
@@ -312,6 +311,7 @@ rts::MonitorResponse rts::startDirectoryMonitor(const xmlAccess::XmlRealConfig&
while (true)
{
::wxSetEnv(L"changed_file", utf8CvrtTo<wxString>(lastFileChanged)); //some way to output what file changed to the user
+ lastFileChanged.clear(); //make sure old name is not shown again after a directory reappears
//execute command
zen::shellExecute(config.commandline, zen::EXEC_TYPE_SYNC);
diff --git a/RealtimeSync/watcher.cpp b/RealtimeSync/watcher.cpp
index 37664d35..97ad480a 100644
--- a/RealtimeSync/watcher.cpp
+++ b/RealtimeSync/watcher.cpp
@@ -5,14 +5,14 @@
// **************************************************************************
#include "watcher.h"
-#include "../shared/file_handling.h"
-#include "../shared/i18n.h"
-#include "../shared/stl_tools.h"
+#include <zen/file_handling.h>
+#include <zen/stl_tools.h>
#include <set>
#include <wx/timer.h>
-#include "../shared/resolve_path.h"
-#include "../shared/dir_watcher.h"
-#include "../shared/string_conv.h"
+#include "../lib/resolve_path.h"
+#include <zen/dir_watcher.h>
+#include <wx+/string_conv.h>
+#include <zen/thread.h>
//#include "../library/db_file.h" //SYNC_DB_FILE_ENDING -> complete file too much of a dependency; file ending too little to decouple into single header
//#include "../library/lock_holder.h" //LOCK_FILE_ENDING
#include <wx/msgdlg.h>
@@ -64,12 +64,15 @@ rts::WaitResult rts::waitForChanges(const std::vector<Zstring>& dirNamesNonFmt,
const Zstring& dirnameFmt = *iter;
try
{
- watches.push_back(std::make_pair(dirnameFmt, std::make_shared<DirWatcher>(dirnameFmt))); //throw FileError
+ watches.push_back(std::make_pair(dirnameFmt, std::make_shared<DirWatcher>(dirnameFmt))); //throw FileError, ErrorNotExisting
}
- catch (FileError&)
+ catch (ErrorNotExisting&) //nice atomic behavior: *no* second directory existence check!!!
{
- //Note: checking for directory existence is NOT transactional!!!
- if (!dirExists(dirnameFmt)) //that's no good locking behavior, but better than nothing
+ return CHANGE_DIR_MISSING;
+ }
+ catch (FileError&) //play safe: remedy potential FileErrors that should have been ErrorNotExisting (e.g. Linux: errors during directory traversing)
+ {
+ if (!dirExists(dirnameFmt)) //not an atomic behavior!!!
return CHANGE_DIR_MISSING;
throw;
}
@@ -102,10 +105,10 @@ rts::WaitResult rts::waitForChanges(const std::vector<Zstring>& dirNamesNonFmt,
try
{
- std::vector<Zstring> changedFiles = watcher.getChanges(); //throw FileError
+ std::vector<Zstring> changedFiles = watcher.getChanges(); //throw FileError, ErrorNotExisting
//remove to be ignored changes
- vector_remove_if(changedFiles, [](const Zstring & name)
+ vector_remove_if(changedFiles, [](const Zstring& name)
{
return endsWith(name, Zstr(".ffs_lock")) || //sync.ffs_lock, sync.Del.ffs_lock
endsWith(name, Zstr(".ffs_db")); //sync.ffs_db, .sync.tmp.ffs_db
@@ -122,10 +125,13 @@ rts::WaitResult rts::waitForChanges(const std::vector<Zstring>& dirNamesNonFmt,
}
}
- catch (FileError&)
+ catch (ErrorNotExisting&) //nice atomic behavior: *no* second directory existence check!!!
{
- //Note: checking for directory existence is NOT transactional!!!
- if (!dirExists(dirname)) //catch errors related to directory removal, e.g. ERROR_NETNAME_DELETED
+ return CHANGE_DIR_MISSING;
+ }
+ catch (FileError&) //play safe: remedy potential FileErrors that should have been ErrorNotExisting (e.g. Linux: errors during directory traversing)
+ {
+ if (!dirExists(dirname)) //not an atomic behavior!!!
return CHANGE_DIR_MISSING;
throw;
}
@@ -149,18 +155,36 @@ void rts::waitForMissingDirs(const std::vector<Zstring>& dirNamesNonFmt, WaitCal
{
lastCheck = current;
- if (std::find_if(dirNamesNonFmt.begin(), dirNamesNonFmt.end(),
- [&](const Zstring& dirnameNonFmt) -> bool
- {
- //support specifying volume by name => call getFormattedDirectoryName() repeatedly
- const Zstring formattedDir = zen::getFormattedDirectoryName(dirnameNonFmt);
-
- if (formattedDir.empty())
- throw zen::FileError(_("A directory input field is empty."));
+ auto ftDirMissing = async([=]() -> bool
+ {
+ return std::find_if(dirNamesNonFmt.begin(), dirNamesNonFmt.end(),
+ [](const Zstring& dirnameNonFmt) -> bool
+ {
+ //support specifying volume by name => call getFormattedDirectoryName() repeatedly
+ const Zstring dirnameFmt = zen::getFormattedDirectoryName(dirnameNonFmt);
+
+ if (dirnameFmt.empty())
+ throw zen::FileError(_("A directory input field is empty."));
+#ifdef FFS_WIN
+ //1. login to network share, if necessary
+ loginNetworkShare(dirnameFmt, false); //login networks shares, no PW prompt -> is this really RTS's task?
+#endif
+ //2. check dir existence
+ return !zen::dirExists(dirnameFmt);
+ }) != dirNamesNonFmt.end();
+ });
+ while (!ftDirMissing.timed_wait(boost::posix_time::milliseconds(rts::UI_UPDATE_INTERVAL)))
+ statusHandler->requestUiRefresh(); //may throw!
- return !dirExists(formattedDir);
- }) == dirNamesNonFmt.end())
- return;
+ try
+ {
+ if (!ftDirMissing.get()) //throw X
+ return;
+ }
+ catch (...) //boost::future seems to map async exceptions to "some" boost exception type -> migrate this for C++11
+ {
+ throw zen::FileError(_("A directory input field is empty."));
+ }
}
wxMilliSleep(rts::UI_UPDATE_INTERVAL);
diff --git a/RealtimeSync/watcher.h b/RealtimeSync/watcher.h
index dd0dd88d..9d2448de 100644
--- a/RealtimeSync/watcher.h
+++ b/RealtimeSync/watcher.h
@@ -7,9 +7,9 @@
#ifndef WATCHER_H_INCLUDED
#define WATCHER_H_INCLUDED
-#include "../shared/zstring.h"
+#include <zen/zstring.h>
#include <vector>
-#include "../shared/file_error.h"
+#include <zen/file_error.h>
namespace rts
diff --git a/RealtimeSync/xml_ffs.cpp b/RealtimeSync/xml_ffs.cpp
index 23ee1b38..32ef3b39 100644
--- a/RealtimeSync/xml_ffs.cpp
+++ b/RealtimeSync/xml_ffs.cpp
@@ -5,18 +5,17 @@
// **************************************************************************
#include "xml_ffs.h"
-#include "../shared/standard_paths.h"
-#include "../shared/zstring.h"
-#include "../shared/xml_base.h"
-#include "../shared/string_conv.h"
+#include "../lib/ffs_paths.h"
+#include <zen/zstring.h>
+#include <wx+/string_conv.h>
//include FreeFileSync xml headers
-#include "../library/process_xml.h"
+#include "../lib/process_xml.h"
using namespace zen;
-xmlAccess::XmlRealConfig convertBatchToReal(const xmlAccess::XmlBatchConfig& batchCfg, const wxString& filename)
+xmlAccess::XmlRealConfig convertBatchToReal(const xmlAccess::XmlBatchConfig& batchCfg, const Zstring& filename)
{
xmlAccess::XmlRealConfig output;
@@ -64,11 +63,11 @@ void rts::readRealOrBatchConfig(const wxString& filename, xmlAccess::XmlRealConf
catch (const xmlAccess::FfsXmlError& e)
{
if (e.getSeverity() == xmlAccess::FfsXmlError::WARNING)
- config = convertBatchToReal(batchCfg, filename); //do work despite parsing errors, then re-throw
+ config = convertBatchToReal(batchCfg, toZ(filename)); //do work despite parsing errors, then re-throw
throw; //
}
- config = convertBatchToReal(batchCfg, filename);
+ config = convertBatchToReal(batchCfg, toZ(filename));
}
diff --git a/RealtimeSync/xml_proc.cpp b/RealtimeSync/xml_proc.cpp
index b9839f9c..8e978aed 100644
--- a/RealtimeSync/xml_proc.cpp
+++ b/RealtimeSync/xml_proc.cpp
@@ -6,10 +6,8 @@
#include "xml_proc.h"
#include <wx/filefn.h>
-#include "../shared/i18n.h"
-#include <file_handling.h>
-#include <string_conv.h>
-#include <xml_base.h>
+#include <zen/file_handling.h>
+#include <wx+/string_conv.h>
using namespace zen;
using namespace xmlAccess;
@@ -44,19 +42,19 @@ bool isXmlTypeRTS(const XmlDoc& doc) //throw()
void xmlAccess::readRealConfig(const wxString& filename, XmlRealConfig& config)
{
if (!fileExists(toZ(filename)))
- throw FfsXmlError(wxString(_("File does not exist:")) + wxT("\n\"") + filename + wxT("\""));
+ throw FfsXmlError(_("File does not exist:") + "\n\"" + filename.c_str() + "\"");
XmlDoc doc;
- loadXmlDocument(filename, doc); //throw (FfsXmlError)
+ loadXmlDocument(toZ(filename), doc); //throw (FfsXmlError)
if (!isXmlTypeRTS(doc))
- throw FfsXmlError(wxString(_("Error parsing configuration file:")) + wxT("\n\"") + filename + wxT("\""));
+ throw FfsXmlError(_("Error parsing configuration file:") + "\n\"" + filename.c_str() + "\"");
XmlIn in(doc);
::readConfig(in, config);
if (in.errorsOccured())
- throw FfsXmlError(wxString(_("Error parsing configuration file:")) + wxT("\n\"") + filename + wxT("\"\n\n") +
+ throw FfsXmlError(_("Error parsing configuration file:") + "\n\"" + filename.c_str() + "\"\n\n" +
getErrorMessageFormatted(in), FfsXmlError::WARNING);
}
@@ -80,5 +78,5 @@ void xmlAccess::writeRealConfig(const XmlRealConfig& config, const wxString& fil
XmlOut out(doc);
writeConfig(config, out);
- saveXmlDocument(doc, filename); //throw (FfsXmlError)
+ saveXmlDocument(doc, toZ(filename)); //throw (FfsXmlError)
}
diff --git a/RealtimeSync/xml_proc.h b/RealtimeSync/xml_proc.h
index 37d2e029..2fd54c37 100644
--- a/RealtimeSync/xml_proc.h
+++ b/RealtimeSync/xml_proc.h
@@ -9,7 +9,7 @@
#include <vector>
#include <wx/string.h>
-#include <xml_error.h>
+#include "../lib/xml_base.h"
namespace xmlAccess
bgstack15