From 85a4ad2c184ed915915a2fb630415a80ed9a286f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= Date: Sun, 10 Jul 2022 18:08:49 +0200 Subject: Add plain-text README. --- README | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 README (limited to 'README') diff --git a/README b/README new file mode 100644 index 0000000..d6ceca7 --- /dev/null +++ b/README @@ -0,0 +1,52 @@ + +E P I S O D E B R O W S E R +d o c u m e n t a t i o n + +Introduction +~~~~~~~~~~~~ +Episode Browser is a simple graphical program that offers an interface +to episodes of TV series stored on the local hard drive. It offers +ways of keeping track of watched and unwatched episodes, as well as +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. For an overview of the functions provided by each file, see +defs.h. In summary: + +main.c Entry point and initialization. Contains the main event handler. +listview.c Creates and handles the shared aspects of the two list views. +episodelistview.c Defines the interface to the episode list view. +datalistview.c Defines the interface to the data list view. +common.c Some useful functions that don't fit elsewhere. + +The frontend interacts with the Prolog backend via the SWI-Prolog API. +Note, however, that most interaction is done through ten or so macros, +defined in defs.h, that make the code easier to write -- and read, +once you're used to it. + +Building +~~~~~~~~ +Episode Browser is built with swipl-ld, which is installed with +SWI-Prolog. It is a wrapper around a C compiler and linker, which in +Episode Browser's case happens to be GCC. The author personally uses +the MinGW toolchain conveniently included with Strawberry Perl. -- cgit v1.2.3