aboutsummaryrefslogtreecommitdiff
path: root/calp-gnome.scm
blob: 61ef41a4093e425aa19441799f44993ab48bd1fa (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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
;;; Commentary:

;; $ calp --repl /socket -- server
;; paste this when connected to the socket.

;;; Code:

(begin

 (use-modules
  (hnh util)
  ((srfi srfi-1) :select (partition))
  (srfi srfi-41)
  (vcomponent datetime)
  (datetime)
  ((calp html view calendar shared)
   :select (fix-event-widths! x-pos width))
  )

 (define events (get-event-set (@ (vcomponent instance) global-event-object)))

 (define evs (stream->list (events-between (current-date) (date+ (current-date) (date day: 1)) events)))

 (define-values (longevs shortevs) (partition long-event? evs))

 (fix-event-widths! shortevs event-length-key: (lambda (e) (event-length/day (current-date) e)))

 

 (use-modules (gnome gtk)
              (oop goops))

 (define window (make <gtk-window> type: 'toplevel))

 (define table (gtk-table-new 1 1 #f))

 (add window table)

 (define aligns
   (map (lambda (ev)
          (define xalign (exact->inexact (x-pos ev)))
          (define yalign (/ (time->decimal-hour (as-time (prop ev 'DTSTART))) 24))
          (define xscale (exact->inexact (/ (width ev) (- 1 (x-pos ev)))))
          (define yscale (exact->inexact (/ (- 1 yalign)
                                            (/ (datetime->decimal-hour (event-length ev)) 24))))
          (define align (gtk-alignment-new xalign yalign xscale yscale))
          ;; (define event-container (make <gtk-layout>))

          ;; (put event-container
          ;;      (make <gtk-label>
          ;;        label: (prop ev 'SUMMARY)
          ;;        wrap: #t
          ;;        wrap-mode: 'word)
          ;;      0 0)
          (define event-container (make <gtk-frame> label: (prop ev 'SUMMARY)))
          (add align event-container)

          align)
        shortevs))


 (for align in aligns
      (attach table align 0 1 0 1))

 (show-all window)

 (define thr ((@ (ice-9 threads) begin-thread) (gtk-main))))