aboutsummaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
authorJohn Ankarström <john@ankarstrom.se>2022-07-10 18:08:49 +0200
committerJohn Ankarström <john@ankarstrom.se>2022-07-10 18:08:49 +0200
commit85a4ad2c184ed915915a2fb630415a80ed9a286f (patch)
treee48608c341b60116b7dec01bab37809a87961f05 /README
parent5a6892cecfb33349a51466fc08c01a7d33a2dcbc (diff)
downloadEpisodeBrowser-85a4ad2c184ed915915a2fb630415a80ed9a286f.tar.gz
Add plain-text README.
Diffstat (limited to 'README')
-rw-r--r--README52
1 files changed, 52 insertions, 0 deletions
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.