forked from fsinapsi/ffmatch
-
Notifications
You must be signed in to change notification settings - Fork 0
/
init.tin
154 lines (139 loc) · 8.15 KB
/
init.tin
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defglobal _kv _abort)
(defnet init ()
;(if (cmingw)
;then (iup-set-str-global "DEFAULTFONTSIZE" 10) )
(set _kv (assoc))
(set <_kv "da-chiudere"> (queue))
(set <_kv "zoom-level"> 0)
(init-parse-args)
(init-db)
(init-default)
(init-threads)
(set <_kv "sound-enabled"> (cfg-get-or-default "sound-enabled" <_kv "default">))
(set _abort (array default false 1)) )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defnet init-parse-args ()
(deflocal i p)
(for i in 1 .. (- (argc) 1) do
(set p (argv i))
(alt (seq (lmatch remove p "--cfg=")
(set <_kv "cfg-path"> p) )
(seq (iup-error60 undef (+ (utf8-validate p) $": invalid option"))
(exit -1) ))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defnet init-db ()
(deflocal path crea)
(set path <_kv "cfg-path">)
(if (= path undef)
then (if (cmingw)
then (set path (callpathp "ffmatch.cfg"))
else (set path (datapath))
(if (= path undef)
then (iup-error60 undef "please define the environment variable `HOME'")
(exit -2) )
(alt (pathexists path)
(mkdir path)
(seq (iup-error60 undef (+ "creation of directory `" (utf8-validate path) "' failed"))
(exit -3) ))
(inc path "ffmatch.cfg") ))
(set crea (not (pathexists path)))
(set _db (sqlite3-open path))
(if (= _db undef)
then (iup-error60 undef (+ "cannot open `" (utf8-validate path) "'"))
(exit -4) )
(set <_kv "debug-path"> (path-change-extension path "log"))
(da-chiudere _db)
(alt (not crea)
(seq (cfg-create-table)
(cfg-set "date-run-first" (now))
(iup-info60 undef (+ "the settings file was saved as `" (utf8-validate path) "'")) )
(seq (close _db)
(remove path)
(iup-error60 undef "creation of settings file failed")
(exit -5) ))
(cfg-set "cdate" (cdate))
(cfg-set "date-run-last" (now))
(cfg-inc "runs" 1)
(db-begin)
(opt (sqlite3-exec _db undef
"CREATE TABLE paths(" \
"path char unique not null," \
"name char not null)" )
(sqlite3-exec _db undef
"CREATE INDEX paths_name ON paths(name)" ))
(opt (sqlite3-exec _db undef
"CREATE TABLE projects(" \
"name char unique not null," \
"path1 char not null," \
"path2 char not null)" )
(sqlite3-exec _db undef
"CREATE INDEX projects_path1 ON projects(path1)" )
(sqlite3-exec _db undef
"CREATE INDEX projects_path2 ON projects(path2)" ))
(db-end)
(set-lang (cfg-get-lang))
(set <_kv "debug-enabled"> (= (cfg-get "debug-enabled") true)) )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defnet init-default ()
(set <_kv "default"> (assoc-default (default-parameters))) )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defnet init-threads ()
(deflocal i)
(alt (for i in (list (cons "th-clock" (netptr th-clock))
(cons "th-read-frame1" (netptr th-read-frame))
(cons "th-read-frame2" (netptr th-read-frame))
(cons "th-sound" (netptr th-sound)) ) do
(set <_kv (car i)> (thread-create (cdr i) (thread-self)))
(threadp <_kv (car i)>) )
(seq (iup-error60 undef "creation of thread failed")
(exit -6) )))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;; ;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;