From 6fd66a9264731bd7ee6d7602675965021d929a4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= Date: Wed, 24 Aug 2022 15:17:08 +0200 Subject: Remove Prolog dependency. The only thing left to reimplement is the tracking of watched episodes in MPC-HC. --- README | 78 ++++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 40 insertions(+), 38 deletions(-) (limited to 'README') diff --git a/README b/README index 1be0d2c..62e0a71 100644 --- a/README +++ b/README @@ -11,50 +11,52 @@ fetching episode information from the internet. In its current form, it is designed specifically for Detective Conan. -Backend -~~~~~~~ -The fundamental features of Episode Browser, such as detecing and -keeping track of local episodes, fetching information from the -internet and interacting with the MPC-HC media player, are implemented -in Prolog (see the pl folder). - -At the time of writing, the backend implementation is tightly coupled -to the author's specific system. To be used for anything else than -episodes of Detective Conan stored in a specific folder on the hard -drive, the predicates defined in local_episodes.pl must be modified -and the program recompiled. To fetch episode information from other -sources than Detective Conan World, the episode_data.pl file must be -modified. - -Frontend -~~~~~~~~ -The graphical interface is implemented in C++ using the Win32 API (see -the c folder). The source code is spread across a small number of -files. In summary: - -main.cpp Entry point and initialization. Contains the main event handler. -listview.* Creates and handles the shared aspects of the two list views. -episodelistview.* Defines the interface to the episode list view. -datalistview.* Defines the interface to the data list view. -layout.* Handles the placement of child windows. -pl.* Interface to Prolog backend. -win.* Helpers for interacting with the Win32 API. -wcharptr.* Defines WcharPtr, a class that owns a wchar_t*. -util.h Simple utility functions. -debug.* Helpers for debugging. - -The code operates under the assumption that "raw" pointers are -non-owning -- i.e., their lifetime is managed by somebody else, such -as Windows or Prolog. When strings need to be heap-allocated, like -when converting from a narrow to a wide string, they are put within a -WcharPtr object, which manages the lifetime of the string. +Implementation +~~~~~~~~~~~~~~ +Episode Browser is implemented in C++ using the Win32 API (see the c +folder). The source code is spread across a number of files: + +>> Frontend << + +main.cpp + Entry point and initialization. Contains the main event handler. +listview.cpp,h + Defines the shared aspects of the two list views. +episodelistview.cpp,h + Defines the interface to the episode list view. +datalistview.cpp,h + Defines the interface to the data list view. +layout.cpp,h + Handles the placement of child windows. +resource.rc + Defines menu and dialog window resources. +resource.h + Defines identifiers and macros for resources. + +>> Backend << + +ext.cpp,h + Interacts with the external world (to open an episode). +data.cpp,h + Defines the underlying data representation, as well as + functions to retrieve data from Detective Conan World. + +>> Miscellanea << + +win.cpp,h + Helpers for interacting with the Win32 API. +util.h + Utility functions. +test.cpp,h + Simple test framework (work in progress). +debug.cpp,h + Helpers for debugging. Building ~~~~~~~~ Episode Browser is built with GNU Make. For the build process, the following additional programs are required: - - swipl-ld (included with SWI-Prolog) - GCC/G++ - Perl -- cgit v1.2.3