├── .clang-format
├── .github
└── workflows
│ └── build.yml
├── .gitignore
├── CHANGELOG.md
├── COPYING.md
├── README.md
├── art
├── about_banner.svg
├── back.svg
├── banner_install.svg
├── banner_uninstall.svg
├── blot.svg
├── error.svg
├── forward.svg
├── icon.svg
├── icon_install.svg
├── icon_uninstall.svg
├── info.svg
├── install_header.svg
├── refresh.svg
├── remove_history.svg
├── send_directory.svg
├── send_file.svg
├── spinner.png
├── spinner.sifz
├── spinner.svg
├── spinner20.png
├── spinner24.png
├── spinner256.png
├── spinner32.png
├── spinner40.png
├── transfer_badge_down.svg
├── transfer_badge_up.svg
├── transfer_dir_dir.svg
├── transfer_dir_file.svg
├── transfer_dir_x.svg
├── transfer_failed.svg
├── transfer_file_file.svg
├── transfer_file_x.svg
├── transfer_status_cancelled.svg
├── transfer_status_error.svg
├── transfer_status_success.svg
├── transfer_succeeded.svg
├── tray_icon.svg
├── uninstall_header.svg
├── unk_profile.svg
└── warning.svg
├── build
├── extract_strings_for_translation.bat
└── post_compile.bat
├── nsis
├── .gitignore
├── gpl-3.0.rtf
├── icons
│ ├── install.ico
│ ├── install128.png
│ ├── install16.png
│ ├── install24.png
│ ├── install256.png
│ ├── install32.png
│ ├── install48.png
│ ├── install64.png
│ ├── uninstall.ico
│ ├── uninstall128.png
│ ├── uninstall16.png
│ ├── uninstall24.png
│ ├── uninstall256.png
│ ├── uninstall32.png
│ ├── uninstall48.png
│ └── uninstall64.png
├── inst-banner.bmp
├── inst-banner.png
├── inst-welcome.bmp
├── inst-welcome.png
├── plugins
│ └── inetc
│ │ ├── Contrib
│ │ └── Inetc
│ │ │ ├── afxres.h
│ │ │ ├── api.h
│ │ │ ├── crt.cpp
│ │ │ ├── inetc.cpp
│ │ │ ├── inetc.rc
│ │ │ ├── inetc.sln
│ │ │ ├── inetc.vcxproj
│ │ │ ├── inetc.vcxproj.filters
│ │ │ ├── nsis_tchar.h
│ │ │ ├── pluginapi.c
│ │ │ ├── pluginapi.h
│ │ │ └── resource.h
│ │ ├── Docs
│ │ └── Inetc
│ │ │ ├── Readme.htm
│ │ │ └── wiki.txt
│ │ ├── Examples
│ │ └── Inetc
│ │ │ ├── Example.nsi
│ │ │ ├── auth_dlg.nsi
│ │ │ ├── ftp_auth.nsi
│ │ │ ├── head.nsi
│ │ │ ├── headers.nsi
│ │ │ ├── headers.php
│ │ │ ├── https.nsi
│ │ │ ├── inetc_local.nsi
│ │ │ ├── post.nsi
│ │ │ ├── post.php
│ │ │ ├── post_file.nsi
│ │ │ ├── post_file.php
│ │ │ ├── post_form.html
│ │ │ ├── put.nsi
│ │ │ ├── put.php
│ │ │ ├── recursive.nsi
│ │ │ ├── redirect.nsi
│ │ │ ├── redirect.php
│ │ │ ├── timeout.nsi
│ │ │ ├── tostack.nsi
│ │ │ └── translate.nsi
│ │ ├── Plugins
│ │ ├── amd64-unicode
│ │ │ └── INetC.dll
│ │ ├── x86-ansi
│ │ │ └── INetC.dll
│ │ └── x86-unicode
│ │ │ └── INetC.dll
│ │ └── build_msvc.cmd
├── uninst-banner.bmp
├── uninst-banner.png
├── uninst-welcome.bmp
├── uninst-welcome.png
├── winpinator.nsh
├── x64.nsi
└── x86.nsi
├── po
├── .gitignore
├── en_US.po
├── pl_PL.po
└── winpinator.pot
├── proto
├── generate-protobuf.bat
└── warp.proto
├── readme
├── screen1.png
├── screen2.png
├── screen3.png
└── screen4.png
├── res
├── about_banner.png
├── back.png
├── blot.png
├── error.png
├── forward.png
├── icon.ico
├── icon128.png
├── icon16.png
├── icon256.png
├── icon32.png
├── icon48.png
├── icon64.png
├── info.png
├── refresh.png
├── remove_history.png
├── send_directory.png
├── send_file.png
├── spinner16.png
├── spinner48.png
├── to_copy
│ ├── LICENSE.html
│ ├── LICENSE.rtf
│ ├── Languages.xml
│ ├── RELEASE NOTES.txt
│ ├── flags
│ │ ├── ac.png
│ │ ├── ad.png
│ │ ├── ae.png
│ │ ├── af.png
│ │ ├── ag.png
│ │ ├── ai.png
│ │ ├── al.png
│ │ ├── am.png
│ │ ├── ao.png
│ │ ├── aq.png
│ │ ├── ar.png
│ │ ├── as.png
│ │ ├── at.png
│ │ ├── au.png
│ │ ├── aw.png
│ │ ├── ax.png
│ │ ├── az.png
│ │ ├── ba.png
│ │ ├── bb.png
│ │ ├── bd.png
│ │ ├── be.png
│ │ ├── bf.png
│ │ ├── bg.png
│ │ ├── bh.png
│ │ ├── bi.png
│ │ ├── bj.png
│ │ ├── bl.png
│ │ ├── bm.png
│ │ ├── bn.png
│ │ ├── bo.png
│ │ ├── bq.png
│ │ ├── br.png
│ │ ├── bs.png
│ │ ├── bt.png
│ │ ├── bv.png
│ │ ├── bw.png
│ │ ├── by.png
│ │ ├── bz.png
│ │ ├── ca.png
│ │ ├── cc.png
│ │ ├── cd.png
│ │ ├── cf.png
│ │ ├── cg.png
│ │ ├── ch.png
│ │ ├── ci.png
│ │ ├── ck.png
│ │ ├── cl.png
│ │ ├── cm.png
│ │ ├── cn.png
│ │ ├── co.png
│ │ ├── cp.png
│ │ ├── cr.png
│ │ ├── cu.png
│ │ ├── cv.png
│ │ ├── cw.png
│ │ ├── cx.png
│ │ ├── cy.png
│ │ ├── cz.png
│ │ ├── de.png
│ │ ├── dg.png
│ │ ├── dj.png
│ │ ├── dk.png
│ │ ├── dm.png
│ │ ├── do.png
│ │ ├── dz.png
│ │ ├── ea.png
│ │ ├── ec.png
│ │ ├── ee.png
│ │ ├── eg.png
│ │ ├── eh.png
│ │ ├── er.png
│ │ ├── es-ct.png
│ │ ├── es-ga.png
│ │ ├── es.png
│ │ ├── et.png
│ │ ├── eu.png
│ │ ├── fi.png
│ │ ├── fj.png
│ │ ├── fk.png
│ │ ├── fm.png
│ │ ├── fo.png
│ │ ├── fr.png
│ │ ├── ga.png
│ │ ├── gb-eng.png
│ │ ├── gb-nir.png
│ │ ├── gb-sct.png
│ │ ├── gb-wls.png
│ │ ├── gb.png
│ │ ├── gd.png
│ │ ├── ge.png
│ │ ├── gf.png
│ │ ├── gg.png
│ │ ├── gh.png
│ │ ├── gi.png
│ │ ├── gl.png
│ │ ├── gm.png
│ │ ├── gn.png
│ │ ├── gp.png
│ │ ├── gq.png
│ │ ├── gr.png
│ │ ├── gs.png
│ │ ├── gt.png
│ │ ├── gu.png
│ │ ├── gw.png
│ │ ├── gy.png
│ │ ├── hk.png
│ │ ├── hm.png
│ │ ├── hn.png
│ │ ├── hr.png
│ │ ├── ht.png
│ │ ├── hu.png
│ │ ├── ic.png
│ │ ├── id.png
│ │ ├── ie.png
│ │ ├── il.png
│ │ ├── im.png
│ │ ├── in.png
│ │ ├── io.png
│ │ ├── iq.png
│ │ ├── ir.png
│ │ ├── is.png
│ │ ├── it.png
│ │ ├── je.png
│ │ ├── jm.png
│ │ ├── jo.png
│ │ ├── jp.png
│ │ ├── ke.png
│ │ ├── kg.png
│ │ ├── kh.png
│ │ ├── ki.png
│ │ ├── km.png
│ │ ├── kn.png
│ │ ├── kp.png
│ │ ├── kr.png
│ │ ├── kw.png
│ │ ├── ky.png
│ │ ├── kz.png
│ │ ├── la.png
│ │ ├── lb.png
│ │ ├── lc.png
│ │ ├── li.png
│ │ ├── lk.png
│ │ ├── lr.png
│ │ ├── ls.png
│ │ ├── lt.png
│ │ ├── lu.png
│ │ ├── lv.png
│ │ ├── ly.png
│ │ ├── ma.png
│ │ ├── mc.png
│ │ ├── md.png
│ │ ├── me.png
│ │ ├── mf.png
│ │ ├── mg.png
│ │ ├── mh.png
│ │ ├── mk.png
│ │ ├── ml.png
│ │ ├── mm.png
│ │ ├── mn.png
│ │ ├── mo.png
│ │ ├── mp.png
│ │ ├── mq.png
│ │ ├── mr.png
│ │ ├── ms.png
│ │ ├── mt.png
│ │ ├── mu.png
│ │ ├── mv.png
│ │ ├── mw.png
│ │ ├── mx.png
│ │ ├── my.png
│ │ ├── mz.png
│ │ ├── na.png
│ │ ├── nc.png
│ │ ├── ne.png
│ │ ├── nf.png
│ │ ├── ng.png
│ │ ├── ni.png
│ │ ├── nl.png
│ │ ├── no.png
│ │ ├── np.png
│ │ ├── nr.png
│ │ ├── nu.png
│ │ ├── nz.png
│ │ ├── om.png
│ │ ├── pa.png
│ │ ├── pe.png
│ │ ├── pf.png
│ │ ├── pg.png
│ │ ├── ph.png
│ │ ├── pk.png
│ │ ├── pl.png
│ │ ├── pm.png
│ │ ├── pn.png
│ │ ├── pr.png
│ │ ├── ps.png
│ │ ├── pt.png
│ │ ├── pw.png
│ │ ├── py.png
│ │ ├── qa.png
│ │ ├── re.png
│ │ ├── ro.png
│ │ ├── rs.png
│ │ ├── ru.png
│ │ ├── rw.png
│ │ ├── sa.png
│ │ ├── sb.png
│ │ ├── sc.png
│ │ ├── sd.png
│ │ ├── se.png
│ │ ├── sg.png
│ │ ├── sh.png
│ │ ├── si.png
│ │ ├── sj.png
│ │ ├── sk.png
│ │ ├── sl.png
│ │ ├── sm.png
│ │ ├── sn.png
│ │ ├── so.png
│ │ ├── sr.png
│ │ ├── ss.png
│ │ ├── st.png
│ │ ├── sv.png
│ │ ├── sx.png
│ │ ├── sy.png
│ │ ├── sz.png
│ │ ├── ta.png
│ │ ├── tc.png
│ │ ├── td.png
│ │ ├── tf.png
│ │ ├── tg.png
│ │ ├── th.png
│ │ ├── tj.png
│ │ ├── tk.png
│ │ ├── tl.png
│ │ ├── tm.png
│ │ ├── tn.png
│ │ ├── to.png
│ │ ├── tr.png
│ │ ├── tt.png
│ │ ├── tv.png
│ │ ├── tw.png
│ │ ├── tz.png
│ │ ├── ua.png
│ │ ├── ug.png
│ │ ├── um.png
│ │ ├── un.png
│ │ ├── us.png
│ │ ├── uy.png
│ │ ├── uz.png
│ │ ├── va.png
│ │ ├── vc.png
│ │ ├── ve.png
│ │ ├── vg.png
│ │ ├── vi.png
│ │ ├── vn.png
│ │ ├── vu.png
│ │ ├── wf.png
│ │ ├── ws.png
│ │ ├── xk.png
│ │ ├── ye.png
│ │ ├── yt.png
│ │ ├── za.png
│ │ ├── zm.png
│ │ ├── zw.png
│ │ └── zz.png
│ └── locales
│ │ ├── en_US
│ │ └── winpinator.mo
│ │ └── pl_PL
│ │ └── winpinator.mo
├── transfer_badge_down.png
├── transfer_badge_up.png
├── transfer_dir_dir.png
├── transfer_dir_file.png
├── transfer_dir_x.png
├── transfer_failed.png
├── transfer_file_file.png
├── transfer_file_x.png
├── transfer_status_cancelled.png
├── transfer_status_error.png
├── transfer_status_success.png
├── transfer_succeeded.png
├── tray_err.ico
├── tray_err16.png
├── tray_err32.png
├── tray_ok.ico
├── tray_ok16.png
├── tray_ok32.png
├── tray_wait.ico
├── tray_wait16.png
├── tray_wait32.png
├── unk_profile.png
└── warning.png
├── src
├── globals.cpp
├── globals.hpp
├── gui
│ ├── about_dialog.cpp
│ ├── about_dialog.hpp
│ ├── array_event.cpp
│ ├── array_event.hpp
│ ├── autorun_setter.cpp
│ ├── autorun_setter.hpp
│ ├── file_list_dialog.cpp
│ ├── file_list_dialog.hpp
│ ├── history_element_finished.cpp
│ ├── history_element_finished.hpp
│ ├── history_element_pending.cpp
│ ├── history_element_pending.hpp
│ ├── history_group_header.cpp
│ ├── history_group_header.hpp
│ ├── history_item.cpp
│ ├── history_item.hpp
│ ├── history_item_icon.cpp
│ ├── history_item_icon.hpp
│ ├── history_std_bitmaps.hpp
│ ├── host_listbox.cpp
│ ├── host_listbox.hpp
│ ├── language_adapter.cpp
│ ├── language_adapter.hpp
│ ├── network_interface_adapter.cpp
│ ├── network_interface_adapter.hpp
│ ├── page_error.cpp
│ ├── page_error.hpp
│ ├── page_hostlist.cpp
│ ├── page_hostlist.hpp
│ ├── page_nohosts.cpp
│ ├── page_nohosts.hpp
│ ├── page_offline.cpp
│ ├── page_offline.hpp
│ ├── page_starting.cpp
│ ├── page_starting.hpp
│ ├── page_transferlist.cpp
│ ├── page_transferlist.hpp
│ ├── permission_picker.cpp
│ ├── permission_picker.hpp
│ ├── pointer_event.cpp
│ ├── pointer_event.hpp
│ ├── progress_label.cpp
│ ├── progress_label.hpp
│ ├── screen_selector.cpp
│ ├── screen_selector.hpp
│ ├── scrollable_restorable.hpp
│ ├── settings_dialog.cpp
│ ├── settings_dialog.hpp
│ ├── spritesheet_animator.cpp
│ ├── spritesheet_animator.hpp
│ ├── status_text.cpp
│ ├── status_text.hpp
│ ├── tool_button.cpp
│ ├── tool_button.hpp
│ ├── transfer_history.cpp
│ ├── transfer_history.hpp
│ ├── transfer_speed_calculator.cpp
│ ├── transfer_speed_calculator.hpp
│ ├── utils.cpp
│ ├── utils.hpp
│ ├── winpinator_banner.cpp
│ ├── winpinator_banner.hpp
│ ├── winpinator_frame.cpp
│ └── winpinator_frame.hpp
├── main.cpp
├── main.hpp
├── main_base.hpp
├── proto-gen
│ ├── warp.grpc.pb.cc
│ ├── warp.grpc.pb.h
│ ├── warp.pb.cc
│ └── warp.pb.h
├── running_instance_detector.cpp
├── running_instance_detector.hpp
├── service
│ ├── account_picture_extractor.cpp
│ ├── account_picture_extractor.hpp
│ ├── auth_manager.cpp
│ ├── auth_manager.hpp
│ ├── database_manager.cpp
│ ├── database_manager.hpp
│ ├── database_types.hpp
│ ├── database_utils.cpp
│ ├── database_utils.hpp
│ ├── event.hpp
│ ├── file_crawler.cpp
│ ├── file_crawler.hpp
│ ├── file_sender.cpp
│ ├── file_sender.hpp
│ ├── icon_extractor.cpp
│ ├── icon_extractor.hpp
│ ├── memory_manager.cpp
│ ├── memory_manager.hpp
│ ├── notification.cpp
│ ├── notification.hpp
│ ├── notification_accept_files.cpp
│ ├── notification_accept_files.hpp
│ ├── notification_transfer_failed.cpp
│ ├── notification_transfer_failed.hpp
│ ├── notification_transfer_succeeded.cpp
│ ├── notification_transfer_succeeded.hpp
│ ├── observable_service.cpp
│ ├── observable_service.hpp
│ ├── registration_v1_impl.cpp
│ ├── registration_v1_impl.hpp
│ ├── registration_v2_impl.cpp
│ ├── registration_v2_impl.hpp
│ ├── remote_handler.cpp
│ ├── remote_handler.hpp
│ ├── remote_info.hpp
│ ├── remote_manager.cpp
│ ├── remote_manager.hpp
│ ├── service_base64.cpp
│ ├── service_errors.hpp
│ ├── service_observer.cpp
│ ├── service_observer.hpp
│ ├── service_utils.cpp
│ ├── service_utils.hpp
│ ├── transfer_manager.cpp
│ ├── transfer_manager.hpp
│ ├── transfer_manager_reactor.cpp
│ ├── transfer_types.hpp
│ ├── unix_permissions.cpp
│ ├── unix_permissions.hpp
│ ├── warp_service_impl.cpp
│ ├── warp_service_impl.hpp
│ ├── winpinator_service.cpp
│ ├── winpinator_service.hpp
│ ├── zlib_deflate.cpp
│ └── zlib_deflate.hpp
├── settings_model.cpp
├── settings_model.hpp
├── thread_name.hpp
├── tray_icon.cpp
├── tray_icon.hpp
├── winpinator_dde_client.cpp
├── winpinator_dde_client.hpp
├── winpinator_dde_consts.cpp
├── winpinator_dde_consts.hpp
├── winpinator_dde_server.cpp
├── winpinator_dde_server.hpp
└── zeroconf
│ ├── interface_utils.cpp
│ ├── interface_utils.hpp
│ ├── mdns.h
│ ├── mdns_client.cpp
│ ├── mdns_client.hpp
│ ├── mdns_service.cpp
│ ├── mdns_service.hpp
│ └── mdns_types.hpp
├── test
├── unix_permissions.test.cpp
└── zlib_deflate.test.cpp
├── vcpkg.json
├── vs16
├── .gitattributes
├── .gitignore
├── Winpinator.sln
├── Winpinator.vcxproj
├── Winpinator.vcxproj.filters
└── test
│ ├── .gitignore
│ ├── packages.config
│ └── test.vcxproj
└── win32
├── manifest.manifest
├── resource.h
├── winpinator.aps
└── winpinator.rc
/.clang-format:
--------------------------------------------------------------------------------
1 | BasedOnStyle: WebKit
2 |
3 | BreakBeforeBraces: Allman
4 | SpacesInParentheses: true
5 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | vcpkg_installed
2 | .vs
3 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # CHANGELOG
2 |
3 | ## Release 0.1.1
4 |
5 | This release is just a small fix of full names not appearing under some circumstances on some Windows machines.
6 |
7 | **Fixes**:
8 | - A bug that prevents user's full name from being properly read on some machines
9 |
10 | ## Release 0.1.0
11 |
12 | This is the first version of Winpinator. It already supports
13 | most of the planned features, however, it might be a little
14 | buggy and unstable.
15 |
16 | **Features**:
17 | - Show up in mDNS as capable of handling the Warpinator protocol
18 | - Discover other computers running Warpinator/Winpinator on local network
19 | - Support both v1 and v2 registration protocols
20 | - Send and receive files, directories and any combination of those
21 | - Compress and decompress transfer chunks with deflate algorithm using zlib
22 | - Save zone information to received files (can be turned off in preferences)
23 | - Store transfer history containing all transferred paths
24 | - Accept files to send as command line parameters and handle usage of "Send to..." command in Windows Explorer
25 | - Allow starting on system startup (can be turned off in preferences)
26 |
27 |
--------------------------------------------------------------------------------
/art/spinner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/art/spinner.png
--------------------------------------------------------------------------------
/art/spinner.sifz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/art/spinner.sifz
--------------------------------------------------------------------------------
/art/spinner20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/art/spinner20.png
--------------------------------------------------------------------------------
/art/spinner24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/art/spinner24.png
--------------------------------------------------------------------------------
/art/spinner256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/art/spinner256.png
--------------------------------------------------------------------------------
/art/spinner32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/art/spinner32.png
--------------------------------------------------------------------------------
/art/spinner40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/art/spinner40.png
--------------------------------------------------------------------------------
/art/transfer_status_success.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
52 |
--------------------------------------------------------------------------------
/build/extract_strings_for_translation.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | REM xgettext extraction script
3 |
4 | echo Run xgettext...
5 | cd "../src"
6 | powershell "Get-ChildItem -Recurse *.?pp | Resolve-Path -Relative" > "../po/filelist.txt"
7 | xgettext -C -k_ -kwxTRANSLATE -kwxPLURAL:1,2 -f "../po/filelist.txt" --add-comments=TRANSLATORS --no-wrap -o "../po/winpinator.pot"
8 | del "../po/filelist.txt"
--------------------------------------------------------------------------------
/build/post_compile.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | REM
4 | REM Command line arguments:
5 | REM 1. Directory of files required to exist in the executable dir
6 | REM 2. Directory where the executable is located
7 | REM 3. Directory of source code
8 | REM
9 |
10 | REM -------- compile translations --------
11 | echo Compiling translations...
12 | cd "%3/../po"
13 | setlocal enabledelayedexpansion
14 | for /f %%f in ('dir /b *.po') do (
15 | set output=%%f
16 | set output=!output:.po=.mo!
17 | msgfmt %%f -o !output!
18 | )
19 |
20 | echo Copying translations to appropriate directories...
21 | cd "%3/../po"
22 | if not exist "../res/to_copy/locales/NUL" mkdir "../res/to_copy/locales"
23 | for /f %%f in ('dir /b *.mo') do (
24 | set output=%%f
25 | set output=!output:.mo=!
26 | if not exist "../res/to_copy/locales/!output!/NUL" mkdir "../res/to_copy/locales/!!output!!"
27 | echo Processing !output!...
28 | copy /Y %%f "../res/to_copy/locales/!output!/winpinator.mo"
29 | )
30 |
31 | REM -------- copy files --------
32 | echo Copying files from %1 to %2
33 | xcopy "%1" "%2" /f /s /e /y /I
--------------------------------------------------------------------------------
/nsis/.gitignore:
--------------------------------------------------------------------------------
1 | build
2 |
--------------------------------------------------------------------------------
/nsis/icons/install.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/icons/install.ico
--------------------------------------------------------------------------------
/nsis/icons/install128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/icons/install128.png
--------------------------------------------------------------------------------
/nsis/icons/install16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/icons/install16.png
--------------------------------------------------------------------------------
/nsis/icons/install24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/icons/install24.png
--------------------------------------------------------------------------------
/nsis/icons/install256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/icons/install256.png
--------------------------------------------------------------------------------
/nsis/icons/install32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/icons/install32.png
--------------------------------------------------------------------------------
/nsis/icons/install48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/icons/install48.png
--------------------------------------------------------------------------------
/nsis/icons/install64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/icons/install64.png
--------------------------------------------------------------------------------
/nsis/icons/uninstall.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/icons/uninstall.ico
--------------------------------------------------------------------------------
/nsis/icons/uninstall128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/icons/uninstall128.png
--------------------------------------------------------------------------------
/nsis/icons/uninstall16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/icons/uninstall16.png
--------------------------------------------------------------------------------
/nsis/icons/uninstall24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/icons/uninstall24.png
--------------------------------------------------------------------------------
/nsis/icons/uninstall256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/icons/uninstall256.png
--------------------------------------------------------------------------------
/nsis/icons/uninstall32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/icons/uninstall32.png
--------------------------------------------------------------------------------
/nsis/icons/uninstall48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/icons/uninstall48.png
--------------------------------------------------------------------------------
/nsis/icons/uninstall64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/icons/uninstall64.png
--------------------------------------------------------------------------------
/nsis/inst-banner.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/inst-banner.bmp
--------------------------------------------------------------------------------
/nsis/inst-banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/inst-banner.png
--------------------------------------------------------------------------------
/nsis/inst-welcome.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/inst-welcome.bmp
--------------------------------------------------------------------------------
/nsis/inst-welcome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/inst-welcome.png
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Contrib/Inetc/afxres.h:
--------------------------------------------------------------------------------
1 | #include
2 | #define IDC_STATIC (-1)
3 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Contrib/Inetc/inetc.rc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/plugins/inetc/Contrib/Inetc/inetc.rc
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Contrib/Inetc/inetc.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {7803dcf0-655c-4f71-89dd-7fd695066a28}
6 | cpp;c;cxx;rc;def;r;odl;idl;hpj;bat
7 |
8 |
9 | {8edac42d-b9b9-469f-9864-3dbc65bf4365}
10 | ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe
11 |
12 |
13 | {67a938b1-f16b-478b-81df-d0fd26de6d8a}
14 | h;hpp;hxx;hm;inl
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 | Source Files
23 |
24 |
25 | Source Files
26 |
27 |
28 |
29 |
30 | Resource Files
31 |
32 |
33 |
34 |
35 | Resource Files
36 |
37 |
38 |
39 |
40 | Header Files
41 |
42 |
43 | Header Files
44 |
45 |
46 | Header Files
47 |
48 |
49 | Header Files
50 |
51 |
52 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Contrib/Inetc/resource.h:
--------------------------------------------------------------------------------
1 | //{{NO_DEPENDENCIES}}
2 | // Microsoft Developer Studio generated include file.
3 | // Used by inetc.rc
4 | //
5 | #define IDC_SLOGIN 8
6 | #define IDC_PROGRESS 10
7 | #define IDC_SUBTEXT 11
8 | #define IDC_SPWD 11
9 | #define IDC_ICON1 12
10 | #define IDD_DIALOG1 101
11 | #define IDI_ICON1 102
12 | #define IDI_ICON2 103
13 | #define IDD_AUTH 104
14 | #define IDI_ICON3 105
15 | #define IDI_ICON4 106
16 | #define IDI_ICON5 107
17 | #define IDD_DIALOG2 108
18 | #define IDI_ICON6 109
19 | #define IDD_DIALOG3 110
20 | #define IDC_STATIC1 1001
21 | #define IDC_STATIC2 1002
22 | #define IDC_STATIC3 1003
23 | #define IDC_STATIC4 1004
24 | #define IDC_PROGRESS1 1005
25 | #define IDC_STATIC5 1006
26 | #define IDC_STATIC6 1007
27 | #define IDC_STATIC12 1008
28 | #define IDC_STATIC13 1009
29 | #define IDC_STATIC20 1009
30 | #define IDC_STATIC21 1010
31 | #define IDC_STATIC22 1011
32 | #define IDC_STATIC23 1012
33 | #define IDC_STATIC24 1013
34 | #define IDC_STATIC25 1014
35 | #define IDC_ELOGIN 1015
36 | #define IDC_EPWD 1016
37 |
38 | // Next default values for new objects
39 | //
40 | #ifdef APSTUDIO_INVOKED
41 | #ifndef APSTUDIO_READONLY_SYMBOLS
42 | #define _APS_NEXT_RESOURCE_VALUE 111
43 | #define _APS_NEXT_COMMAND_VALUE 40001
44 | #define _APS_NEXT_CONTROL_VALUE 1018
45 | #define _APS_NEXT_SYMED_VALUE 101
46 | #endif
47 | #endif
48 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/Example.nsi:
--------------------------------------------------------------------------------
1 |
2 | ;--------------------------------
3 | ; General Attributes
4 |
5 | Name "Inetc plug-in Test"
6 | OutFile "inetc.exe"
7 | ;SilentInstall silent
8 | RequestExecutionLevel user
9 |
10 |
11 | ;--------------------------------
12 | ;Interface Settings
13 |
14 | !include "MUI2.nsh"
15 | !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-colorful.ico"
16 | !insertmacro MUI_PAGE_WELCOME
17 | !insertmacro MUI_PAGE_INSTFILES
18 | !insertmacro MUI_LANGUAGE "English"
19 |
20 | ;SetFont 14
21 |
22 | ;--------------------------------
23 | ;Installer Sections
24 |
25 | Section "Dummy Section" SecDummy
26 |
27 | SetDetailsView hide
28 |
29 | ; two files download, popup mode
30 | inetc::get /caption "2003-2004 reports" /popup "" "http://ineum.narod.ru/spr_2003.htm" "$EXEDIR\spr3.htm" "http://ineum.narod.ru/spr_2004.htm" "$EXEDIR\spr4.htm" /end
31 | Pop $0 # return value = exit code, "OK" means OK
32 |
33 | ; single file, NSISdl-style embedded progress bar with specific cancel button text
34 | inetc::get /caption "2005 report" /canceltext "interrupt!" "http://ineum.narod.ru/spr_2005.htm" "$EXEDIR\spr5.htm" /end
35 | Pop $1 # return value = exit code, "OK" means OK
36 |
37 | ; banner with 2 text lines and disabled Cancel button
38 | inetc::get /caption "2006 report" /banner "Banner mode with /nocancel option setten$\nSecond Line" /nocancel "http://ineum.narod.ru/spr_2006.htm" "$EXEDIR\spr6.htm" /end
39 | Pop $2 # return value = exit code, "OK" means OK
40 |
41 | MessageBox MB_OK "Download Status: $0, $1, $2"
42 | SectionEnd
43 |
44 |
45 | ;--------------------------------
46 | ;Installer Functions
47 |
48 | Function .onInit
49 |
50 | ; plug-in auto-recognizes 'no parent dlg' in onInit and works accordingly
51 | ; inetc::head /RESUME "Network error. Retry?" "http://ineum.narod.ru/spr_2003.htm" "$EXEDIR\spr3.txt"
52 | ; Pop $4
53 |
54 | FunctionEnd
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/auth_dlg.nsi:
--------------------------------------------------------------------------------
1 |
2 | ;--------------------------------
3 | ; General Attributes
4 |
5 | Name "Inetc http auth Test"
6 | OutFile "auth_dlg.exe"
7 | RequestExecutionLevel user
8 |
9 |
10 | ;--------------------------------
11 | ;Interface Settings
12 |
13 | !include "MUI2.nsh"
14 | !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-colorful.ico"
15 | !insertmacro MUI_PAGE_INSTFILES
16 | !insertmacro MUI_LANGUAGE "English"
17 |
18 |
19 | ;--------------------------------
20 | ;Installer Sections
21 |
22 | Section "Dummy Section" SecDummy
23 |
24 | ; Displays IE auth dialog.
25 | ; Both server and proxy auth.
26 | ; Please test this with your own link.
27 |
28 | inetc::get "http://www.cnt.ru/personal" "$EXEDIR\auth.html"
29 | Pop $0 # return value = exit code, "OK" if OK
30 | MessageBox MB_OK "Download Status: $0"
31 |
32 | SectionEnd
33 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/ftp_auth.nsi:
--------------------------------------------------------------------------------
1 |
2 | ;--------------------------------
3 | ; General Attributes
4 |
5 | Name "Inetc ftp authentication Test"
6 | OutFile "ftp_auth.exe"
7 | RequestExecutionLevel user
8 |
9 |
10 | ;--------------------------------
11 | ;Interface Settings
12 |
13 | !include "MUI2.nsh"
14 | !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-colorful.ico"
15 | !insertmacro MUI_PAGE_INSTFILES
16 | !insertmacro MUI_LANGUAGE "English"
17 |
18 |
19 | ;--------------------------------
20 | ;Installer Sections
21 |
22 | Section "Dummy Section" SecDummy
23 |
24 | ; use your own URL and login@pwd. Password hidden from user with /popup "ALIAS"
25 |
26 | inetc::get /caption "service pack download" /popup "ftp://localhost/" "ftp://login:pwd@localhost/W2Ksp3.exe" "$EXEDIR\sp3.exe"
27 | ; inetc::put /caption "service pack upload" /popup "" "ftp://login:pwd@localhost/W2Ksp3.bu.exe" "$EXEDIR\sp3.exe"
28 | Pop $0 # return value = exit code, "OK" if OK
29 | MessageBox MB_OK "Download Status: $0"
30 |
31 | SectionEnd
32 |
33 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/head.nsi:
--------------------------------------------------------------------------------
1 |
2 | ;--------------------------------
3 | ; General Attributes
4 |
5 | Name "Inetc Head Test"
6 | OutFile "head.exe"
7 | RequestExecutionLevel user
8 |
9 |
10 | ;--------------------------------
11 | ;Interface Settings
12 |
13 | !include "MUI2.nsh"
14 | !insertmacro MUI_PAGE_INSTFILES
15 | !insertmacro MUI_LANGUAGE "English"
16 |
17 |
18 | ;--------------------------------
19 | ;Installer Sections
20 |
21 | Section "Dummy Section" SecDummy
22 |
23 | DetailPrint "New version check out (internet connection)"
24 | inetc::head /silent "http://ineum.narod.ru/spr_2006.htm" "$EXEDIR\head.txt"
25 | Pop $0 # return value = exit code, "OK" if OK
26 | MessageBox MB_OK "Download Status: $0"
27 |
28 | SectionEnd
29 |
30 |
31 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/headers.nsi:
--------------------------------------------------------------------------------
1 |
2 | ;--------------------------------
3 | ; General Attributes
4 |
5 | Name "Headers Test"
6 | OutFile "headers.exe"
7 | RequestExecutionLevel user
8 |
9 |
10 | ;--------------------------------
11 | ;Interface Settings
12 |
13 | !include "MUI2.nsh"
14 | !insertmacro MUI_PAGE_INSTFILES
15 | !insertmacro MUI_LANGUAGE "English"
16 |
17 |
18 |
19 | ;--------------------------------
20 | ;Installer Sections
21 |
22 | Section "Dummy Section" SecDummy
23 |
24 | ; additional headers. Sample php returns raw headers
25 | inetc::get /useragent "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1)" /header "SOAPAction: urn:anonOutInOpe" "http://localhost/headers.php" "$EXEDIR\headers.html"
26 | Pop $0
27 |
28 | MessageBox MB_OK "Download Status: $0"
29 |
30 | SectionEnd
31 |
32 |
33 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/headers.php:
--------------------------------------------------------------------------------
1 | $value) {
5 | echo "$header: $value
\n";
6 | }
7 | ?>
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/https.nsi:
--------------------------------------------------------------------------------
1 |
2 | ;--------------------------------
3 | ; General Attributes
4 |
5 | Name "Inetc https Test"
6 | OutFile "https.exe"
7 | RequestExecutionLevel user
8 |
9 |
10 | ;--------------------------------
11 | ;Interface Settings
12 |
13 | !include "MUI2.nsh"
14 | !insertmacro MUI_PAGE_INSTFILES
15 | !insertmacro MUI_LANGUAGE "English"
16 |
17 |
18 | ;--------------------------------
19 | ;Installer Sections
20 |
21 | Section "Dummy Section" SecDummy
22 |
23 | inetc::get /POPUP "" /CAPTION "bending_property_demo.zip" "https://secure.codeproject.com/cs/miscctrl/bending_property/bending_property_src.zip" "$EXEDIR\bending_property_src.zip"
24 | Pop $0 # return value = exit code, "OK" if OK
25 | MessageBox MB_OK "Download Status: $0"
26 |
27 | SectionEnd
28 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/post.nsi:
--------------------------------------------------------------------------------
1 |
2 | ;--------------------------------
3 | ; General Attributes
4 |
5 | Name "Inetc Post Test"
6 | OutFile "post.exe"
7 | RequestExecutionLevel user
8 |
9 |
10 | ;--------------------------------
11 | ;Interface Settings
12 |
13 | !include "MUI2.nsh"
14 | !insertmacro MUI_PAGE_INSTFILES
15 | !insertmacro MUI_LANGUAGE "English"
16 |
17 |
18 | ;--------------------------------
19 | ;Installer Sections
20 |
21 | Section "Dummy Section" SecDummy
22 |
23 | ; this is my LAN sample, use your own URL for tests. Sample post.php included
24 |
25 | inetc::post "login=ami&passwd=333" "http://localhost/post.php?lg=iam&pw=44" "$EXEDIR\post_reply.htm"
26 | Pop $0 # return value = exit code, "OK" if OK
27 | MessageBox MB_OK "Download Status: $0"
28 |
29 | SectionEnd
30 |
31 |
32 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/post.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ";
7 | echo "post.passwd=".$_POST['passwd']."
";
8 | echo "get.lg=".$_GET['lg']."
";
9 | echo "get.pw=".$_GET['pw']."
";
10 | ?>
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/post_file.nsi:
--------------------------------------------------------------------------------
1 |
2 | ;--------------------------------
3 | ; General Attributes
4 |
5 | Name "Inetc Post Test"
6 | OutFile "post_file.exe"
7 | RequestExecutionLevel user
8 |
9 |
10 | ;--------------------------------
11 | ;Interface Settings
12 |
13 | !include "MUI2.nsh"
14 | !insertmacro MUI_PAGE_INSTFILES
15 | !insertmacro MUI_LANGUAGE "English"
16 |
17 |
18 | ;--------------------------------
19 | ;Installer Sections
20 |
21 | Section "Dummy Section" SecDummy
22 |
23 | ; this is my LAN sample, use your own URL for tests. Sample post.php included
24 |
25 | inetc::post "$EXEDIR\inetc.cpp" /file "http://localhost/post_file.php" "$EXEDIR\post_file.htm"
26 | Pop $0 # return value = exit code, "OK" if OK
27 | MessageBox MB_OK "Download Status: $0"
28 |
29 | SectionEnd
30 |
31 |
32 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/post_file.php:
--------------------------------------------------------------------------------
1 | $value) {
5 | echo "$header: $value
\n";
6 | }
7 | echo "new
";
8 | foreach ($_FILES as $key => $value) echo $key . "<>" . $value . "
\n";
9 | echo file_get_contents('php://input');
10 | ?>
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/post_form.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Registration form for post.php test
4 |
5 |
6 | This form sends POST request to server. It was interesting to compare server echo
7 | reply (by included post.php) for this form and InetLoad plug-in - in my
8 | tests server did not see any difference between them :)
9 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/put.nsi:
--------------------------------------------------------------------------------
1 |
2 | ;--------------------------------
3 | ; General Attributes
4 |
5 | Name "Inetc Test"
6 | OutFile "put.exe"
7 | RequestExecutionLevel user
8 |
9 |
10 | ;--------------------------------
11 | ;Interface Settings
12 |
13 | !include "MUI2.nsh"
14 | !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-colorful.ico"
15 | !insertmacro MUI_PAGE_INSTFILES
16 | !insertmacro MUI_LANGUAGE "English"
17 |
18 |
19 | ;--------------------------------
20 | ;Installer Sections
21 |
22 | Section "Dummy Section" SecDummy
23 |
24 | ; this is my LAN sample, use your own URL for tests. Login/pwd hidden from user. Sample put.php (for http request) included
25 |
26 | inetc::put "http://localhost/put.php" "$EXEDIR\test.jpg"
27 | ; inetc::put /POPUP "ftp://localhost/" /CAPTION "my local ftp upload" "ftp://localhost/test.jpg" "$EXEDIR\test.jpg"
28 | Pop $0
29 | MessageBox MB_OK "Upload Status: $0"
30 |
31 | SectionEnd
32 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/put.php:
--------------------------------------------------------------------------------
1 |
20 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/recursive.nsi:
--------------------------------------------------------------------------------
1 | Name "Inetc Recursive Dir Upload Test"
2 | OutFile "recursive.exe"
3 | RequestExecutionLevel user
4 |
5 | !include "MUI2.nsh"
6 | !insertmacro MUI_PAGE_INSTFILES
7 | !insertmacro MUI_LANGUAGE "English"
8 | !include "FileFunc.nsh"
9 | !insertmacro GetFileAttributes
10 |
11 | var url
12 | var path
13 |
14 | Function dirul
15 |
16 | Push $0 ; search handle
17 | Push $1 ; file name
18 | Push $2 ; attributes
19 |
20 | FindFirst $0 $1 "$path\*"
21 | loop:
22 | StrCmp $1 "" done
23 | ${GetFileAttributes} "$path\$1" DIRECTORY $2
24 | IntCmp $2 1 isdir
25 | retry:
26 | Inetc::put $url/$1 "$path\$1" /end
27 | Pop $2
28 | DetailPrint "$2 $path\$1"
29 | StrCmp $2 "OK" cont
30 | MessageBox MB_YESNO "$path\$1 file upload failed. Retry?" IDYES retry
31 | Abort "terminated by user"
32 | Goto cont
33 | isdir:
34 | StrCmp $1 . cont
35 | StrCmp $1 .. cont
36 | Push $path
37 | Push $url
38 | StrCpy $path "$path\$1"
39 | StrCpy $url "$url/$1"
40 | Call dirul
41 | Pop $url
42 | Pop $path
43 | cont:
44 | FindNext $0 $1
45 | Goto loop
46 | done:
47 | FindClose $0
48 |
49 | Pop $2
50 | Pop $1
51 | Pop $0
52 |
53 | FunctionEnd
54 |
55 |
56 | Section "Dummy Section" SecDummy
57 |
58 | SetDetailsView hide
59 | StrCpy $path "$EXEDIR"
60 | ; put is dir in the user's ftp home, use //put for root-relative path
61 | StrCpy $url ftp://takhir:pwd@localhost/put
62 | Call dirul
63 | SetDetailsView show
64 |
65 | SectionEnd
66 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/redirect.nsi:
--------------------------------------------------------------------------------
1 |
2 | ;--------------------------------
3 | ; General Attributes
4 |
5 | Name "Redirect Test"
6 | OutFile "redirect.exe"
7 | RequestExecutionLevel user
8 |
9 |
10 | ;--------------------------------
11 | ;Interface Settings
12 |
13 | !include "MUI2.nsh"
14 | !insertmacro MUI_PAGE_INSTFILES
15 | !insertmacro MUI_LANGUAGE "English"
16 |
17 |
18 | ;--------------------------------
19 | ;Installer Sections
20 |
21 | Section "Dummy Section" SecDummy
22 |
23 | SetDetailsView hide
24 |
25 | inetc::get "http://localhost/redirect.php" "$EXEDIR\redirect.htm" /end
26 | Pop $1
27 |
28 | MessageBox MB_OK "Download Status: $1"
29 |
30 | SectionEnd
31 |
32 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/redirect.php:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/timeout.nsi:
--------------------------------------------------------------------------------
1 |
2 | ;--------------------------------
3 | ; General Attributes
4 |
5 | Name "Timeout Test"
6 | OutFile "to.exe"
7 | RequestExecutionLevel user
8 |
9 |
10 | ;--------------------------------
11 | ;Interface Settings
12 |
13 | !include "MUI2.nsh"
14 | !insertmacro MUI_PAGE_INSTFILES
15 | !insertmacro MUI_LANGUAGE "English"
16 |
17 |
18 |
19 | ;--------------------------------
20 | ;Installer Sections
21 |
22 | Section "Dummy Section" SecDummy
23 |
24 | ; additional headers. Sample php returns raw headers
25 | inetc::get /receivetimeout 12 "http://localhost/to.php" "$EXEDIR\to.html"
26 | Pop $0
27 |
28 | MessageBox MB_OK "Download Status: $0"
29 |
30 | SectionEnd
31 |
32 |
33 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/tostack.nsi:
--------------------------------------------------------------------------------
1 |
2 | ;--------------------------------
3 | ; General Attributes
4 |
5 | Name "Inetc To Stack Test"
6 | OutFile "ToStack.exe"
7 | RequestExecutionLevel user
8 |
9 |
10 | ;--------------------------------
11 | ;Interface Settings
12 |
13 | !include "MUI2.nsh"
14 | !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-colorful.ico"
15 | !insertmacro MUI_PAGE_INSTFILES
16 | !insertmacro MUI_LANGUAGE "English"
17 |
18 |
19 | ;--------------------------------
20 | ;Installer Sections
21 |
22 | Section "Dummy Section" SecDummy
23 |
24 | inetc::get /TOSTACK "http://www.google.com" "" /END
25 | Pop $0 # return value = exit code, "OK" if OK
26 | MessageBox MB_OK "Download Status: $0"
27 | Pop $0 # return text
28 | StrLen $1 $0
29 | MessageBox MB_OK "Download Length: $1"
30 | MessageBox MB_OK "$0"
31 |
32 | SectionEnd
33 |
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Examples/Inetc/translate.nsi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/plugins/inetc/Examples/Inetc/translate.nsi
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Plugins/amd64-unicode/INetC.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/plugins/inetc/Plugins/amd64-unicode/INetC.dll
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Plugins/x86-ansi/INetC.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/plugins/inetc/Plugins/x86-ansi/INetC.dll
--------------------------------------------------------------------------------
/nsis/plugins/inetc/Plugins/x86-unicode/INetC.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/plugins/inetc/Plugins/x86-unicode/INetC.dll
--------------------------------------------------------------------------------
/nsis/plugins/inetc/build_msvc.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | setlocal
3 | set Name=INetC
4 | set DistRoot=.
5 | set SrcRoot=%DistRoot%\Contrib\%Name%
6 | set BaseCL=/GL /LD /W3 /O1 /Osy /GF /Gz /GS- /GR- /Zl /D_VC_NODEFAULTLIB
7 | set BaseLINK=/LTCG /DLL /OPT:REF /OPT:ICF,99 /MERGE:.rdata=.text /OPT:NOWIN98 /NODEFAULTLIB kernel32.lib user32.lib advapi32.lib comctl32.lib wininet.lib
8 | set Targets=x86-ansi x86-unicode
9 | (>nul (( 2>&1 call cl "/?" )|find /I "AMD64"))&&(set Targets=amd64-unicode)
10 | for %%A in (%Targets%) do (call :B %%A)
11 | @goto :EOF
12 |
13 |
14 | :B targ
15 | set DEF=/D___NSISPLUGIN
16 | ((echo %1|find /I "unicode")>nul)&&set DEF=%DEF% /DUNICODE /D_UNICODE
17 | set CL=%BaseCL% %DEF% /Gy
18 | set LINK=%BaseLINK%
19 | for %%B in (%SrcRoot%\*.rc) do call RC /R /FO"%DistRoot%\%%~nB.res" "%%B"
20 | for %%A in (c cpp cxx) do for %%B in (%SrcRoot%\*.%%A) do (
21 | if exist "%DistRoot%\%%~nB.obj" del "%DistRoot%\%%~nB.obj"
22 | call CL /c %%B /Fe"%DistRoot%\%Name%"
23 | )
24 | md "%DistRoot%\Plugins\%1" 2>nul
25 | call LINK /NOLOGO /OUT:"%DistRoot%\Plugins\%1\%Name%.dll" /PDB:"%DistRoot%\%Name%-%1" "%DistRoot%\*.obj" "%DistRoot%\*.res"
26 | @goto :EOF
27 |
--------------------------------------------------------------------------------
/nsis/uninst-banner.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/uninst-banner.bmp
--------------------------------------------------------------------------------
/nsis/uninst-banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/uninst-banner.png
--------------------------------------------------------------------------------
/nsis/uninst-welcome.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/uninst-welcome.bmp
--------------------------------------------------------------------------------
/nsis/uninst-welcome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/nsis/uninst-welcome.png
--------------------------------------------------------------------------------
/nsis/x64.nsi:
--------------------------------------------------------------------------------
1 | # x64 version of Winpinator
2 |
3 | !define RELEASE_FOLDER "..\vs16\x64\Deploy"
4 | !define ARCH "x64"
5 |
6 | !include "winpinator.nsh"
7 |
--------------------------------------------------------------------------------
/nsis/x86.nsi:
--------------------------------------------------------------------------------
1 | # x86 version of Winpinator
2 |
3 | !define RELEASE_FOLDER "..\vs16\Deploy"
4 | !define ARCH "x86"
5 |
6 | !include "winpinator.nsh"
7 |
--------------------------------------------------------------------------------
/po/.gitignore:
--------------------------------------------------------------------------------
1 | *.mo
2 |
--------------------------------------------------------------------------------
/proto/generate-protobuf.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | REM
4 | REM generate-protobuf.bat
5 | REM
6 | REM This script regenerates all protobuf c++ sources
7 | REM and headers based on contents of warp.proto file
8 | REM
9 | REM This batch file outputs to src/proto-gen directory
10 | REM
11 |
12 | rmdir /s /q "../src/proto-gen"
13 | mkdir "../src/proto-gen"
14 | ..\vcpkg_installed\x64-windows\x64-windows\tools\protobuf\protoc.exe -I . --grpc_out ../src/proto-gen --plugin=protoc-gen-grpc=../vcpkg_installed/x64-windows/x64-windows/tools/grpc/grpc_cpp_plugin.exe warp.proto
15 | ..\vcpkg_installed\x64-windows\x64-windows\tools\protobuf\protoc.exe -I . --cpp_out ../src/proto-gen warp.proto
16 | echo All done...
17 |
18 |
--------------------------------------------------------------------------------
/readme/screen1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/readme/screen1.png
--------------------------------------------------------------------------------
/readme/screen2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/readme/screen2.png
--------------------------------------------------------------------------------
/readme/screen3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/readme/screen3.png
--------------------------------------------------------------------------------
/readme/screen4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/readme/screen4.png
--------------------------------------------------------------------------------
/res/about_banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/about_banner.png
--------------------------------------------------------------------------------
/res/back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/back.png
--------------------------------------------------------------------------------
/res/blot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/blot.png
--------------------------------------------------------------------------------
/res/error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/error.png
--------------------------------------------------------------------------------
/res/forward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/forward.png
--------------------------------------------------------------------------------
/res/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/icon.ico
--------------------------------------------------------------------------------
/res/icon128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/icon128.png
--------------------------------------------------------------------------------
/res/icon16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/icon16.png
--------------------------------------------------------------------------------
/res/icon256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/icon256.png
--------------------------------------------------------------------------------
/res/icon32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/icon32.png
--------------------------------------------------------------------------------
/res/icon48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/icon48.png
--------------------------------------------------------------------------------
/res/icon64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/icon64.png
--------------------------------------------------------------------------------
/res/info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/info.png
--------------------------------------------------------------------------------
/res/refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/refresh.png
--------------------------------------------------------------------------------
/res/remove_history.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/remove_history.png
--------------------------------------------------------------------------------
/res/send_directory.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/send_directory.png
--------------------------------------------------------------------------------
/res/send_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/send_file.png
--------------------------------------------------------------------------------
/res/spinner16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/spinner16.png
--------------------------------------------------------------------------------
/res/spinner48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/spinner48.png
--------------------------------------------------------------------------------
/res/to_copy/Languages.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/res/to_copy/RELEASE NOTES.txt:
--------------------------------------------------------------------------------
1 | Release 0.1.2
2 | ===============
3 | This release fixes some Winpinator bugs:
4 | - Installer now checks for Microsoft Visual C++ Redistributable
5 | version and forces an update if it's too old
6 | - No more error boxes show up when Winpinator fails to find
7 | the account picture
8 | - Settings are now saved immediately after clicking OK in the
9 | "Preferences" dialog box
10 |
11 | Release 0.1.1
12 | ===============
13 | This release is just a small fix of full names not appearing
14 | under some circumstances on some Windows machines.
15 |
16 | Fixes:
17 | - A bug that prevents user's full name from being properly
18 | read on some machines
19 |
20 |
21 | Release 0.1.0
22 | ===============
23 | This is the first version of Winpinator. It already supports
24 | most of the planned features, however, it might be a little
25 | buggy and unstable.
26 |
27 | Features:
28 | - Show up in mDNS as capable of handling the Warpinator
29 | protocol
30 | - Discover other computers running Warpinator/Winpinator
31 | on local network
32 | - Support both v1 and v2 registration protocols
33 | - Send and receive files, directories and any combination
34 | of those
35 | - Compress and decompress transfer chunks with deflate
36 | algorithm using zlib
37 | - Save zone information to received files (can be turned off
38 | in preferences)
39 | - Store transfer history containing all transferred paths
40 | - Accept files to send as command line parameters and handle
41 | usage of "Send to..." command in Windows Explorer
42 | - Allow starting on system startup (can be turned off in
43 | preferences)
44 |
--------------------------------------------------------------------------------
/res/to_copy/flags/ac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ac.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ad.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ae.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ae.png
--------------------------------------------------------------------------------
/res/to_copy/flags/af.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/af.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ag.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ai.png
--------------------------------------------------------------------------------
/res/to_copy/flags/al.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/al.png
--------------------------------------------------------------------------------
/res/to_copy/flags/am.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/am.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ao.png
--------------------------------------------------------------------------------
/res/to_copy/flags/aq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/aq.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ar.png
--------------------------------------------------------------------------------
/res/to_copy/flags/as.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/as.png
--------------------------------------------------------------------------------
/res/to_copy/flags/at.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/at.png
--------------------------------------------------------------------------------
/res/to_copy/flags/au.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/au.png
--------------------------------------------------------------------------------
/res/to_copy/flags/aw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/aw.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ax.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ax.png
--------------------------------------------------------------------------------
/res/to_copy/flags/az.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/az.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ba.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ba.png
--------------------------------------------------------------------------------
/res/to_copy/flags/bb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/bb.png
--------------------------------------------------------------------------------
/res/to_copy/flags/bd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/bd.png
--------------------------------------------------------------------------------
/res/to_copy/flags/be.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/be.png
--------------------------------------------------------------------------------
/res/to_copy/flags/bf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/bf.png
--------------------------------------------------------------------------------
/res/to_copy/flags/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/bg.png
--------------------------------------------------------------------------------
/res/to_copy/flags/bh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/bh.png
--------------------------------------------------------------------------------
/res/to_copy/flags/bi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/bi.png
--------------------------------------------------------------------------------
/res/to_copy/flags/bj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/bj.png
--------------------------------------------------------------------------------
/res/to_copy/flags/bl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/bl.png
--------------------------------------------------------------------------------
/res/to_copy/flags/bm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/bm.png
--------------------------------------------------------------------------------
/res/to_copy/flags/bn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/bn.png
--------------------------------------------------------------------------------
/res/to_copy/flags/bo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/bo.png
--------------------------------------------------------------------------------
/res/to_copy/flags/bq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/bq.png
--------------------------------------------------------------------------------
/res/to_copy/flags/br.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/br.png
--------------------------------------------------------------------------------
/res/to_copy/flags/bs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/bs.png
--------------------------------------------------------------------------------
/res/to_copy/flags/bt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/bt.png
--------------------------------------------------------------------------------
/res/to_copy/flags/bv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/bv.png
--------------------------------------------------------------------------------
/res/to_copy/flags/bw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/bw.png
--------------------------------------------------------------------------------
/res/to_copy/flags/by.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/by.png
--------------------------------------------------------------------------------
/res/to_copy/flags/bz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/bz.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ca.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ca.png
--------------------------------------------------------------------------------
/res/to_copy/flags/cc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/cc.png
--------------------------------------------------------------------------------
/res/to_copy/flags/cd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/cd.png
--------------------------------------------------------------------------------
/res/to_copy/flags/cf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/cf.png
--------------------------------------------------------------------------------
/res/to_copy/flags/cg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/cg.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ch.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ci.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ci.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ck.png
--------------------------------------------------------------------------------
/res/to_copy/flags/cl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/cl.png
--------------------------------------------------------------------------------
/res/to_copy/flags/cm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/cm.png
--------------------------------------------------------------------------------
/res/to_copy/flags/cn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/cn.png
--------------------------------------------------------------------------------
/res/to_copy/flags/co.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/co.png
--------------------------------------------------------------------------------
/res/to_copy/flags/cp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/cp.png
--------------------------------------------------------------------------------
/res/to_copy/flags/cr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/cr.png
--------------------------------------------------------------------------------
/res/to_copy/flags/cu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/cu.png
--------------------------------------------------------------------------------
/res/to_copy/flags/cv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/cv.png
--------------------------------------------------------------------------------
/res/to_copy/flags/cw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/cw.png
--------------------------------------------------------------------------------
/res/to_copy/flags/cx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/cx.png
--------------------------------------------------------------------------------
/res/to_copy/flags/cy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/cy.png
--------------------------------------------------------------------------------
/res/to_copy/flags/cz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/cz.png
--------------------------------------------------------------------------------
/res/to_copy/flags/de.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/de.png
--------------------------------------------------------------------------------
/res/to_copy/flags/dg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/dg.png
--------------------------------------------------------------------------------
/res/to_copy/flags/dj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/dj.png
--------------------------------------------------------------------------------
/res/to_copy/flags/dk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/dk.png
--------------------------------------------------------------------------------
/res/to_copy/flags/dm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/dm.png
--------------------------------------------------------------------------------
/res/to_copy/flags/do.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/do.png
--------------------------------------------------------------------------------
/res/to_copy/flags/dz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/dz.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ea.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ea.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ec.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ec.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ee.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ee.png
--------------------------------------------------------------------------------
/res/to_copy/flags/eg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/eg.png
--------------------------------------------------------------------------------
/res/to_copy/flags/eh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/eh.png
--------------------------------------------------------------------------------
/res/to_copy/flags/er.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/er.png
--------------------------------------------------------------------------------
/res/to_copy/flags/es-ct.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/es-ct.png
--------------------------------------------------------------------------------
/res/to_copy/flags/es-ga.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/es-ga.png
--------------------------------------------------------------------------------
/res/to_copy/flags/es.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/es.png
--------------------------------------------------------------------------------
/res/to_copy/flags/et.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/et.png
--------------------------------------------------------------------------------
/res/to_copy/flags/eu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/eu.png
--------------------------------------------------------------------------------
/res/to_copy/flags/fi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/fi.png
--------------------------------------------------------------------------------
/res/to_copy/flags/fj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/fj.png
--------------------------------------------------------------------------------
/res/to_copy/flags/fk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/fk.png
--------------------------------------------------------------------------------
/res/to_copy/flags/fm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/fm.png
--------------------------------------------------------------------------------
/res/to_copy/flags/fo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/fo.png
--------------------------------------------------------------------------------
/res/to_copy/flags/fr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/fr.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ga.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ga.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gb-eng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gb-eng.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gb-nir.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gb-nir.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gb-sct.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gb-sct.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gb-wls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gb-wls.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gb.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gd.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ge.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gf.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gg.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gh.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gi.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gl.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gm.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gn.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gp.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gq.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gr.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gs.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gt.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gu.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gw.png
--------------------------------------------------------------------------------
/res/to_copy/flags/gy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/gy.png
--------------------------------------------------------------------------------
/res/to_copy/flags/hk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/hk.png
--------------------------------------------------------------------------------
/res/to_copy/flags/hm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/hm.png
--------------------------------------------------------------------------------
/res/to_copy/flags/hn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/hn.png
--------------------------------------------------------------------------------
/res/to_copy/flags/hr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/hr.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ht.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ht.png
--------------------------------------------------------------------------------
/res/to_copy/flags/hu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/hu.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ic.png
--------------------------------------------------------------------------------
/res/to_copy/flags/id.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/id.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ie.png
--------------------------------------------------------------------------------
/res/to_copy/flags/il.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/il.png
--------------------------------------------------------------------------------
/res/to_copy/flags/im.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/im.png
--------------------------------------------------------------------------------
/res/to_copy/flags/in.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/in.png
--------------------------------------------------------------------------------
/res/to_copy/flags/io.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/io.png
--------------------------------------------------------------------------------
/res/to_copy/flags/iq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/iq.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ir.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ir.png
--------------------------------------------------------------------------------
/res/to_copy/flags/is.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/is.png
--------------------------------------------------------------------------------
/res/to_copy/flags/it.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/it.png
--------------------------------------------------------------------------------
/res/to_copy/flags/je.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/je.png
--------------------------------------------------------------------------------
/res/to_copy/flags/jm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/jm.png
--------------------------------------------------------------------------------
/res/to_copy/flags/jo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/jo.png
--------------------------------------------------------------------------------
/res/to_copy/flags/jp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/jp.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ke.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ke.png
--------------------------------------------------------------------------------
/res/to_copy/flags/kg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/kg.png
--------------------------------------------------------------------------------
/res/to_copy/flags/kh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/kh.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ki.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ki.png
--------------------------------------------------------------------------------
/res/to_copy/flags/km.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/km.png
--------------------------------------------------------------------------------
/res/to_copy/flags/kn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/kn.png
--------------------------------------------------------------------------------
/res/to_copy/flags/kp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/kp.png
--------------------------------------------------------------------------------
/res/to_copy/flags/kr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/kr.png
--------------------------------------------------------------------------------
/res/to_copy/flags/kw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/kw.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ky.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ky.png
--------------------------------------------------------------------------------
/res/to_copy/flags/kz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/kz.png
--------------------------------------------------------------------------------
/res/to_copy/flags/la.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/la.png
--------------------------------------------------------------------------------
/res/to_copy/flags/lb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/lb.png
--------------------------------------------------------------------------------
/res/to_copy/flags/lc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/lc.png
--------------------------------------------------------------------------------
/res/to_copy/flags/li.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/li.png
--------------------------------------------------------------------------------
/res/to_copy/flags/lk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/lk.png
--------------------------------------------------------------------------------
/res/to_copy/flags/lr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/lr.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ls.png
--------------------------------------------------------------------------------
/res/to_copy/flags/lt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/lt.png
--------------------------------------------------------------------------------
/res/to_copy/flags/lu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/lu.png
--------------------------------------------------------------------------------
/res/to_copy/flags/lv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/lv.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ly.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ly.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ma.png
--------------------------------------------------------------------------------
/res/to_copy/flags/mc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/mc.png
--------------------------------------------------------------------------------
/res/to_copy/flags/md.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/md.png
--------------------------------------------------------------------------------
/res/to_copy/flags/me.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/me.png
--------------------------------------------------------------------------------
/res/to_copy/flags/mf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/mf.png
--------------------------------------------------------------------------------
/res/to_copy/flags/mg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/mg.png
--------------------------------------------------------------------------------
/res/to_copy/flags/mh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/mh.png
--------------------------------------------------------------------------------
/res/to_copy/flags/mk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/mk.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ml.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ml.png
--------------------------------------------------------------------------------
/res/to_copy/flags/mm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/mm.png
--------------------------------------------------------------------------------
/res/to_copy/flags/mn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/mn.png
--------------------------------------------------------------------------------
/res/to_copy/flags/mo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/mo.png
--------------------------------------------------------------------------------
/res/to_copy/flags/mp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/mp.png
--------------------------------------------------------------------------------
/res/to_copy/flags/mq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/mq.png
--------------------------------------------------------------------------------
/res/to_copy/flags/mr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/mr.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ms.png
--------------------------------------------------------------------------------
/res/to_copy/flags/mt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/mt.png
--------------------------------------------------------------------------------
/res/to_copy/flags/mu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/mu.png
--------------------------------------------------------------------------------
/res/to_copy/flags/mv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/mv.png
--------------------------------------------------------------------------------
/res/to_copy/flags/mw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/mw.png
--------------------------------------------------------------------------------
/res/to_copy/flags/mx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/mx.png
--------------------------------------------------------------------------------
/res/to_copy/flags/my.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/my.png
--------------------------------------------------------------------------------
/res/to_copy/flags/mz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/mz.png
--------------------------------------------------------------------------------
/res/to_copy/flags/na.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/na.png
--------------------------------------------------------------------------------
/res/to_copy/flags/nc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/nc.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ne.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ne.png
--------------------------------------------------------------------------------
/res/to_copy/flags/nf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/nf.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ng.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ni.png
--------------------------------------------------------------------------------
/res/to_copy/flags/nl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/nl.png
--------------------------------------------------------------------------------
/res/to_copy/flags/no.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/no.png
--------------------------------------------------------------------------------
/res/to_copy/flags/np.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/np.png
--------------------------------------------------------------------------------
/res/to_copy/flags/nr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/nr.png
--------------------------------------------------------------------------------
/res/to_copy/flags/nu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/nu.png
--------------------------------------------------------------------------------
/res/to_copy/flags/nz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/nz.png
--------------------------------------------------------------------------------
/res/to_copy/flags/om.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/om.png
--------------------------------------------------------------------------------
/res/to_copy/flags/pa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/pa.png
--------------------------------------------------------------------------------
/res/to_copy/flags/pe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/pe.png
--------------------------------------------------------------------------------
/res/to_copy/flags/pf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/pf.png
--------------------------------------------------------------------------------
/res/to_copy/flags/pg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/pg.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ph.png
--------------------------------------------------------------------------------
/res/to_copy/flags/pk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/pk.png
--------------------------------------------------------------------------------
/res/to_copy/flags/pl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/pl.png
--------------------------------------------------------------------------------
/res/to_copy/flags/pm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/pm.png
--------------------------------------------------------------------------------
/res/to_copy/flags/pn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/pn.png
--------------------------------------------------------------------------------
/res/to_copy/flags/pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/pr.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ps.png
--------------------------------------------------------------------------------
/res/to_copy/flags/pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/pt.png
--------------------------------------------------------------------------------
/res/to_copy/flags/pw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/pw.png
--------------------------------------------------------------------------------
/res/to_copy/flags/py.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/py.png
--------------------------------------------------------------------------------
/res/to_copy/flags/qa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/qa.png
--------------------------------------------------------------------------------
/res/to_copy/flags/re.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/re.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ro.png
--------------------------------------------------------------------------------
/res/to_copy/flags/rs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/rs.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ru.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ru.png
--------------------------------------------------------------------------------
/res/to_copy/flags/rw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/rw.png
--------------------------------------------------------------------------------
/res/to_copy/flags/sa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/sa.png
--------------------------------------------------------------------------------
/res/to_copy/flags/sb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/sb.png
--------------------------------------------------------------------------------
/res/to_copy/flags/sc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/sc.png
--------------------------------------------------------------------------------
/res/to_copy/flags/sd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/sd.png
--------------------------------------------------------------------------------
/res/to_copy/flags/se.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/se.png
--------------------------------------------------------------------------------
/res/to_copy/flags/sg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/sg.png
--------------------------------------------------------------------------------
/res/to_copy/flags/sh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/sh.png
--------------------------------------------------------------------------------
/res/to_copy/flags/si.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/si.png
--------------------------------------------------------------------------------
/res/to_copy/flags/sj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/sj.png
--------------------------------------------------------------------------------
/res/to_copy/flags/sk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/sk.png
--------------------------------------------------------------------------------
/res/to_copy/flags/sl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/sl.png
--------------------------------------------------------------------------------
/res/to_copy/flags/sm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/sm.png
--------------------------------------------------------------------------------
/res/to_copy/flags/sn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/sn.png
--------------------------------------------------------------------------------
/res/to_copy/flags/so.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/so.png
--------------------------------------------------------------------------------
/res/to_copy/flags/sr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/sr.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ss.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ss.png
--------------------------------------------------------------------------------
/res/to_copy/flags/st.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/st.png
--------------------------------------------------------------------------------
/res/to_copy/flags/sv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/sv.png
--------------------------------------------------------------------------------
/res/to_copy/flags/sx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/sx.png
--------------------------------------------------------------------------------
/res/to_copy/flags/sy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/sy.png
--------------------------------------------------------------------------------
/res/to_copy/flags/sz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/sz.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ta.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ta.png
--------------------------------------------------------------------------------
/res/to_copy/flags/tc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/tc.png
--------------------------------------------------------------------------------
/res/to_copy/flags/td.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/td.png
--------------------------------------------------------------------------------
/res/to_copy/flags/tf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/tf.png
--------------------------------------------------------------------------------
/res/to_copy/flags/tg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/tg.png
--------------------------------------------------------------------------------
/res/to_copy/flags/th.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/th.png
--------------------------------------------------------------------------------
/res/to_copy/flags/tj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/tj.png
--------------------------------------------------------------------------------
/res/to_copy/flags/tk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/tk.png
--------------------------------------------------------------------------------
/res/to_copy/flags/tl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/tl.png
--------------------------------------------------------------------------------
/res/to_copy/flags/tm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/tm.png
--------------------------------------------------------------------------------
/res/to_copy/flags/tn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/tn.png
--------------------------------------------------------------------------------
/res/to_copy/flags/to.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/to.png
--------------------------------------------------------------------------------
/res/to_copy/flags/tr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/tr.png
--------------------------------------------------------------------------------
/res/to_copy/flags/tt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/tt.png
--------------------------------------------------------------------------------
/res/to_copy/flags/tv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/tv.png
--------------------------------------------------------------------------------
/res/to_copy/flags/tw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/tw.png
--------------------------------------------------------------------------------
/res/to_copy/flags/tz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/tz.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ua.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ua.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ug.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ug.png
--------------------------------------------------------------------------------
/res/to_copy/flags/um.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/um.png
--------------------------------------------------------------------------------
/res/to_copy/flags/un.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/un.png
--------------------------------------------------------------------------------
/res/to_copy/flags/us.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/us.png
--------------------------------------------------------------------------------
/res/to_copy/flags/uy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/uy.png
--------------------------------------------------------------------------------
/res/to_copy/flags/uz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/uz.png
--------------------------------------------------------------------------------
/res/to_copy/flags/va.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/va.png
--------------------------------------------------------------------------------
/res/to_copy/flags/vc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/vc.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ve.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ve.png
--------------------------------------------------------------------------------
/res/to_copy/flags/vg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/vg.png
--------------------------------------------------------------------------------
/res/to_copy/flags/vi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/vi.png
--------------------------------------------------------------------------------
/res/to_copy/flags/vn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/vn.png
--------------------------------------------------------------------------------
/res/to_copy/flags/vu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/vu.png
--------------------------------------------------------------------------------
/res/to_copy/flags/wf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/wf.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ws.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ws.png
--------------------------------------------------------------------------------
/res/to_copy/flags/xk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/xk.png
--------------------------------------------------------------------------------
/res/to_copy/flags/ye.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/ye.png
--------------------------------------------------------------------------------
/res/to_copy/flags/yt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/yt.png
--------------------------------------------------------------------------------
/res/to_copy/flags/za.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/za.png
--------------------------------------------------------------------------------
/res/to_copy/flags/zm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/zm.png
--------------------------------------------------------------------------------
/res/to_copy/flags/zw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/zw.png
--------------------------------------------------------------------------------
/res/to_copy/flags/zz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/flags/zz.png
--------------------------------------------------------------------------------
/res/to_copy/locales/en_US/winpinator.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/locales/en_US/winpinator.mo
--------------------------------------------------------------------------------
/res/to_copy/locales/pl_PL/winpinator.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/to_copy/locales/pl_PL/winpinator.mo
--------------------------------------------------------------------------------
/res/transfer_badge_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/transfer_badge_down.png
--------------------------------------------------------------------------------
/res/transfer_badge_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/transfer_badge_up.png
--------------------------------------------------------------------------------
/res/transfer_dir_dir.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/transfer_dir_dir.png
--------------------------------------------------------------------------------
/res/transfer_dir_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/transfer_dir_file.png
--------------------------------------------------------------------------------
/res/transfer_dir_x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/transfer_dir_x.png
--------------------------------------------------------------------------------
/res/transfer_failed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/transfer_failed.png
--------------------------------------------------------------------------------
/res/transfer_file_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/transfer_file_file.png
--------------------------------------------------------------------------------
/res/transfer_file_x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/transfer_file_x.png
--------------------------------------------------------------------------------
/res/transfer_status_cancelled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/transfer_status_cancelled.png
--------------------------------------------------------------------------------
/res/transfer_status_error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/transfer_status_error.png
--------------------------------------------------------------------------------
/res/transfer_status_success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/transfer_status_success.png
--------------------------------------------------------------------------------
/res/transfer_succeeded.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/transfer_succeeded.png
--------------------------------------------------------------------------------
/res/tray_err.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/tray_err.ico
--------------------------------------------------------------------------------
/res/tray_err16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/tray_err16.png
--------------------------------------------------------------------------------
/res/tray_err32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/tray_err32.png
--------------------------------------------------------------------------------
/res/tray_ok.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/tray_ok.ico
--------------------------------------------------------------------------------
/res/tray_ok16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/tray_ok16.png
--------------------------------------------------------------------------------
/res/tray_ok32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/tray_ok32.png
--------------------------------------------------------------------------------
/res/tray_wait.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/tray_wait.ico
--------------------------------------------------------------------------------
/res/tray_wait16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/tray_wait16.png
--------------------------------------------------------------------------------
/res/tray_wait32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/tray_wait32.png
--------------------------------------------------------------------------------
/res/unk_profile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/unk_profile.png
--------------------------------------------------------------------------------
/res/warning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/res/warning.png
--------------------------------------------------------------------------------
/src/globals.cpp:
--------------------------------------------------------------------------------
1 | #include "globals.hpp"
2 |
3 | std::unique_ptr Globals::s_inst = nullptr;
4 |
5 | Globals::Globals()
6 | {
7 | }
8 |
9 | Globals* Globals::get()
10 | {
11 | if ( !Globals::s_inst )
12 | {
13 | Globals::s_inst = std::make_unique();
14 | }
15 |
16 | return Globals::s_inst.get();
17 | }
18 |
19 | void Globals::setWinpinatorServiceInstance( srv::WinpinatorService* inst )
20 | {
21 | m_service = inst;
22 | }
23 |
24 | srv::WinpinatorService* Globals::getWinpinatorServiceInstance() const
25 | {
26 | return m_service;
27 | }
28 |
--------------------------------------------------------------------------------
/src/globals.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "service/winpinator_service.hpp"
3 |
4 | #include
5 |
6 | /*
7 | This singleton holds references to globally available objects
8 | */
9 | class Globals
10 | {
11 | friend std::unique_ptr std::make_unique();
12 |
13 | private:
14 | static std::unique_ptr s_inst;
15 |
16 | srv::WinpinatorService* m_service;
17 |
18 | Globals();
19 |
20 | public:
21 | static Globals* get();
22 |
23 | void setWinpinatorServiceInstance( srv::WinpinatorService* srv );
24 | srv::WinpinatorService* getWinpinatorServiceInstance() const;
25 | };
26 |
--------------------------------------------------------------------------------
/src/gui/about_dialog.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swiszczoo/winpinator/b3b1822ee4e1a57d35576852a7f5fd7a2ce77501/src/gui/about_dialog.cpp
--------------------------------------------------------------------------------
/src/gui/about_dialog.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include
4 |
5 | #include
6 | #include
7 |
8 | namespace gui
9 | {
10 |
11 | class AboutDialog : public wxDialog
12 | {
13 | public:
14 | explicit AboutDialog( wxWindow* parent );
15 |
16 | private:
17 | static const wxString ABOUT_XML;
18 |
19 | wxPanel* m_banner;
20 | wxBitmap m_bannerBmp;
21 | wxFont m_versionFont;
22 |
23 | void loadBitmap();
24 | void loadAboutText( wxRichTextCtrl* rt );
25 | void createAboutPage( wxNotebook* nb );
26 | void createLicensePage( wxNotebook* nb );
27 |
28 | void onDpiChanged( wxDPIChangedEvent& event );
29 | void onPaintBitmap( wxPaintEvent& event );
30 | void onLinkClicked( wxHtmlLinkEvent& event );
31 | };
32 |
33 | };
34 |
--------------------------------------------------------------------------------
/src/gui/array_event.cpp:
--------------------------------------------------------------------------------
1 | #include "array_event.hpp"
2 |
3 | namespace gui
4 | {
5 |
6 | wxDEFINE_EVENT( EVT_ARRAY, ArrayEvent );
7 |
8 | ArrayEvent::ArrayEvent(
9 | wxEventType commandType, int id )
10 | : wxCommandEvent( commandType, id )
11 | {
12 | }
13 |
14 | ArrayEvent::ArrayEvent( const ArrayEvent& other )
15 | : wxCommandEvent( other )
16 | {
17 | m_vector = other.m_vector;
18 | }
19 |
20 | wxEvent* ArrayEvent::Clone() const
21 | {
22 | return new ArrayEvent( *this );
23 | }
24 |
25 | };
26 |
--------------------------------------------------------------------------------
/src/gui/array_event.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 | #include
5 | #include
6 |
7 | namespace gui
8 | {
9 |
10 | class ArrayEvent;
11 | wxDECLARE_EVENT( EVT_ARRAY, ArrayEvent );
12 |
13 | typedef void ( wxEvtHandler::*ArrayEventFunction )( ArrayEvent& );
14 | #define ArrayHandler( func ) wxEVENT_HANDLER_CAST( ArrayEventFunction, func )
15 |
16 | class ArrayEvent : public wxCommandEvent
17 | {
18 | public:
19 | explicit ArrayEvent( wxEventType commandType, int id = 0 );
20 | ArrayEvent( const ArrayEvent& other );
21 |
22 | virtual wxEvent* Clone() const override;
23 |
24 | template
25 | inline void setArray( const std::vector& vector )
26 | {
27 | std::shared_ptr> clone
28 | = std::make_shared>( vector );
29 |
30 | m_vector = std::static_pointer_cast( clone );
31 | }
32 |
33 | template
34 | inline const std::vector& getArray()
35 | {
36 | const std::shared_ptr>& casted
37 | = std::static_pointer_cast>( m_vector );
38 |
39 | return *casted;
40 | }
41 |
42 | private:
43 | std::shared_ptr m_vector;
44 | };
45 |
46 | };
47 |
--------------------------------------------------------------------------------
/src/gui/autorun_setter.cpp:
--------------------------------------------------------------------------------
1 | #include "autorun_setter.hpp"
2 |
3 | #include
4 |
5 | namespace gui
6 | {
7 |
8 | const wxString AutorunSetter::KEY_NAME = "SOFTWARE\\Microsoft\\Windows"
9 | "\\CurrentVersion\\Run";
10 |
11 | AutorunSetter::AutorunSetter( const wxString& appName, const wxString& command )
12 | : m_appName( appName )
13 | , m_command( command )
14 | {
15 | m_runKey.SetName( wxRegKey::HKCU, KEY_NAME );
16 | if ( !m_runKey.Open() )
17 | {
18 | wxLogDebug( "Can't open Run registry key" );
19 | }
20 | }
21 |
22 | bool AutorunSetter::isAutorunEnabled() const
23 | {
24 | if ( !m_runKey.IsOpened() )
25 | {
26 | return false;
27 | }
28 |
29 | if ( !m_runKey.HasValue( m_appName ) )
30 | {
31 | return false;
32 | }
33 |
34 | wxString value;
35 | m_runKey.QueryValue( m_appName, value );
36 |
37 | return value == m_command;
38 | }
39 |
40 | void AutorunSetter::enableAutorun()
41 | {
42 | if ( !m_runKey.IsOpened() )
43 | {
44 | return;
45 | }
46 |
47 | m_runKey.SetValue( m_appName, m_command );
48 | }
49 |
50 | void AutorunSetter::disableAutorun()
51 | {
52 | if ( !m_runKey.IsOpened() )
53 | {
54 | return;
55 | }
56 |
57 | m_runKey.DeleteValue( m_appName );
58 | }
59 |
60 | };
61 |
--------------------------------------------------------------------------------
/src/gui/autorun_setter.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 | #include
5 |
6 | namespace gui
7 | {
8 |
9 | class AutorunSetter
10 | {
11 | public:
12 | explicit AutorunSetter( const wxString& appName, const wxString& command );
13 | bool isAutorunEnabled() const;
14 | void disableAutorun();
15 | void enableAutorun();
16 |
17 | private:
18 | static const wxString KEY_NAME;
19 |
20 | wxRegKey m_runKey;
21 | wxString m_appName;
22 | wxString m_command;
23 | };
24 |
25 | };
26 |
--------------------------------------------------------------------------------
/src/gui/file_list_dialog.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "../service/database_types.hpp"
3 |
4 | #include
5 | #include
6 |
7 | namespace gui
8 | {
9 |
10 | class FileListDialog : public wxDialog
11 | {
12 | public:
13 | explicit FileListDialog( wxWindow* parent );
14 |
15 | void setTransferData( int transferId, std::wstring targetId );
16 |
17 | private:
18 | enum class MenuID
19 | {
20 | COPY_NAME = 1,
21 | COPY_TYPE,
22 | COPY_RELATIVE,
23 | COPY_ABSOLUTE
24 | };
25 |
26 | static const wxString LABEL_TEXT;
27 |
28 | int m_transferId;
29 | std::wstring m_targetId;
30 |
31 | wxStaticText* m_label;
32 | wxTreeListCtrl* m_fileList;
33 |
34 | wxTreeListItem m_selectedItem;
35 |
36 | void updateLabelWrapping();
37 | void setupColumns();
38 | void loadPaths();
39 | static wxString getElementType( const srv::db::TransferElement& element );
40 | static void copyStringToClipboard( const wxString& string );
41 |
42 | void onDialogInit( wxInitDialogEvent& event );
43 | void onDialogResized( wxSizeEvent& event );
44 | void onListRightClicked( wxTreeListEvent& event );
45 |
46 | void onCopyNameClicked( wxCommandEvent& event );
47 | void onCopyTypeClicked( wxCommandEvent& event );
48 | void onCopyRelativeClicked( wxCommandEvent& event );
49 | void onCopyAbsoluteClicked( wxCommandEvent& event );
50 | };
51 |
52 | };
53 |
--------------------------------------------------------------------------------
/src/gui/history_element_finished.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "history_item_icon.hpp"
3 | #include "history_std_bitmaps.hpp"
4 | #include "pointer_event.hpp"
5 |
6 | #include "../service/database_types.hpp"
7 |
8 | #include
9 |
10 | namespace gui
11 | {
12 |
13 | typedef srv::db::Transfer TransferData;
14 |
15 | wxDECLARE_EVENT( EVT_REMOVE, wxCommandEvent );
16 | wxDECLARE_EVENT( EVT_OPEN_DIALOG, PointerEvent );
17 | wxDECLARE_EVENT( EVT_CLOSE_DIALOG, PointerEvent );
18 |
19 | class HistoryFinishedElement : public HistoryIconItem
20 | {
21 | public:
22 | explicit HistoryFinishedElement( wxWindow* parent, HistoryStdBitmaps* bitmaps );
23 |
24 | void setData( const TransferData& newData );
25 | const TransferData& getData() const;
26 |
27 |
28 |
29 | private:
30 | static const int ICON_SIZE;
31 |
32 | enum class MenuID
33 | {
34 | ID_OPEN = 1,
35 | ID_EXPLORER,
36 | ID_PATHS,
37 | ID_REMOVE
38 | };
39 |
40 | HistoryStdBitmaps* m_bitmaps;
41 | TransferData m_data;
42 | wxFont m_bold;
43 | wxBrush m_brush;
44 |
45 | void onPaint( wxPaintEvent& event );
46 | void onDoubleClicked( wxMouseEvent& event );
47 | void onContextMenu( wxContextMenuEvent& event );
48 |
49 | void onOpenClicked( wxCommandEvent& event );
50 | void onShowInExplorerClicked( wxCommandEvent& event );
51 | void onShowListClicked( wxCommandEvent& event );
52 | void onRemoveClicked( wxCommandEvent& event );
53 |
54 | wxString determineStatusString();
55 | const wxBitmap& setupStatusDrawing( wxDC* dc );
56 |
57 | void openElement();
58 | };
59 |
60 | };
61 |
--------------------------------------------------------------------------------
/src/gui/history_group_header.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "history_item.hpp"
3 |
4 | #include
5 |
6 | namespace gui
7 | {
8 |
9 | class HistoryGroupHeader : public HistoryItem
10 | {
11 | public:
12 | explicit HistoryGroupHeader( wxWindow* parent, const wxString& label );
13 |
14 | void SetLabel( const wxString& label ) override;
15 | wxString GetLabel() const override;
16 |
17 | private:
18 | wxString m_label;
19 | wxPen m_pen;
20 |
21 | void updateSize();
22 |
23 | void onPaint( wxPaintEvent& event );
24 | void onSize( wxSizeEvent& event );
25 | void onDpiChanged( wxDPIChangedEvent& event );
26 | };
27 |
28 | };
29 |
--------------------------------------------------------------------------------
/src/gui/history_item.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 | namespace gui
5 | {
6 |
7 | /*
8 | This is the base class for all entries that show up in the
9 | transfer history box. It provides implementation for common
10 | behaviors, like drawing list item background on mouse hover.
11 | */
12 | class HistoryItem : public wxPanel
13 | {
14 | public:
15 | HistoryItem( wxWindow* parent );
16 | void updateHoverState( bool insideParent );
17 |
18 | protected:
19 | void eraseNullSink( wxEraseEvent& event );
20 |
21 | private:
22 | bool m_hovering;
23 |
24 | void refreshHoverState();
25 | void onErase( wxEraseEvent& event );
26 | };
27 |
28 | };
29 |
--------------------------------------------------------------------------------
/src/gui/history_item_icon.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "history_item.hpp"
3 | #include "history_std_bitmaps.hpp"
4 |
5 | namespace gui
6 | {
7 |
8 | class HistoryIconItem : public HistoryItem
9 | {
10 | public:
11 | explicit HistoryIconItem( wxWindow* parent, HistoryStdBitmaps* bmps );
12 |
13 | void setIsLast( bool isLast );
14 | bool isLast() const;
15 |
16 | protected:
17 | void setIcons( int folderCount, int fileCount, const wxString& fileExt );
18 | void setOutcoming( bool outcoming );
19 | void setFinished( bool finished );
20 |
21 | const wxBitmap& determineBitmapToDraw() const;
22 | wxString determineHeaderString() const;
23 |
24 | wxString getElementType() const;
25 |
26 | wxCoord drawIcon( wxPaintDC& dc ); // Returns content offset in pixels
27 |
28 | private:
29 | static const int ICON_SIZE;
30 |
31 | HistoryStdBitmaps* m_bitmaps;
32 | wxString m_singleElementName;
33 | int m_folderCount;
34 | int m_fileCount;
35 | bool m_outcoming;
36 | bool m_last;
37 | bool m_finished;
38 |
39 | wxIcon m_fileIcon;
40 | wxIconLocation m_fileIconLoc;
41 |
42 | wxString m_elementType;
43 |
44 | void onDpiChanged( wxDPIChangedEvent& event );
45 | void setupElementType();
46 | };
47 |
48 | };
49 |
--------------------------------------------------------------------------------
/src/gui/history_std_bitmaps.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 | namespace gui
5 | {
6 |
7 | struct HistoryStdBitmaps
8 | {
9 | wxBitmap transferFileX;
10 | wxBitmap transferFileFile;
11 | wxBitmap transferDirX;
12 | wxBitmap transferDirDir;
13 | wxBitmap transferDirFile;
14 |
15 | wxBitmap badgeUp;
16 | wxBitmap badgeDown;
17 |
18 | wxBitmap statusSuccess;
19 | wxBitmap statusCancelled;
20 | wxBitmap statusError;
21 |
22 | wxPen separatorPen;
23 | };
24 |
25 | };
26 |
--------------------------------------------------------------------------------
/src/gui/host_listbox.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "../service/remote_info.hpp"
3 |
4 | #include
5 | #include
6 |
7 | #include
8 | #include
9 |
10 |
11 | namespace gui
12 | {
13 |
14 | struct HostItem
15 | {
16 | std::string id;
17 |
18 | std::shared_ptr profilePic;
19 | std::shared_ptr profileBmp;
20 | wxString username;
21 | wxString hostname;
22 | wxString ipAddress;
23 | wxString os;
24 | srv::RemoteStatus state;
25 | };
26 |
27 | class HostListbox : public wxVListBox
28 | {
29 | public:
30 | explicit HostListbox( wxWindow* parent );
31 |
32 | void addItem( const HostItem& item );
33 | void updateItem( size_t position, const HostItem& item );
34 | bool updateItemById( const HostItem& newData );
35 | void removeItem( size_t position );
36 | void clear();
37 |
38 | wxString getSelectedIdent() const;
39 |
40 | protected:
41 | virtual void OnDrawItem( wxDC& dc, const wxRect& rect, size_t n ) const;
42 | virtual void OnDrawBackground( wxDC& dc,
43 | const wxRect& rect, size_t n ) const;
44 | virtual wxCoord OnMeasureItem( size_t n ) const;
45 |
46 | private:
47 | std::vector m_items;
48 | wxBitmap m_defaultPic;
49 | wxCoord m_rowHeight;
50 | int m_hotItem;
51 |
52 | void onDpiChanged( wxDPIChangedEvent& event );
53 | void onMouseMotion( wxMouseEvent& event );
54 | void onRightClick( wxMouseEvent& event );
55 |
56 | void loadIcons();
57 | void calcRowHeight();
58 | bool scaleProfilePic( HostItem& item ) const;
59 | };
60 |
61 | };
62 |
--------------------------------------------------------------------------------
/src/gui/language_adapter.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include
4 | #include
5 |
6 | #include
7 |
8 | namespace gui
9 | {
10 |
11 | class LanguageAdapter
12 | {
13 | public:
14 | struct LanguageInfo
15 | {
16 | wxString flagPath;
17 | wxString localName;
18 | wxString icuCode;
19 | };
20 |
21 | LanguageAdapter();
22 | std::vector getAllLanguages();
23 | const LanguageInfo& getLanguageInfoByIndex( size_t index );
24 |
25 | private:
26 | wxXmlDocument m_langListDoc;
27 | wxString m_executableFolder;
28 | bool m_dataReady;
29 | std::vector m_data;
30 |
31 | void openLanguageFile();
32 | void loadData();
33 | LanguageInfo parseLanguage( wxXmlNode* node );
34 | };
35 |
36 | };
37 |
--------------------------------------------------------------------------------
/src/gui/network_interface_adapter.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include
4 |
5 | namespace gui
6 | {
7 |
8 | class NetworkInterfaceAdapter
9 | {
10 | public:
11 | struct InetInfo
12 | {
13 | int id;
14 | std::string name;
15 | std::wstring displayName;
16 | bool defaultInterface;
17 |
18 | int metricV4;
19 | int metricV6;
20 | };
21 |
22 | NetworkInterfaceAdapter();
23 | std::vector getAllInterfaces();
24 | std::string getDefaultInterfaceName();
25 |
26 | private:
27 | bool m_dataReady;
28 | std::vector m_data;
29 |
30 | void loadData();
31 | };
32 |
33 | };
34 |
--------------------------------------------------------------------------------
/src/gui/page_error.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "../service/service_errors.hpp"
3 |
4 | #include
5 |
6 | namespace gui
7 | {
8 |
9 | wxDECLARE_EVENT( EVT_OPEN_SETTINGS, wxCommandEvent );
10 |
11 | class ErrorPage : public wxPanel
12 | {
13 | public:
14 | explicit ErrorPage( wxWindow* parent );
15 |
16 | void setServiceError( srv::ServiceError err );
17 | srv::ServiceError getServiceError() const;
18 |
19 | private:
20 | static const wxString TEXT;
21 |
22 | srv::ServiceError m_srvError;
23 |
24 | wxStaticBitmap* m_icon;
25 | wxStaticText* m_label;
26 | wxTextCtrl* m_description;
27 | wxButton* m_retryBtn;
28 | wxButton* m_settingsBtn;
29 | wxBitmap m_iconBmp;
30 |
31 | void onDpiChanged( wxDPIChangedEvent& event );
32 | void onRetryClicked( wxCommandEvent& event );
33 | void onSettingsClicked( wxCommandEvent& event );
34 |
35 | void loadIcon();
36 | void updateLabel();
37 | };
38 |
39 | };
40 |
--------------------------------------------------------------------------------
/src/gui/page_nohosts.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 |
5 | namespace gui
6 | {
7 |
8 | class NoHostsPage : public wxPanel
9 | {
10 | public:
11 | explicit NoHostsPage( wxWindow* parent );
12 |
13 | private:
14 | static const wxString TEXT;
15 |
16 | wxStaticBitmap* m_icon;
17 | wxStaticText* m_label;
18 | wxButton* m_retryBtn;
19 | wxBitmap m_iconBmp;
20 |
21 | void onDpiChanged( wxDPIChangedEvent& event );
22 | void onRetryClicked( wxCommandEvent& event );
23 |
24 | void loadIcon();
25 | };
26 |
27 | };
28 |
--------------------------------------------------------------------------------
/src/gui/page_offline.cpp:
--------------------------------------------------------------------------------
1 | #include "page_offline.hpp"
2 |
3 | #include "../../win32/resource.h"
4 | #include "utils.hpp"
5 |
6 |
7 | namespace gui
8 | {
9 |
10 | wxString OfflinePage::TEXT = wxTRANSLATE( "It seems you're offline! Check your"
11 | " LAN connection..." );
12 |
13 | OfflinePage::OfflinePage( wxWindow* parent )
14 | : wxPanel( parent, wxID_ANY )
15 | , m_icon( nullptr )
16 | , m_label( nullptr )
17 | , m_iconBmp( wxNullBitmap )
18 | {
19 | wxBoxSizer* mainSizer = new wxBoxSizer( wxVERTICAL );
20 |
21 | mainSizer->AddStretchSpacer();
22 |
23 | m_icon = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap );
24 | loadIcon();
25 | mainSizer->Add( m_icon, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 8 );
26 |
27 | m_label = new wxStaticText( this, wxID_ANY, wxGetTranslation( TEXT ),
28 | wxDefaultPosition, wxDefaultSize, wxELLIPSIZE_END );
29 | wxFont labelFont = m_label->GetFont();
30 | labelFont.MakeLarger();
31 | labelFont.MakeLarger();
32 | m_label->SetFont( labelFont );
33 | mainSizer->Add( m_label, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 8 );
34 |
35 | mainSizer->AddStretchSpacer();
36 |
37 | SetSizer( mainSizer );
38 |
39 | // Events
40 |
41 | Bind( wxEVT_DPI_CHANGED, &OfflinePage::onDpiChanged, this );
42 | }
43 |
44 | void OfflinePage::onDpiChanged( wxDPIChangedEvent& event )
45 | {
46 | loadIcon();
47 | }
48 |
49 | void OfflinePage::loadIcon()
50 | {
51 | wxBitmap original;
52 | original.LoadFile( Utils::makeIntResource( IDB_WARNING ),
53 | wxBITMAP_TYPE_PNG_RESOURCE );
54 |
55 | wxImage iconImg = original.ConvertToImage();
56 |
57 | int targetSize = FromDIP( 80 );
58 |
59 | m_iconBmp = iconImg.Scale( targetSize, targetSize,
60 | wxIMAGE_QUALITY_BICUBIC );
61 | m_icon->SetBitmap( m_iconBmp );
62 | }
63 |
64 | };
65 |
--------------------------------------------------------------------------------
/src/gui/page_offline.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 |
5 | namespace gui
6 | {
7 |
8 | class OfflinePage : public wxPanel
9 | {
10 | public:
11 | explicit OfflinePage( wxWindow* parent );
12 |
13 | private:
14 | static wxString TEXT;
15 |
16 | wxStaticBitmap* m_icon;
17 | wxStaticText* m_label;
18 | wxBitmap m_iconBmp;
19 |
20 | void onDpiChanged( wxDPIChangedEvent& event );
21 |
22 | void loadIcon();
23 | };
24 |
25 | };
26 |
--------------------------------------------------------------------------------
/src/gui/page_starting.cpp:
--------------------------------------------------------------------------------
1 | #include "page_starting.hpp"
2 |
3 | #include "utils.hpp"
4 |
5 | namespace gui
6 | {
7 |
8 | StartingPage::StartingPage( wxWindow* parent )
9 | : wxPanel( parent, wxID_ANY )
10 | , m_indicator( nullptr )
11 | , m_label( nullptr )
12 | {
13 | wxBoxSizer* mainSizer = new wxBoxSizer( wxVERTICAL );
14 |
15 | mainSizer->AddStretchSpacer();
16 |
17 | m_indicator = new wxActivityIndicator( this, wxID_ANY, wxDefaultPosition,
18 | FromDIP( wxSize( 64, 64 ) ) );
19 | m_indicator->Start();
20 | mainSizer->Add( m_indicator, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 8 );
21 |
22 | m_label = new wxStaticText( this, wxID_ANY, _( "Starting Winpinator..." ));
23 | wxFont labelFont = m_label->GetFont();
24 | labelFont.MakeLarger();
25 | labelFont.MakeLarger();
26 | m_label->SetFont( labelFont );
27 | mainSizer->Add( m_label, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 8 );
28 |
29 | mainSizer->AddStretchSpacer();
30 |
31 | SetSizer( mainSizer );
32 | }
33 |
34 | };
35 |
--------------------------------------------------------------------------------
/src/gui/page_starting.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include
4 |
5 | namespace gui
6 | {
7 |
8 | class StartingPage : public wxPanel
9 | {
10 | public:
11 | explicit StartingPage( wxWindow* parent );
12 |
13 | private:
14 | wxActivityIndicator* m_indicator;
15 | wxStaticText* m_label;
16 | };
17 |
18 | };
19 |
--------------------------------------------------------------------------------
/src/gui/page_transferlist.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 | #include "../service/service_observer.hpp"
5 | #include "status_text.hpp"
6 | #include "tool_button.hpp"
7 | #include "transfer_history.hpp"
8 |
9 | #include
10 |
11 | namespace gui
12 | {
13 |
14 | wxDECLARE_EVENT( EVT_GO_BACK, wxCommandEvent );
15 |
16 | class TransferListPage : public wxPanel, srv::IServiceObserver
17 | {
18 | public:
19 | explicit TransferListPage( wxWindow* parent, const wxString& targetId );
20 |
21 | wxString getTargetId() const;
22 | void scrollToTop();
23 |
24 | void requestFileTransfer( const std::vector& list );
25 |
26 | private:
27 | wxString m_target;
28 |
29 | wxStaticText* m_header;
30 | wxStaticText* m_details;
31 | ToolButton* m_backBtn;
32 | ToolButton* m_fileBtn;
33 | ToolButton* m_directoryBtn;
34 | ToolButton* m_historyBtn;
35 | wxPanel* m_opPanel;
36 | ScrolledTransferHistory* m_opList;
37 | StatusText* m_statusLabel;
38 |
39 | wxBitmap m_backBmp;
40 | wxBitmap m_fileBmp;
41 | wxBitmap m_dirBmp;
42 | wxBitmap m_historyBmp;
43 |
44 | void loadIcons();
45 | void loadSingleIcon( const wxString& res, wxBitmap* loc, ToolButton* btn );
46 |
47 | void onDpiChanged( wxDPIChangedEvent& event );
48 | void onBackClicked( wxCommandEvent& event );
49 | void onUpdateStatus( wxThreadEvent& event );
50 | void onSendFileClicked( wxCommandEvent& event );
51 | void onSendFolderClicked( wxCommandEvent& event );
52 | void onClearHistoryClicked( wxCommandEvent& event );
53 | void onUpdateEmptyState( wxCommandEvent& event );
54 |
55 | void onStateChanged() override;
56 | void onEditHost( srv::RemoteInfoPtr newInfo ) override;
57 |
58 | void updateForStatus( srv::RemoteStatus status );
59 | };
60 |
61 | };
62 |
--------------------------------------------------------------------------------
/src/gui/permission_picker.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 | namespace gui
5 | {
6 |
7 | class PermissionPicker : public wxPanel
8 | {
9 | public:
10 | explicit PermissionPicker( wxWindow* parent, bool directory );
11 |
12 | void setLabel( const wxString& label );
13 | wxString getLabel() const;
14 |
15 | void setLabelWidth( int width );
16 | int getLabelWidth() const;
17 |
18 | void setPermissionMask( int mask );
19 | int getPermissionMask() const;
20 |
21 | private:
22 | wxCheckBox* m_checkboxes[9];
23 | wxSizerItem* m_offset;
24 | wxString m_label;
25 | wxStaticText* m_labelCtrl;
26 | int m_labelWidth;
27 | };
28 |
29 | };
30 |
--------------------------------------------------------------------------------
/src/gui/pointer_event.cpp:
--------------------------------------------------------------------------------
1 | #include "pointer_event.hpp"
2 |
3 | namespace gui
4 | {
5 |
6 | wxDEFINE_EVENT( EVT_POINTER, PointerEvent );
7 |
8 | PointerEvent::PointerEvent(
9 | wxEventType commandType, int id )
10 | : wxCommandEvent( commandType, id )
11 | {
12 | }
13 |
14 | PointerEvent::PointerEvent( const PointerEvent& other )
15 | : wxCommandEvent( other )
16 | {
17 | m_pointer = other.m_pointer;
18 | }
19 |
20 | wxEvent* PointerEvent::Clone() const
21 | {
22 | return new PointerEvent( *this );
23 | }
24 |
25 | };
26 |
--------------------------------------------------------------------------------
/src/gui/pointer_event.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 | #include
5 |
6 | namespace gui
7 | {
8 |
9 | class PointerEvent;
10 | wxDECLARE_EVENT( EVT_POINTER, PointerEvent );
11 |
12 | typedef void ( wxEvtHandler::*PointerEventFunction )( PointerEvent& );
13 | #define PointerHandler( func ) wxEVENT_HANDLER_CAST( PointerEventFunction, func )
14 |
15 | class PointerEvent : public wxCommandEvent
16 | {
17 | public:
18 | explicit PointerEvent( wxEventType commandType = EVT_POINTER, int id = 0 );
19 | PointerEvent( const PointerEvent& other );
20 |
21 | virtual wxEvent* Clone() const override;
22 |
23 | template
24 | inline void setSharedPointer( std::shared_ptr ptr )
25 | {
26 | m_pointer = std::static_pointer_cast( ptr );
27 | }
28 |
29 | template
30 | inline std::shared_ptr getSharedPointer() const
31 | {
32 | return std::static_pointer_cast( m_pointer );
33 | }
34 |
35 | private:
36 | std::shared_ptr m_pointer;
37 | };
38 |
39 | };
40 |
--------------------------------------------------------------------------------
/src/gui/progress_label.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 | #include "spritesheet_animator.hpp"
5 |
6 |
7 | namespace gui
8 | {
9 |
10 | class ProgressLabel : public wxPanel
11 | {
12 | public:
13 | ProgressLabel( wxWindow* parent, const wxString& label );
14 |
15 | void setLabel( const wxString& newLabel );
16 | wxString getLabel() const;
17 |
18 | private:
19 | wxBitmap m_bitmap;
20 | wxStaticText* m_stText;
21 | SpritesheetAnimator* m_anim;
22 |
23 | void loadImages();
24 | void onDpiChanged( wxDPIChangedEvent& event );
25 | };
26 |
27 | };
28 |
--------------------------------------------------------------------------------
/src/gui/screen_selector.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "../service/service_observer.hpp"
3 | #include "page_error.hpp"
4 | #include "page_hostlist.hpp"
5 | #include "page_nohosts.hpp"
6 | #include "page_offline.hpp"
7 | #include "page_starting.hpp"
8 | #include "page_transferlist.hpp"
9 | #include "pointer_event.hpp"
10 |
11 | #include
12 | #include
13 |
14 | #include
15 |
16 | namespace gui
17 | {
18 |
19 | wxDECLARE_EVENT( EVT_UPDATE_BANNER_TARGET, PointerEvent );
20 | wxDECLARE_EVENT( EVT_UPDATE_BANNER_QSIZE, wxCommandEvent );
21 |
22 | class ScreenSelector : public wxPanel, srv::IServiceObserver
23 | {
24 | public:
25 | explicit ScreenSelector( wxWindow* parent );
26 |
27 | bool showTransferScreen( const wxString& remoteId );
28 | void setTransferList( const std::vector& paths );
29 |
30 | // Service listeners
31 |
32 | virtual void onStateChanged();
33 |
34 | private:
35 | enum class SelectorPage
36 | {
37 | STARTING,
38 | OFFLINE,
39 | HOST_LIST,
40 | NO_HOSTS,
41 | ERROR_PAGE,
42 | TRANSFER_LIST
43 | };
44 |
45 | wxSimplebook* m_book;
46 | SelectorPage m_currentPage;
47 |
48 | StartingPage* m_page0;
49 | OfflinePage* m_page1;
50 | HostListPage* m_page2;
51 | NoHostsPage* m_page3;
52 | ErrorPage* m_page4;
53 | TransferListPage* m_page5;
54 |
55 | std::vector m_transferBuffer;
56 |
57 | void onChangePage( wxThreadEvent& event );
58 | void onNoHostsInTime( wxCommandEvent& event );
59 | void onTargetSelected( wxCommandEvent& event );
60 | void onRetryClicked( wxCommandEvent& event );
61 |
62 | virtual void onHostCountChanged( size_t newCount ) override;
63 |
64 | void onTransferBackClicked( wxCommandEvent& event );
65 |
66 | void changePage( SelectorPage newPage );
67 | void removeTransferListPage();
68 | void setupTransferListPage( const wxString& targetId, bool useBuffer = false );
69 |
70 | void setupTransferScreenEvents();
71 | };
72 |
73 | };
74 |
--------------------------------------------------------------------------------
/src/gui/scrollable_restorable.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 | namespace gui
5 | {
6 |
7 | class ScrollableRestorable
8 | {
9 | public:
10 | virtual void saveScrollPosition() = 0;
11 | virtual void restoreScrollPosition() = 0;
12 |
13 | protected:
14 | wxPoint m_scrollPos;
15 | };
16 |
17 | };
18 |
--------------------------------------------------------------------------------
/src/gui/spritesheet_animator.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 | namespace gui
5 | {
6 |
7 | class SpritesheetAnimator : public wxWindow
8 | {
9 | public:
10 | explicit SpritesheetAnimator( wxWindow* parent );
11 |
12 | void setBitmap( const wxBitmap& bmp );
13 | const wxBitmap& getBitmap() const;
14 |
15 | void setIntervalMs( int millis );
16 | int getIntervalMs() const;
17 |
18 | void startAnimation();
19 | void stopAnimation();
20 | bool isPlaying() const;
21 |
22 | void DoEnable( bool enable ) override;
23 |
24 | private:
25 | wxBitmap m_bitmap;
26 | wxMemoryDC m_memDc;
27 | wxTimer m_timer;
28 | int m_interval;
29 | int m_currentFrame;
30 | bool m_playing;
31 |
32 | void onPaint( wxPaintEvent& event );
33 | void onSize( wxSizeEvent& event );
34 | void onTimerTick( wxTimerEvent& event );
35 | };
36 |
37 | };
38 |
--------------------------------------------------------------------------------
/src/gui/status_text.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 | #include "../service/remote_info.hpp"
5 |
6 | namespace gui
7 | {
8 |
9 | class StatusText : public wxPanel
10 | {
11 | public:
12 | explicit StatusText( wxWindow* panel );
13 |
14 | void setStatus( srv::RemoteStatus status );
15 | srv::RemoteStatus getStatus() const;
16 |
17 | wxColour getBarColor() const;
18 |
19 | private:
20 | srv::RemoteStatus m_status;
21 |
22 | wxStaticText* m_label;
23 |
24 | wxColour m_accentColor;
25 | wxColour m_bgColor;
26 |
27 | wxBrush m_rectBrush;
28 | wxPen m_linePen;
29 |
30 | void setColors( wxColour accentColor, wxColour bgColor );
31 |
32 | void onPaint( wxPaintEvent& event );
33 | void onSize( wxSizeEvent& event );
34 | void onDpiChanged( wxDPIChangedEvent& event );
35 | };
36 |
37 | };
38 |
--------------------------------------------------------------------------------
/src/gui/tool_button.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 |
5 | namespace gui
6 | {
7 |
8 | class ToolButton : public wxButton
9 | {
10 | public:
11 | ToolButton( wxWindow* parent, wxWindowID id,
12 | const wxString& label = wxEmptyString,
13 | const wxPoint& pos = wxDefaultPosition,
14 | const wxSize& size = wxDefaultSize,
15 | long style = 0,
16 | const wxValidator& validator = wxDefaultValidator,
17 | const wxString& name = wxASCII_STR( wxButtonNameStr ) );
18 |
19 | private:
20 | bool m_hovering;
21 | bool m_pressed;
22 | bool m_focus;
23 |
24 | void onPaint( wxPaintEvent& event );
25 | bool MSWOnDraw( WXDRAWITEMSTRUCT* wxdis );
26 | };
27 |
28 | };
29 |
--------------------------------------------------------------------------------
/src/gui/transfer_speed_calculator.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include
4 |
5 | namespace gui
6 | {
7 |
8 | class TransferSpeedCalculator
9 | {
10 | public:
11 | explicit TransferSpeedCalculator();
12 |
13 | void reset( long long currentBytes, long long totalBytes );
14 | void update( long long currentBytes );
15 |
16 | long long getTransferSpeedInBps() const;
17 | int getRemainingTimeInSeconds() const;
18 |
19 | private:
20 | struct DataPoint
21 | {
22 | long long bytes;
23 | std::chrono::steady_clock::time_point time;
24 | };
25 |
26 | static const int WEIGHT_RAMP_MILLIS;
27 | static const int MIN_DATA_POINTS;
28 |
29 | std::list m_points;
30 | std::list m_timePoints;
31 |
32 | long long m_totalBytes;
33 | long long m_bytesPerSec;
34 | int m_remainingSeconds;
35 |
36 | void removeOldestPoints( std::chrono::steady_clock::time_point time );
37 | void recalculateSpeedAndTime();
38 | void calculateTime( long long current );
39 | };
40 |
41 | };
42 |
--------------------------------------------------------------------------------
/src/gui/utils.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "../service/remote_info.hpp"
3 |
4 | #include
5 |
6 | #include
7 | #include
8 |
9 |
10 | namespace gui
11 | {
12 |
13 | class Utils
14 | {
15 | public:
16 | static const wxColour GREEN_ACCENT;
17 | static const wxColour GREEN_BACKGROUND;
18 | static const wxColour ORANGE_ACCENT;
19 | static const wxColour ORANGE_BACKGROUND;
20 | static const wxColour RED_ACCENT;
21 | static const wxColour RED_BACKGROUND;
22 |
23 | static const wxString VERSION;
24 |
25 | static Utils* get();
26 | static wxString makeIntResource( int resource );
27 |
28 | const wxFont& getHeaderFont() const;
29 | wxColour getHeaderColor() const;
30 |
31 | static void drawTextEllipse( wxDC& dc, const wxString& text,
32 | const wxPoint& pnt, const wxCoord maxWidth );
33 |
34 | static wxString getStatusString( srv::RemoteStatus status );
35 |
36 | static wxIcon extractIconWithSize( const wxIconLocation& loc, wxCoord dim );
37 | static bool getIconDimensions( HICON hico, SIZE* psiz );
38 |
39 | static wxString fileSizeToString( long long bytes );
40 | static wxString formatDate( uint64_t timestamp, std::string format );
41 |
42 | static void openDirectoryInExplorer( const wxString& directory );
43 | static bool openExplorerWithSelectedFiles(
44 | const wxString& parentDirectory, const std::vector& children );
45 |
46 | private:
47 | // We need a friend to create a unique_ptr
48 | friend std::unique_ptr std::make_unique();
49 |
50 | Utils();
51 |
52 | static std::unique_ptr s_inst;
53 |
54 | wxFont m_headerFont;
55 | wxColour m_headerColor;
56 | };
57 |
58 | };
--------------------------------------------------------------------------------
/src/gui/winpinator_banner.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 | #include "../service/remote_info.hpp"
5 |
6 | #include
7 |
8 | namespace gui
9 | {
10 |
11 | class WinpinatorBanner : public wxPanel
12 | {
13 | public:
14 | WinpinatorBanner( wxWindow* parent, int height );
15 |
16 | void setTargetInfo( srv::RemoteInfoPtr targetPtr );
17 | void setSendQueueSize( int size );
18 | int getSendQueueSize() const;
19 |
20 | private:
21 | static wxColour s_gradient1;
22 | static wxColour s_gradient2;
23 |
24 | int m_height;
25 | std::unique_ptr m_headerFont;
26 | std::unique_ptr m_detailsFont;
27 | wxBitmap m_logo;
28 |
29 | bool m_targetMode;
30 | wxString m_targetName;
31 | wxString m_targetDetails;
32 | wxImage m_targetAvatarImg;
33 | wxBitmap m_targetAvatarBmp;
34 |
35 | int m_queueSize;
36 |
37 | void onDpiChanged( wxDPIChangedEvent& event );
38 | void onDraw( wxPaintEvent& event );
39 | void onSize( wxSizeEvent& event );
40 | void loadResources();
41 | void rescaleTargetAvatar();
42 |
43 | void drawBasic( wxDC& dc );
44 | void drawTargetInfo( wxDC& dc );
45 | };
46 |
47 | };
48 |
--------------------------------------------------------------------------------
/src/gui/winpinator_frame.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "../service/service_observer.hpp"
3 | #include "about_dialog.hpp"
4 | #include "file_list_dialog.hpp"
5 | #include "screen_selector.hpp"
6 | #include "settings_dialog.hpp"
7 | #include "winpinator_banner.hpp"
8 |
9 | #include
10 |
11 | #include
12 |
13 | namespace gui
14 | {
15 |
16 | wxDECLARE_EVENT( EVT_EXIT_APP_FROM_FRAME, wxCommandEvent );
17 |
18 | class WinpinatorFrame : public wxFrame, srv::IServiceObserver
19 | {
20 | public:
21 | explicit WinpinatorFrame( wxWindow* parent );
22 |
23 | bool showTransferScreen( const wxString& remoteId );
24 | void killAllDialogs();
25 | void putOnTop();
26 |
27 | void setTransferList( const std::vector& paths );
28 |
29 | private:
30 | static const wxString RELEASE_NOTES_FILENAME;
31 |
32 | wxMenuBar* m_menuBar;
33 | wxMenu* m_fileMenu;
34 | wxMenu* m_helpMenu;
35 | wxStatusBar* m_statusBar;
36 |
37 | WinpinatorBanner* m_banner;
38 | ScreenSelector* m_selector;
39 |
40 | AboutDialog* m_aboutDlg;
41 | SettingsDialog* m_settingsDlg;
42 | std::shared_ptr m_fileListDlg;
43 |
44 | void setupMenuBar();
45 | void setupAccelTable();
46 |
47 | void onMenuItemSelected( wxCommandEvent& event );
48 | void onChangeStatusBarText( wxThreadEvent& event );
49 | void onDpiChanged( wxDPIChangedEvent& event );
50 | void onSettingsClicked( wxCommandEvent& event );
51 |
52 | void onOpenFolderSelected();
53 | void onPrefsSelected();
54 | void onCloseSelected();
55 | void onExitSelected();
56 | void onHelpSelected();
57 | void onShowReleaseNotesSelected();
58 | void onAboutSelected();
59 |
60 | void onUpdateBannerTarget( PointerEvent& event );
61 | void onUpdateBannerQueueSize( wxCommandEvent& event );
62 |
63 | void onDialogOpened( PointerEvent& event );
64 | void onDialogClosed( PointerEvent& event );
65 |
66 | virtual void onStateChanged();
67 | virtual void onIpAddressChanged( std::string newIp );
68 | };
69 |
70 | };
71 |
--------------------------------------------------------------------------------
/src/main.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "gui/winpinator_frame.hpp"
3 | #include "running_instance_detector.hpp"
4 | #include "tray_icon.hpp"
5 | #include "winpinator_dde_server.hpp"
6 |
7 | #include
8 | #include
9 |
10 | #include
11 | #include
12 | #include
13 |
14 | #define NO_DECLARE_APP
15 | #include "main_base.hpp"
16 |
17 | class WinpinatorApp : public WinpinatorAppBase, srv::IServiceObserver
18 | {
19 | public:
20 | WinpinatorApp();
21 | virtual bool OnInit() override;
22 | virtual int OnExit() override;
23 |
24 | private:
25 | enum class EventType
26 | {
27 | STATE_CHANGED,
28 | OPEN_TRANSFER_UI
29 | };
30 |
31 | gui::WinpinatorFrame* m_topLvl;
32 | TrayIcon* m_trayIcon;
33 | std::thread m_srvThread;
34 |
35 | std::shared_ptr m_detector;
36 | std::unique_ptr m_ddeServer;
37 |
38 | void showMainFrame();
39 | void onMainFrameDestroyed( wxWindowDestroyEvent& event );
40 | void onDDEOpenCalled( wxCommandEvent& event );
41 | void onRestore( wxCommandEvent& event );
42 | void onServiceEvent( wxThreadEvent& event );
43 | void onExitApp( wxCommandEvent& event );
44 | void onOpenSaveFolder( wxCommandEvent& event );
45 | void onSendFiles( gui::ArrayEvent& event );
46 |
47 | void processSendFiles( const std::vector& list );
48 |
49 | // Service observer methods:
50 | virtual void onStateChanged();
51 | virtual void onOpenTransferUI( wxString remoteId );
52 | };
53 |
54 | wxDECLARE_APP( WinpinatorApp );
55 |
--------------------------------------------------------------------------------
/src/main_base.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "settings_model.hpp"
3 |
4 | #include
5 |
6 | #include
7 |
8 | class WinpinatorAppBase : public wxApp
9 | {
10 | public:
11 | SettingsModel m_settings;
12 | std::unique_ptr m_config;
13 | wxLocale m_locale;
14 | };
15 |
16 | #ifndef NO_DECLARE_APP
17 | inline WinpinatorAppBase& GetApp()
18 | {
19 | return *static_cast( wxApp::GetInstance() );
20 | }
21 | #endif
22 |
--------------------------------------------------------------------------------
/src/running_instance_detector.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include
4 |
5 | #include
6 | #include
7 |
8 | class RunningInstanceDetector
9 | {
10 | public:
11 | RunningInstanceDetector( const std::string& lockFileName );
12 | ~RunningInstanceDetector();
13 |
14 | bool isAnotherInstanceRunning();
15 | void free();
16 |
17 | private:
18 | typedef uint32_t pid_type;
19 |
20 | std::shared_ptr m_handle;
21 | wxString m_path;
22 | bool m_anotherRunning;
23 |
24 | bool checkPidHasOurImageName( pid_type pid );
25 | bool writeCurrentPidToFile();
26 | };
27 |
--------------------------------------------------------------------------------
/src/service/account_picture_extractor.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 |
5 | enum class ExtractorError
6 | {
7 | OK,
8 | REG_KEY_NOT_FOUND,
9 | AVATAR_NOT_FOUND,
10 | AVATAR_FILE_UNREADABLE
11 | };
12 |
13 | class AccountPictureExtractor
14 | {
15 | public:
16 | AccountPictureExtractor();
17 | bool process();
18 | const wxImage& getLowResImage() const;
19 | const wxImage& getHighResImage() const;
20 |
21 | ExtractorError getProcessingError() const;
22 |
23 | private:
24 | static const wxString USER_KEY_NAME;
25 | static const wxString SYSTEM_KEY_NAME;
26 |
27 | ExtractorError m_error;
28 | wxImage m_loRes;
29 | wxImage m_hiRes;
30 |
31 | bool tryExtractingFromUserRegistry();
32 | bool tryExtractingFromSystemRegistry();
33 |
34 | wxString getCurrentUserSID();
35 | };
36 |
--------------------------------------------------------------------------------
/src/service/database_manager.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "database_types.hpp"
3 |
4 | #include
5 |
6 | #include
7 |
8 | #include
9 | #include
10 |
11 | namespace srv
12 | {
13 |
14 | class DatabaseManager
15 | {
16 | public:
17 | explicit DatabaseManager( const wxString& dbFile );
18 | ~DatabaseManager();
19 |
20 | bool isDatabaseAvailable();
21 |
22 | // Data query and modification functions
23 |
24 | bool addTransfer( const db::Transfer& record );
25 | bool clearAllTransfers();
26 | bool clearAllTransfersForRemote( std::string remoteId );
27 | bool deleteTransfer( int id );
28 | std::vector queryTransfers( bool queryPaths,
29 | const std::wstring targetId, const std::string conditions = "" );
30 | db::Transfer getTransfer( int id,
31 | const std::wstring targetId, bool queryPaths );
32 |
33 | bool updateTarget( const db::TargetInfo& target );
34 | std::vector queryTargets();
35 | bool removeTarget( const std::wstring& targetId );
36 | bool removeAllTargets();
37 |
38 | private:
39 | static const int TARGET_DB_VER;
40 |
41 | std::vector> m_updFunctions;
42 | std::mutex m_mutex;
43 |
44 | sqlite3* m_db;
45 | bool m_dbOpen;
46 |
47 | void setupUpdateFunctionVector();
48 | bool enforceIntegrity();
49 |
50 | void beginTransaction();
51 | bool endTransaction( int result );
52 |
53 | void queryTransferPaths( db::Transfer& record );
54 | static inline void fixEnum( int& val, const int unkVal );
55 |
56 | // Update functions
57 | void performUpdate( int currentLevel );
58 |
59 | bool updateFromVer0ToVer1();
60 | bool updateFromVer1ToVer2();
61 | bool updateFromVer2ToVer3();
62 | };
63 |
64 | };
65 |
--------------------------------------------------------------------------------
/src/service/database_types.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include
4 |
5 | namespace srv
6 | {
7 |
8 | namespace db
9 | {
10 |
11 | enum class TransferElementType
12 | {
13 | FILE,
14 | FOLDER,
15 | UNKNOWN
16 | };
17 |
18 | struct TransferElement
19 | {
20 | int id;
21 |
22 | TransferElementType elementType;
23 | std::wstring elementName; // File or folder name
24 | std::wstring relativePath; // Path relative to root of the transfer
25 | std::wstring absolutePath; // Absolute path of the element or empty
26 | };
27 |
28 | enum class TransferStatus
29 | {
30 | SUCCEEDED,
31 | CANCELLED,
32 | FAILED,
33 | UNKNOWN
34 | };
35 |
36 | enum class TransferType
37 | {
38 | SINGLE_FILE,
39 | MULTIPLE_FILES,
40 | SINGLE_DIRECTORY,
41 | MULTIPLE_DIRECTORIES,
42 | MIXED,
43 | UNFINISHED_INCOMING,
44 | UNKNOWN
45 | };
46 |
47 | struct Transfer
48 | {
49 | int id;
50 |
51 | std::wstring targetId;
52 | std::wstring singleElementName;
53 | TransferType transferType;
54 | long long transferTimestamp;
55 | int fileCount;
56 | int folderCount;
57 | long long totalSizeBytes;
58 | bool outgoing;
59 | TransferStatus status;
60 |
61 | std::vector elements;
62 | };
63 |
64 | struct TargetInfo
65 | {
66 | std::wstring targetId;
67 | std::wstring fullName;
68 | std::wstring hostname;
69 | std::wstring ip;
70 | std::wstring os;
71 | };
72 |
73 | struct TargetInfoData : public TargetInfo
74 | {
75 | long long transferCount;
76 | };
77 |
78 | };
79 |
80 | };
81 |
--------------------------------------------------------------------------------
/src/service/database_utils.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include
4 |
5 | namespace srv
6 | {
7 |
8 | enum class TimeSpec
9 | {
10 | IN_THE_FUTURE,
11 | TODAY,
12 | YESTERDAY,
13 | THIS_WEEK,
14 | LAST_WEEK,
15 | THIS_MONTH,
16 | LAST_MONTH,
17 | THIS_YEAR,
18 | LAST_YEAR,
19 | BEFORE_LAST_YEAR
20 | };
21 |
22 | class DatabaseUtils
23 | {
24 | public:
25 | DatabaseUtils() = delete; // Remove default constructor
26 | static std::string getSpecSQLCondition(
27 | const std::string fieldName, TimeSpec spec, std::time_t current = 0 );
28 |
29 | private:
30 | static const std::time_t DAY;
31 | static void setMidnight( std::tm& tim );
32 | static std::tm getWeekStart( const std::tm& tim );
33 | static std::tm getMonthStart( const std::tm& tim );
34 | static std::tm getYearStart( const std::tm& tim );
35 | };
36 |
37 | };
38 |
--------------------------------------------------------------------------------
/src/service/event.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "../settings_model.hpp"
3 | #include "../zeroconf/mdns_types.hpp"
4 |
5 | #include
6 |
7 | #include
8 |
9 | namespace zc
10 | {
11 | struct MdnsServiceData;
12 | }
13 |
14 | namespace srv
15 | {
16 |
17 | enum class EventType
18 | {
19 | STOP_SERVICE = 1,
20 | RESTART_SERVICE,
21 | REPEAT_MDNS_QUERY,
22 | HOST_ADDED,
23 | HOST_REMOVED,
24 | SHOW_TOAST_NOTIFICATION,
25 | ACCEPT_TRANSFER_CLICKED,
26 | DECLINE_TRANSFER_CLICKED,
27 | STOP_TRANSFER,
28 | REQUEST_OUTCOMING_TRANSFER,
29 | OUTCOMING_CRAWLER_SUCCEEDED,
30 | OUTCOMING_CRAWLER_FAILED
31 | };
32 |
33 | struct TransferData
34 | {
35 | std::string remoteId;
36 | int transferId;
37 | };
38 |
39 | struct OutcomingTransferData
40 | {
41 | std::string remoteId;
42 | std::vector droppedPaths;
43 | };
44 |
45 | struct CrawlerOutputData
46 | {
47 | int jobId;
48 | std::wstring rootDir;
49 | std::shared_ptr> paths;
50 | std::vector topDirBasenamesUtf8;
51 | long long totalSize;
52 | int folderCount;
53 | int fileCount;
54 | };
55 |
56 | class ToastNotification;
57 |
58 | struct Event
59 | {
60 | EventType type;
61 | struct
62 | {
63 | std::shared_ptr restartData;
64 | std::shared_ptr addedData;
65 | std::shared_ptr removedData;
66 | std::shared_ptr toastData;
67 | std::shared_ptr transferData;
68 | std::shared_ptr outcomingTransferData;
69 | int crawlerFailJobId;
70 | std::shared_ptr crawlerOutputData;
71 | } eventData;
72 | };
73 |
74 | };
75 |
--------------------------------------------------------------------------------
/src/service/file_crawler.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 | #include