Now youtubedlg stores the non-string part of the options
into settings.json. This way we only need a TwoWayOrderedDict
on the optionsframe.py module to store the options(video_format,
audio_quality, etc..) instead of using a dictionary on the parsers.py
module and a list with all the available values on the optionsframe.py
module. This change also helps us to keep all the GUI strings on the
GUI modules making it easier to translate the GUI.
NOTE
=====
Youtubedlg will reset all the stored options on the first usage of the
new system due to compatibility issues with the old settings.json.
CHANGES
=======
optionsframe.py
Store the values into a TwoWayOrderedDict and map their values-keys
on the load-save_options methods.
optionsmanager.py
Enable the value check system on the _settings_are_valid() method.
parsers.py
Remove all the module attributes and some of the options_build methods.
Re-write DownloadManager, DownloadThread(Worker) using
a custom thread pool implementation for speed. We don't
want to create a new thread for each url when the same
thread can be re-used.
Move all status messages from dlthread (DownloadThread) to
downloaders (YoutubeDLDownloader). Now all the status updates
(status, percent, eta, etc..) come from the downloader.
Rename all <Name>Panel to <Name>Tab
e.g. AudioPanel -> AudioTab
Now every Tab inherits from TabPanel class
TabPanel class contains all the methods to
create widgets, disable them, set the sizers etc
Moved almost all magic literals
(strings, numbers, etc) to class level
OtherTab:
Renamed to CMDTab
OutputTab:
Change output format pick from
checkbox to radiobutton