aboutsummaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
authorJohn Ankarström <john@ankarstrom.se>2022-08-24 15:17:08 +0200
committerJohn Ankarström <john@ankarstrom.se>2022-08-24 15:17:33 +0200
commit6fd66a9264731bd7ee6d7602675965021d929a4a (patch)
treee94fc63efb823ad2f5c9ef6de6188da389a08d38 /README
parentff48d644a45dd71098ecb9007a41807fb37d0081 (diff)
downloadEpisodeBrowser-6fd66a9264731bd7ee6d7602675965021d929a4a.tar.gz
Remove Prolog dependency.
The only thing left to reimplement is the tracking of watched episodes in MPC-HC.
Diffstat (limited to 'README')
-rw-r--r--README78
1 files changed, 40 insertions, 38 deletions
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