From 74a99ad3f2dff7cbe4dcd386e57b1ffe6bd2780d Mon Sep 17 00:00:00 2001 From: Stephen De Gabrielle Date: Thu, 5 Oct 2023 00:50:14 +0100 Subject: [PATCH 1/4] add register.rkt add from https://github.com/Metaxal/quickscript-extra/blob/master/register.rkt --- register.rkt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 register.rkt diff --git a/register.rkt b/register.rkt new file mode 100644 index 0000000..44794ea --- /dev/null +++ b/register.rkt @@ -0,0 +1,10 @@ +#lang racket/base +(require (for-syntax racket/base + racket/runtime-path + (only-in quickscript/library add-third-party-script-directory!))) + +;; This is going to be called during setup and will automatically +;; register quickscript-extra in quickscript's library. +(begin-for-syntax + (define-runtime-path script-dir "scripts") + (add-third-party-script-directory! script-dir)) From 418a50d6e4d6289c8586d7455e1e3dc0de73d4b0 Mon Sep 17 00:00:00 2001 From: Stephen De Gabrielle Date: Thu, 5 Oct 2023 00:51:10 +0100 Subject: [PATCH 2/4] Add files via upload --- eyes.rkt | 93 +++++++++++++++++++++++++++++++++++++++++++++++ open-terminal.rkt | 27 ++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 eyes.rkt create mode 100644 open-terminal.rkt diff --git a/eyes.rkt b/eyes.rkt new file mode 100644 index 0000000..89a24b1 --- /dev/null +++ b/eyes.rkt @@ -0,0 +1,93 @@ +#lang racket/gui +(require quickscript) + +;;; Author: Stephen De Gabrielle https://github.com/spdegabrielle +;;; License: [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) or +;;; [MIT license](http://opensource.org/licenses/MIT) at your option. +;;; From: https://github.com/Quickscript-Competiton/July2020entries/issues/7 + +(script-help-string "Eyeballs are following you.") + +(define (eye-canvas-mixin %) + (class % + (init-field (eye-diameter 100)) + (inherit refresh get-dc client->screen screen->client get-top-level-window) + (define pupil-diameter (/ eye-diameter 3)) + (define pupil-r (* 1/2 pupil-diameter)) + (define r (/ eye-diameter 2)) + + (define/override (on-paint) + ;save the state + (define dc (get-dc)) + (define pen (send dc get-pen)) + (define brush (send dc get-brush)) + (define f (get-top-level-window)) + ;; now draw the eye + (send dc set-pen "black" 1 'solid) + (send dc set-brush "white" 'solid) + (send dc draw-ellipse 0 0 eye-diameter eye-diameter) + + ;As for the magic number, the difference between + ;get-current-mouse-state and client->screen may be + ;get-display-left-top-inset. + + (define-values (not-used-x fsy) (get-display-left-top-inset)) + + + (define-values (ms l) (get-current-mouse-state)) + (define mouse-sx (round (send ms get-x))) ; screen coords + (define mouse-sy (+ fsy (round (send ms get-y)))) + (define-values (mcx mcy) (send this screen->client mouse-sx mouse-sy)) + (define-values (screen-eye-x screen-eye-y) (client->screen r r)) + (define Δx (- screen-eye-x mouse-sx)) + (define Δy (- screen-eye-y mouse-sy)) + (define mag (magnitude (make-rectangular Δx Δy))) + + (if (< mag (- r pupil-r)) + (begin + (send dc set-brush "black" 'solid) + (send dc draw-ellipse (- mcx pupil-r) (- mcy pupil-r) pupil-diameter pupil-diameter)) + (let ((direction (atan Δy Δx))) + (define pupilΔx (- (round (* (cos direction) (* r 2/3))))) + (define pupilΔy (- (round (* (sin direction) (* r 2/3))))) + (define (tocentre n) (- (+ r n) pupil-r)) + (define px (tocentre pupilΔx)) + (define py (tocentre pupilΔy)) + (send dc set-brush "black" 'solid) + (send dc draw-ellipse px py pupil-diameter pupil-diameter))) + (send dc set-pen pen) + (send dc set-brush brush) + (super on-paint)) + (super-new [style '(transparent)]))) + + +(define-script eyes + #:label "Eyes" + #:menu-path ("&Games and fun") + #:help-string "Eyeballs are following you." + #:persistent + (λ (selection) + + (define frame (new frame% [label "Eyes"] [width 80] [height 90])) + (define h (new horizontal-panel% [parent frame])) + (define c (new (eye-canvas-mixin canvas%) [parent h](eye-diameter 40))) + (define c2 (new (eye-canvas-mixin canvas%) [parent h](eye-diameter 40))) + (send frame show #t) + + (define t (new timer% + [notify-callback (λ () (send c refresh)(send c2 refresh))] + [interval 100] + [just-once? #f])) + #f)) + +(module+ main + (define frame (new frame% [label "Eyes"] [width 80] [height 90])) + (define h (new horizontal-panel% [parent frame])) + (define c (new (eye-canvas-mixin canvas%) [parent h](eye-diameter 40))) + (define c2 (new (eye-canvas-mixin canvas%) [parent h](eye-diameter 40))) + (send frame show #t) + + (define t (new timer% + [notify-callback (λ () (send c refresh)(send c2 refresh))] + [interval 100] + [just-once? #f]))) diff --git a/open-terminal.rkt b/open-terminal.rkt new file mode 100644 index 0000000..6b57233 --- /dev/null +++ b/open-terminal.rkt @@ -0,0 +1,27 @@ +#lang racket/base +(require racket/system + racket/path + quickscript) + +(script-help-string "Open a terminal in the directory of the current file.") + +(define-script open-terminal + #:label "Open terminal here" + #:menu-path ("&Utils") + #:os-types (unix macosx windows) + (λ (str #:file f) + (unless f + (set! f (current-directory))) + (define dir (path->string (path-only f))) + (case (system-type 'os) + [(unix) + (system (string-append "gnome-terminal" + " --working-directory=\"" dir "\"" + " -t \"" dir "\"" + "&"))] + [(macosx) + (system + (string-append "osascript -e 'tell app \"Terminal\" to do script \"cd \\\"" dir "\\\"\"'" ))] + [(windows) + (shell-execute #f "cmd.exe" "" dir 'sw_shownormal)]) + #false)) From a18c4a3bba77ef7f35cb5db4b2b9ab543e38f043 Mon Sep 17 00:00:00 2001 From: Stephen De Gabrielle Date: Thu, 5 Oct 2023 00:51:42 +0100 Subject: [PATCH 3/4] Rename open-terminal.rkt to scripts/open-terminal.rkt --- open-terminal.rkt => scripts/open-terminal.rkt | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename open-terminal.rkt => scripts/open-terminal.rkt (100%) diff --git a/open-terminal.rkt b/scripts/open-terminal.rkt similarity index 100% rename from open-terminal.rkt rename to scripts/open-terminal.rkt From bc3157b873475ca3cb7ca4cab013a336565b9b23 Mon Sep 17 00:00:00 2001 From: Stephen De Gabrielle Date: Thu, 5 Oct 2023 00:52:17 +0100 Subject: [PATCH 4/4] Rename eyes.rkt to scripts/eyes.rkt --- eyes.rkt => scripts/eyes.rkt | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename eyes.rkt => scripts/eyes.rkt (100%) diff --git a/eyes.rkt b/scripts/eyes.rkt similarity index 100% rename from eyes.rkt rename to scripts/eyes.rkt