aboutsummaryrefslogtreecommitdiff
path: root/README
blob: d6ceca774f05aed650c711cdf5945b6c9c12dc60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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.