Migrate chez-qt to jerboa-qt: 2 libs (jerboa-qt ffi + jerboa-qt qt), 796 FFI bindings. C bridge renamed jerboa_qt_shim.c. 26 examples updated. Qt6 detected via pkg-config. Source 2/2 transpile clean; shim build needs gerbil-qt vendor archive (libqt_shim).
ober
d779f2762b9980c459d62d12c3406e2777b83933
--- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.so *.wpo +.jerbuild-hashes --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ -# chez-qt — Chez Scheme bindings for Qt6 -# -# Depends on gerbil-qt for the C++ shim (vendor/qt_shim.h + vendor/libqt_shim.so) +JERBOA_HOME ?= $(HOME)/mine/jerboa +SCHEME ?= $(JERBOA_HOME)/.chez/bin/scheme +JERBUILD ?= $(JERBOA_HOME)/jerbuild +LIBDIRS = lib:$(JERBOA_HOME)/lib GERBIL_QT_DIR := $(HOME)/mine/gerbil-qt VENDOR_DIR := $(GERBIL_QT_DIR)/vendor @@ -8,27 +9,49 @@ VENDOR_DIR := $(GERBIL_QT_DIR)/vendor QT_CFLAGS := $(shell pkg-config --cflags Qt6Widgets 2>/dev/null) QT_LIBS := $(shell pkg-config --libs Qt6Widgets 2>/dev/null || echo "-lQt6Widgets") -CC ?= gcc -CFLAGS ?= -O2 -fPIC -Wall -SCHEME ?= scheme +CC ?= cc +CFLAGS ?= -O2 -fPIC -Wall -export CHEZ_QT_LIB := $(CURDIR) -export LD_LIBRARY_PATH := $(VENDOR_DIR):$(LD_LIBRARY_PATH) +UNAME_S := $(shell uname -s) +ifeq ($(UNAME_S),Darwin) + SHARED_FLAG = -dynamiclib + SO_EXT = .so + LD_VAR = DYLD_LIBRARY_PATH +else + SHARED_FLAG = -shared + SO_EXT = .so + LD_VAR = LD_LIBRARY_PATH +endif -.PHONY: all clean test libs +SHIM := jerboa_qt_shim$(SO_EXT) -all: qt_chez_shim.so libs +.PHONY: all build transpile test clean shim vendor-check -qt_chez_shim.so: qt_chez_shim.c $(VENDOR_DIR)/qt_shim.h - $(CC) $(CFLAGS) -I$(VENDOR_DIR) -shared -o $@ $< \ +all: build + +vendor-check: + @if [ ! -f $(VENDOR_DIR)/qt_shim.h ] || [ ! -f $(VENDOR_DIR)/libqt_shim$(SO_EXT) ]; then \ + echo "WARN: gerbil-qt vendor missing (expected $(VENDOR_DIR))."; \ + echo "WARN: skip shim build."; exit 1; \ + fi + +shim: vendor-check $(SHIM) + +$(SHIM): jerboa_qt_shim.c $(VENDOR_DIR)/qt_shim.h + $(CC) $(CFLAGS) $(SHARED_FLAG) -I$(VENDOR_DIR) -o $@ $< \ -L$(VENDOR_DIR) -lqt_shim -Wl,-rpath,$(VENDOR_DIR) $(QT_LIBS) -libs: qt_chez_shim.so - $(SCHEME) --libdirs . --compile-imported-libraries --program compile-libs.ss +transpile: + $(JERBUILD) transpile src lib --force + +build: transpile shim -test: all - QT_QPA_PLATFORM=offscreen $(SCHEME) --libdirs . --script qt-test.ss +test: build + JERBOA_QT_LIB=$(CURDIR) \ + $(LD_VAR)=$(CURDIR):$(VENDOR_DIR) \ + QT_QPA_PLATFORM=offscreen \ + $(SCHEME) --libdirs "$(LIBDIRS)" --script tests/qt-test.ss clean: - rm -f qt_chez_shim.so - rm -f chez-qt/*.so + rm -f $(SHIM) qt_chez_shim.so + rm -rf lib deleted file mode 100644 --- a/chez-qt/ffi.ss +++ /dev/null @@ -1,3314 +0,0 @@ -;;; ffi.ss — Low-level FFI bindings to Qt via qt_shim + qt_chez_shim -;;; -;;; Loads shared libraries and defines foreign-procedure bindings. -;;; The high-level API lives in qt.ss. - -(library (chez-qt ffi) - (export - ;; Callback registration (called once at init) - ffi-set-void-callback ffi-set-string-callback - ffi-set-int-callback ffi-set-bool-callback - - ;; Application lifecycle - ffi-qt-app-create ffi-qt-app-exec ffi-qt-app-quit - ffi-qt-app-process-events ffi-qt-app-destroy ffi-qt-app-is-running - - ;; Widget base - ffi-qt-widget-create ffi-qt-widget-show ffi-qt-widget-hide - ffi-qt-widget-close ffi-qt-widget-set-enabled ffi-qt-widget-is-enabled - ffi-qt-widget-set-visible ffi-qt-widget-is-visible - ffi-qt-widget-set-updates-enabled ffi-qt-widget-set-attribute - ffi-qt-send-key-event - ffi-qt-widget-set-fixed-size ffi-qt-widget-set-minimum-size - ffi-qt-widget-set-maximum-size - ffi-qt-widget-set-minimum-width ffi-qt-widget-set-minimum-height - ffi-qt-widget-set-maximum-width ffi-qt-widget-set-maximum-height - ffi-qt-widget-set-cursor ffi-qt-widget-unset-cursor - ffi-qt-widget-resize ffi-qt-widget-set-style-sheet - ffi-qt-widget-set-tooltip ffi-qt-widget-set-font-size - ffi-qt-widget-destroy - - ;; Main Window - ffi-qt-main-window-create ffi-qt-main-window-set-title - ffi-qt-main-window-set-central-widget - - ;; Layouts - ffi-qt-vbox-layout-create ffi-qt-hbox-layout-create - ffi-qt-layout-add-widget ffi-qt-layout-add-stretch - ffi-qt-layout-set-spacing ffi-qt-layout-set-margins - - ;; Labels - ffi-qt-label-create ffi-qt-label-set-text ffi-qt-label-text - ffi-qt-label-set-alignment ffi-qt-label-set-word-wrap - - ;; Push Button - ffi-qt-push-button-create ffi-qt-push-button-set-text - ffi-qt-push-button-text ffi-qt-push-button-on-clicked - - ;; Line Edit - ffi-qt-line-edit-create ffi-qt-line-edit-set-text ffi-qt-line-edit-text - ffi-qt-line-edit-set-placeholder ffi-qt-line-edit-set-read-only - ffi-qt-line-edit-set-echo-mode - ffi-qt-line-edit-on-text-changed ffi-qt-line-edit-on-return-pressed - - ;; Check Box - ffi-qt-check-box-create ffi-qt-check-box-set-text - ffi-qt-check-box-set-checked ffi-qt-check-box-is-checked - ffi-qt-check-box-on-toggled - - ;; Combo Box - ffi-qt-combo-box-create ffi-qt-combo-box-add-item - ffi-qt-combo-box-set-current-index ffi-qt-combo-box-current-index - ffi-qt-combo-box-current-text ffi-qt-combo-box-count - ffi-qt-combo-box-clear ffi-qt-combo-box-on-current-index-changed - - ;; Text Edit - ffi-qt-text-edit-create ffi-qt-text-edit-set-text ffi-qt-text-edit-text - ffi-qt-text-edit-set-placeholder ffi-qt-text-edit-set-read-only - ffi-qt-text-edit-append ffi-qt-text-edit-clear - ffi-qt-text-edit-scroll-to-bottom ffi-qt-text-edit-html - ffi-qt-text-edit-on-text-changed - - ;; Spin Box - ffi-qt-spin-box-create ffi-qt-spin-box-set-value ffi-qt-spin-box-value - ffi-qt-spin-box-set-range ffi-qt-spin-box-set-single-step - ffi-qt-spin-box-set-prefix ffi-qt-spin-box-set-suffix - ffi-qt-spin-box-on-value-changed - - ;; Dialog - ffi-qt-dialog-create ffi-qt-dialog-exec ffi-qt-dialog-accept - ffi-qt-dialog-reject ffi-qt-dialog-set-title - - ;; Message Box - ffi-qt-message-box-information ffi-qt-message-box-warning - ffi-qt-message-box-question ffi-qt-message-box-critical - - ;; File Dialog - ffi-qt-file-dialog-open-file ffi-qt-file-dialog-save-file - ffi-qt-file-dialog-open-directory - - ;; Menu Bar - ffi-qt-main-window-menu-bar - - ;; Menu - ffi-qt-menu-bar-add-menu ffi-qt-menu-add-menu - ffi-qt-menu-add-action ffi-qt-menu-add-separator - - ;; Action - ffi-qt-action-create ffi-qt-action-set-text ffi-qt-action-text - ffi-qt-action-set-shortcut ffi-qt-action-set-enabled ffi-qt-action-is-enabled - ffi-qt-action-set-checkable ffi-qt-action-is-checkable - ffi-qt-action-set-checked ffi-qt-action-is-checked - ffi-qt-action-set-tooltip ffi-qt-action-set-status-tip - ffi-qt-action-on-triggered ffi-qt-action-on-toggled - - ;; Toolbar - ffi-qt-toolbar-create ffi-qt-main-window-add-toolbar - ffi-qt-toolbar-add-action ffi-qt-toolbar-add-separator - ffi-qt-toolbar-add-widget ffi-qt-toolbar-set-movable - ffi-qt-toolbar-set-icon-size - - ;; Status Bar - ffi-qt-main-window-set-status-bar-text - - ;; Grid Layout - ffi-qt-grid-layout-create ffi-qt-grid-layout-add-widget - ffi-qt-grid-layout-set-row-stretch ffi-qt-grid-layout-set-column-stretch - ffi-qt-grid-layout-set-row-minimum-height - ffi-qt-grid-layout-set-column-minimum-width - - ;; Timer - ffi-qt-timer-create ffi-qt-timer-start ffi-qt-timer-stop - ffi-qt-timer-set-single-shot ffi-qt-timer-is-active - ffi-qt-timer-interval ffi-qt-timer-set-interval - ffi-qt-timer-on-timeout ffi-qt-timer-single-shot - ffi-qt-timer-destroy - - ;; Clipboard - ffi-qt-clipboard-text ffi-qt-clipboard-set-text - ffi-qt-clipboard-on-changed - - ;; Tree Widget - ffi-qt-tree-widget-create ffi-qt-tree-widget-set-column-count - ffi-qt-tree-widget-column-count ffi-qt-tree-widget-set-header-label - ffi-qt-tree-widget-set-header-item-text - ffi-qt-tree-widget-add-top-level-item ffi-qt-tree-widget-top-level-item-count - ffi-qt-tree-widget-top-level-item ffi-qt-tree-widget-current-item - ffi-qt-tree-widget-set-current-item - ffi-qt-tree-widget-expand-item ffi-qt-tree-widget-collapse-item - ffi-qt-tree-widget-expand-all ffi-qt-tree-widget-collapse-all - ffi-qt-tree-widget-clear - ffi-qt-tree-widget-on-current-item-changed - ffi-qt-tree-widget-on-item-double-clicked - ffi-qt-tree-widget-on-item-expanded ffi-qt-tree-widget-on-item-collapsed - - ;; Tree Widget Item - ffi-qt-tree-item-create ffi-qt-tree-item-set-text ffi-qt-tree-item-text - ffi-qt-tree-item-add-child ffi-qt-tree-item-child-count - ffi-qt-tree-item-child ffi-qt-tree-item-parent - ffi-qt-tree-item-set-expanded ffi-qt-tree-item-is-expanded - - ;; List Widget - ffi-qt-list-widget-create ffi-qt-list-widget-add-item - ffi-qt-list-widget-insert-item ffi-qt-list-widget-remove-item - ffi-qt-list-widget-current-row ffi-qt-list-widget-set-current-row - ffi-qt-list-widget-item-text ffi-qt-list-widget-count - ffi-qt-list-widget-clear - ffi-qt-list-widget-set-item-data ffi-qt-list-widget-item-data - ffi-qt-list-widget-on-current-row-changed - ffi-qt-list-widget-on-item-double-clicked - - ;; Table Widget - ffi-qt-table-widget-create ffi-qt-table-widget-set-item - ffi-qt-table-widget-item-text - ffi-qt-table-widget-set-horizontal-header-item - ffi-qt-table-widget-set-vertical-header-item - ffi-qt-table-widget-set-row-count ffi-qt-table-widget-set-column-count - ffi-qt-table-widget-row-count ffi-qt-table-widget-column-count - ffi-qt-table-widget-current-row ffi-qt-table-widget-current-column - ffi-qt-table-widget-clear ffi-qt-table-widget-on-cell-clicked - - ;; Tab Widget - ffi-qt-tab-widget-create ffi-qt-tab-widget-add-tab - ffi-qt-tab-widget-set-current-index ffi-qt-tab-widget-current-index - ffi-qt-tab-widget-count ffi-qt-tab-widget-set-tab-text - ffi-qt-tab-widget-on-current-changed - - ;; Progress Bar - ffi-qt-progress-bar-create ffi-qt-progress-bar-set-value - ffi-qt-progress-bar-value ffi-qt-progress-bar-set-range - ffi-qt-progress-bar-set-format - - ;; Slider - ffi-qt-slider-create ffi-qt-slider-set-value ffi-qt-slider-value - ffi-qt-slider-set-range ffi-qt-slider-set-single-step - ffi-qt-slider-set-tick-interval ffi-qt-slider-set-tick-position - ffi-qt-slider-on-value-changed - - ;; Window State - ffi-qt-widget-show-minimized ffi-qt-widget-show-maximized - ffi-qt-widget-show-fullscreen ffi-qt-widget-show-normal - ffi-qt-widget-window-state ffi-qt-widget-move - ffi-qt-widget-x ffi-qt-widget-y ffi-qt-widget-width ffi-qt-widget-height - ffi-qt-widget-set-focus - - ;; App Style Sheet - ffi-qt-app-set-style-sheet - - ;; Scroll Area - ffi-qt-scroll-area-create ffi-qt-scroll-area-set-widget - ffi-qt-scroll-area-set-widget-resizable - ffi-qt-scroll-area-set-horizontal-scrollbar-policy - ffi-qt-scroll-area-set-vertical-scrollbar-policy - - ;; Splitter - ffi-qt-splitter-create ffi-qt-splitter-add-widget - ffi-qt-splitter-insert-widget ffi-qt-splitter-index-of - ffi-qt-splitter-widget ffi-qt-splitter-count - ffi-qt-splitter-set-sizes-2 ffi-qt-splitter-set-sizes-3 ffi-qt-splitter-set-sizes-4 ffi-qt-splitter-size-at - ffi-qt-splitter-set-stretch-factor ffi-qt-splitter-set-handle-width - ffi-qt-splitter-set-collapsible ffi-qt-splitter-is-collapsible - ffi-qt-splitter-set-orientation - - ;; Keyboard Events - ffi-qt-install-key-handler ffi-qt-install-key-handler-consuming - ffi-qt-last-key-code ffi-qt-last-key-modifiers ffi-qt-last-key-text - ffi-qt-last-key-autorepeat - - ;; Pixmap - ffi-qt-pixmap-load ffi-qt-pixmap-width ffi-qt-pixmap-height - ffi-qt-pixmap-is-null ffi-qt-pixmap-scaled ffi-qt-pixmap-destroy - ffi-qt-pixmap-save ffi-qt-widget-grab - ffi-qt-label-set-pixmap - - ;; Icon - ffi-qt-icon-create ffi-qt-icon-create-from-pixmap - ffi-qt-icon-is-null ffi-qt-icon-destroy - ffi-qt-push-button-set-icon ffi-qt-action-set-icon - ffi-qt-widget-set-window-icon - - ;; Radio Button - ffi-qt-radio-button-create ffi-qt-radio-button-text - ffi-qt-radio-button-set-text - ffi-qt-radio-button-is-checked ffi-qt-radio-button-set-checked - ffi-qt-radio-button-on-toggled - - ;; Button Group - ffi-qt-button-group-create ffi-qt-button-group-add-button - ffi-qt-button-group-remove-button ffi-qt-button-group-checked-id - ffi-qt-button-group-set-exclusive ffi-qt-button-group-is-exclusive - ffi-qt-button-group-on-clicked ffi-qt-button-group-destroy - - ;; Group Box - ffi-qt-group-box-create ffi-qt-group-box-title - ffi-qt-group-box-set-title - ffi-qt-group-box-set-checkable ffi-qt-group-box-is-checkable - ffi-qt-group-box-set-checked ffi-qt-group-box-is-checked - ffi-qt-group-box-on-toggled - - ;; Font - ffi-qt-font-create ffi-qt-font-family ffi-qt-font-point-size - ffi-qt-font-is-bold ffi-qt-font-set-bold - ffi-qt-font-is-italic ffi-qt-font-set-italic - ffi-qt-font-destroy ffi-qt-widget-set-font ffi-qt-widget-font - - ;; Color - ffi-qt-color-create ffi-qt-color-create-name - ffi-qt-color-red ffi-qt-color-green ffi-qt-color-blue ffi-qt-color-alpha - ffi-qt-color-name ffi-qt-color-is-valid ffi-qt-color-destroy - - ;; Constants - ffi-qt-const-align-left ffi-qt-const-align-right ffi-qt-const-align-center - ffi-qt-const-align-top ffi-qt-const-align-bottom - ffi-qt-const-echo-normal ffi-qt-const-echo-no-echo - ffi-qt-const-echo-password ffi-qt-const-echo-password-on-edit - ffi-qt-const-horizontal ffi-qt-const-vertical - ffi-qt-const-ticks-none ffi-qt-const-ticks-above - ffi-qt-const-ticks-below ffi-qt-const-ticks-both-sides - ffi-qt-const-window-no-state ffi-qt-const-window-minimized - ffi-qt-const-window-maximized ffi-qt-const-window-full-screen - ffi-qt-const-scrollbar-as-needed ffi-qt-const-scrollbar-always-off - ffi-qt-const-scrollbar-always-on - ffi-qt-const-cursor-arrow ffi-qt-const-cursor-cross - ffi-qt-const-cursor-wait ffi-qt-const-cursor-ibeam - ffi-qt-const-cursor-pointing-hand ffi-qt-const-cursor-forbidden - ffi-qt-const-cursor-busy - - ;; Frame constants - ffi-qt-const-frame-no-frame ffi-qt-const-frame-box ffi-qt-const-frame-panel - ffi-qt-const-frame-win-panel ffi-qt-const-frame-hline ffi-qt-const-frame-vline - ffi-qt-const-frame-styled-panel - ffi-qt-const-frame-plain ffi-qt-const-frame-raised ffi-qt-const-frame-sunken - - ;; Button box constants - ffi-qt-const-button-ok ffi-qt-const-button-cancel ffi-qt-const-button-apply - ffi-qt-const-button-close ffi-qt-const-button-yes ffi-qt-const-button-no - ffi-qt-const-button-reset ffi-qt-const-button-help ffi-qt-const-button-save - ffi-qt-const-button-discard - ffi-qt-const-button-role-invalid ffi-qt-const-button-role-accept - ffi-qt-const-button-role-reject ffi-qt-const-button-role-destructive - ffi-qt-const-button-role-action ffi-qt-const-button-role-help - ffi-qt-const-button-role-yes ffi-qt-const-button-role-no - ffi-qt-const-button-role-apply ffi-qt-const-button-role-reset - - ;; Day-of-week constants - ffi-qt-const-monday ffi-qt-const-tuesday ffi-qt-const-wednesday - ffi-qt-const-thursday ffi-qt-const-friday ffi-qt-const-saturday ffi-qt-const-sunday - - ;; Settings constants - ffi-qt-const-settings-native ffi-qt-const-settings-ini - - ;; Completer constants - ffi-qt-const-completer-popup ffi-qt-const-completer-inline - ffi-qt-const-completer-unfiltered-popup - - ;; Case sensitivity - ffi-qt-const-case-insensitive ffi-qt-const-case-sensitive - - ;; Match filter mode - ffi-qt-const-match-starts-with ffi-qt-const-match-contains - ffi-qt-const-match-ends-with - - ;; Validator state - ffi-qt-const-validator-invalid ffi-qt-const-validator-intermediate - ffi-qt-const-validator-acceptable - - ;; PlainTextEdit wrap - ffi-qt-const-plain-no-wrap ffi-qt-const-plain-widget-wrap - - ;; ToolButton constants - ffi-qt-const-delayed-popup ffi-qt-const-menu-button-popup ffi-qt-const-instant-popup - ffi-qt-const-no-arrow ffi-qt-const-up-arrow ffi-qt-const-down-arrow - ffi-qt-const-left-arrow ffi-qt-const-right-arrow - ffi-qt-const-tool-button-icon-only ffi-qt-const-tool-button-text-only - ffi-qt-const-tool-button-text-beside-icon ffi-qt-const-tool-button-text-under-icon - - ;; Size policy - ffi-qt-const-size-fixed ffi-qt-const-size-minimum ffi-qt-const-size-minimum-expanding - ffi-qt-const-size-maximum ffi-qt-const-size-preferred ffi-qt-const-size-expanding - ffi-qt-const-size-ignored - - ;; Graphics constants - ffi-qt-const-item-movable ffi-qt-const-item-selectable ffi-qt-const-item-focusable - ffi-qt-const-drag-none ffi-qt-const-drag-scroll ffi-qt-const-drag-rubber-band - ffi-qt-const-render-antialiasing ffi-qt-const-render-smooth-pixmap - ffi-qt-const-render-text-antialiasing - - ;; Process state - ffi-qt-const-process-not-running ffi-qt-const-process-starting - ffi-qt-const-process-running - - ;; MDI view mode - ffi-qt-const-mdi-subwindow ffi-qt-const-mdi-tabbed - - ;; LCD constants - ffi-qt-const-lcd-dec ffi-qt-const-lcd-hex ffi-qt-const-lcd-oct ffi-qt-const-lcd-bin - ffi-qt-const-lcd-outline ffi-qt-const-lcd-filled ffi-qt-const-lcd-flat - - ;; Dir filter flags - ffi-qt-const-dir-dirs ffi-qt-const-dir-files ffi-qt-const-dir-hidden - ffi-qt-const-dir-no-dot-and-dot-dot - - ;; Cursor movement - ffi-qt-const-cursor-no-move ffi-qt-const-cursor-start ffi-qt-const-cursor-up - ffi-qt-const-cursor-start-of-line ffi-qt-const-cursor-start-of-block - ffi-qt-const-cursor-previous-char ffi-qt-const-cursor-previous-block - ffi-qt-const-cursor-end-of-line ffi-qt-const-cursor-end-of-block - ffi-qt-const-cursor-next-char ffi-qt-const-cursor-next-block - ffi-qt-const-cursor-end ffi-qt-const-cursor-down - ffi-qt-const-cursor-left ffi-qt-const-cursor-word-left - ffi-qt-const-cursor-next-word ffi-qt-const-cursor-right - ffi-qt-const-cursor-word-right ffi-qt-const-cursor-previous-word - ffi-qt-const-move-anchor ffi-qt-const-keep-anchor - - ;; Find flags - ffi-qt-const-find-backward ffi-qt-const-find-case-sensitive - ffi-qt-const-find-whole-words - - ;; Dock area - ffi-qt-const-dock-left ffi-qt-const-dock-right - ffi-qt-const-dock-top ffi-qt-const-dock-bottom - - ;; Tray icon message type - ffi-qt-const-tray-no-icon ffi-qt-const-tray-information - ffi-qt-const-tray-warning ffi-qt-const-tray-critical - - ;; Key constants - ffi-qt-const-key-escape ffi-qt-const-key-tab ffi-qt-const-key-backtab - ffi-qt-const-key-backspace ffi-qt-const-key-return ffi-qt-const-key-enter - ffi-qt-const-key-insert ffi-qt-const-key-delete ffi-qt-const-key-pause - ffi-qt-const-key-home ffi-qt-const-key-end - ffi-qt-const-key-left ffi-qt-const-key-up ffi-qt-const-key-right ffi-qt-const-key-down - ffi-qt-const-key-page-up ffi-qt-const-key-page-down - ffi-qt-const-key-f1 ffi-qt-const-key-f2 ffi-qt-const-key-f3 ffi-qt-const-key-f4 - ffi-qt-const-key-f5 ffi-qt-const-key-f6 ffi-qt-const-key-f7 ffi-qt-const-key-f8 - ffi-qt-const-key-f9 ffi-qt-const-key-f10 ffi-qt-const-key-f11 ffi-qt-const-key-f12 - ffi-qt-const-key-space - - ;; Keyboard modifiers - ffi-qt-const-mod-none ffi-qt-const-mod-shift ffi-qt-const-mod-control - ffi-qt-const-mod-alt ffi-qt-const-mod-meta - - ;; Selection mode/behavior - ffi-qt-const-select-no-selection ffi-qt-const-select-single - ffi-qt-const-select-multi ffi-qt-const-select-extended ffi-qt-const-select-contiguous - ffi-qt-const-select-items ffi-qt-const-select-rows ffi-qt-const-select-columns - - ;; Edit triggers - ffi-qt-const-no-edit-triggers ffi-qt-const-edit-double-click - ffi-qt-const-edit-selected-click ffi-qt-const-edit-any-key-pressed - ffi-qt-const-edit-all-triggers - - ;; Sort order - ffi-qt-const-sort-ascending ffi-qt-const-sort-descending - - ;; Header resize mode - ffi-qt-const-header-interactive ffi-qt-const-header-stretch - ffi-qt-const-header-fixed ffi-qt-const-header-resize-to-contents - - ;; Check state - ffi-qt-const-unchecked ffi-qt-const-partially-checked ffi-qt-const-checked - - ;; ListView flow - ffi-qt-const-flow-top-to-bottom ffi-qt-const-flow-left-to-right - - ;; Font Dialog / Color Dialog - ffi-qt-font-dialog-get-font ffi-qt-color-dialog-get-color - - ;; Stacked Widget - ffi-qt-stacked-widget-create ffi-qt-stacked-widget-add-widget - ffi-qt-stacked-widget-set-current-index ffi-qt-stacked-widget-current-index - ffi-qt-stacked-widget-count ffi-qt-stacked-widget-on-current-changed - - ;; Dock Widget - ffi-qt-dock-widget-create ffi-qt-dock-widget-set-widget - ffi-qt-dock-widget-widget ffi-qt-dock-widget-set-title ffi-qt-dock-widget-title - ffi-qt-dock-widget-set-floating ffi-qt-dock-widget-is-floating - ffi-qt-main-window-add-dock-widget - - ;; System Tray Icon - ffi-qt-system-tray-icon-create ffi-qt-system-tray-icon-set-tooltip - ffi-qt-system-tray-icon-set-icon ffi-qt-system-tray-icon-show - ffi-qt-system-tray-icon-hide ffi-qt-system-tray-icon-show-message - ffi-qt-system-tray-icon-set-context-menu - ffi-qt-system-tray-icon-on-activated - ffi-qt-system-tray-icon-is-available ffi-qt-system-tray-icon-destroy - - ;; QPainter - ffi-qt-pixmap-create-blank ffi-qt-pixmap-fill - ffi-qt-painter-create ffi-qt-painter-end ffi-qt-painter-destroy - ffi-qt-painter-set-pen-color ffi-qt-painter-set-pen-width - ffi-qt-painter-set-brush-color ffi-qt-painter-set-font-painter - ffi-qt-painter-set-antialiasing - ffi-qt-painter-draw-line ffi-qt-painter-draw-rect ffi-qt-painter-fill-rect - ffi-qt-painter-draw-ellipse ffi-qt-painter-draw-text ffi-qt-painter-draw-text-rect - ffi-qt-painter-draw-pixmap ffi-qt-painter-draw-point ffi-qt-painter-draw-arc - ffi-qt-painter-save ffi-qt-painter-restore - ffi-qt-painter-translate ffi-qt-painter-rotate ffi-qt-painter-scale - - ;; Drag and Drop - ffi-qt-widget-set-accept-drops - ffi-qt-drop-filter-install ffi-qt-drop-filter-last-text - ffi-qt-drop-filter-destroy ffi-qt-drag-text - - ;; Double Spin Box - ffi-qt-double-spin-box-create ffi-qt-double-spin-box-set-value - ffi-qt-double-spin-box-value ffi-qt-double-spin-box-set-range - ffi-qt-double-spin-box-set-single-step ffi-qt-double-spin-box-set-decimals - ffi-qt-double-spin-box-decimals ffi-qt-double-spin-box-set-prefix - ffi-qt-double-spin-box-set-suffix ffi-qt-double-spin-box-on-value-changed - - ;; Date Edit - ffi-qt-date-edit-create ffi-qt-date-edit-set-date - ffi-qt-date-edit-year ffi-qt-date-edit-month ffi-qt-date-edit-day - ffi-qt-date-edit-date-string ffi-qt-date-edit-set-minimum-date - ffi-qt-date-edit-set-maximum-date ffi-qt-date-edit-set-calendar-popup - ffi-qt-date-edit-set-display-format ffi-qt-date-edit-on-date-changed - - ;; Time Edit - ffi-qt-time-edit-create ffi-qt-time-edit-set-time - ffi-qt-time-edit-hour ffi-qt-time-edit-minute ffi-qt-time-edit-second - ffi-qt-time-edit-time-string ffi-qt-time-edit-set-display-format - ffi-qt-time-edit-on-time-changed - - ;; Frame - ffi-qt-frame-create ffi-qt-frame-set-frame-shape ffi-qt-frame-frame-shape - ffi-qt-frame-set-frame-shadow ffi-qt-frame-frame-shadow - ffi-qt-frame-set-line-width ffi-qt-frame-line-width ffi-qt-frame-set-mid-line-width - - ;; Progress Dialog - ffi-qt-progress-dialog-create ffi-qt-progress-dialog-set-value - ffi-qt-progress-dialog-value ffi-qt-progress-dialog-set-range - ffi-qt-progress-dialog-set-label-text ffi-qt-progress-dialog-was-canceled - ffi-qt-progress-dialog-set-minimum-duration - ffi-qt-progress-dialog-set-auto-close ffi-qt-progress-dialog-set-auto-reset - ffi-qt-progress-dialog-reset ffi-qt-progress-dialog-on-canceled - - ;; Input Dialog - ffi-qt-input-dialog-get-text ffi-qt-input-dialog-get-int - ffi-qt-input-dialog-get-double ffi-qt-input-dialog-get-item - ffi-qt-input-dialog-was-accepted - - ;; Form Layout - ffi-qt-form-layout-create ffi-qt-form-layout-add-row - ffi-qt-form-layout-add-row-widget ffi-qt-form-layout-add-spanning-widget - ffi-qt-form-layout-row-count - - ;; Shortcut - ffi-qt-shortcut-create ffi-qt-shortcut-set-key - ffi-qt-shortcut-set-enabled ffi-qt-shortcut-is-enabled - ffi-qt-shortcut-on-activated ffi-qt-shortcut-destroy - - ;; Text Browser - ffi-qt-text-browser-create ffi-qt-text-browser-set-html - ffi-qt-text-browser-set-plain-text ffi-qt-text-browser-plain-text - ffi-qt-text-browser-set-open-external-links - ffi-qt-text-browser-set-source ffi-qt-text-browser-source - ffi-qt-text-browser-scroll-to-bottom ffi-qt-text-browser-append - ffi-qt-text-browser-html ffi-qt-text-browser-on-anchor-clicked - - ;; Button Box - ffi-qt-button-box-create ffi-qt-button-box-button - ffi-qt-button-box-add-button - ffi-qt-button-box-on-accepted ffi-qt-button-box-on-rejected - ffi-qt-button-box-on-clicked - - ;; Calendar - ffi-qt-calendar-create ffi-qt-calendar-set-selected-date - ffi-qt-calendar-selected-year ffi-qt-calendar-selected-month - ffi-qt-calendar-selected-day ffi-qt-calendar-selected-date-string - ffi-qt-calendar-set-minimum-date ffi-qt-calendar-set-maximum-date - ffi-qt-calendar-set-first-day-of-week ffi-qt-calendar-set-grid-visible - ffi-qt-calendar-is-grid-visible ffi-qt-calendar-set-navigation-bar-visible - ffi-qt-calendar-on-selection-changed ffi-qt-calendar-on-clicked - - ;; QSettings - ffi-qt-settings-create ffi-qt-settings-create-file - ffi-qt-settings-set-string ffi-qt-settings-value-string - ffi-qt-settings-set-int ffi-qt-settings-value-int - ffi-qt-settings-set-double ffi-qt-settings-value-double - ffi-qt-settings-set-bool ffi-qt-settings-value-bool - ffi-qt-settings-contains ffi-qt-settings-remove - ffi-qt-settings-all-keys ffi-qt-settings-child-keys ffi-qt-settings-child-groups - ffi-qt-settings-begin-group ffi-qt-settings-end-group ffi-qt-settings-group - ffi-qt-settings-sync ffi-qt-settings-clear - ffi-qt-settings-file-name ffi-qt-settings-is-writable ffi-qt-settings-destroy - - ;; QCompleter - ffi-qt-completer-create ffi-qt-completer-set-model-strings - ffi-qt-completer-set-case-sensitivity ffi-qt-completer-set-completion-mode - ffi-qt-completer-set-filter-mode ffi-qt-completer-set-max-visible-items - ffi-qt-completer-completion-count ffi-qt-completer-current-completion - ffi-qt-completer-set-completion-prefix - ffi-qt-completer-on-activated - ffi-qt-line-edit-set-completer ffi-qt-completer-destroy - - ;; Tooltip / WhatsThis - ffi-qt-tooltip-show-text ffi-qt-tooltip-hide-text ffi-qt-tooltip-is-visible - ffi-qt-widget-tooltip ffi-qt-widget-set-whats-this ffi-qt-widget-whats-this - - ;; QStandardItemModel - ffi-qt-standard-model-create ffi-qt-standard-model-destroy - ffi-qt-standard-model-row-count ffi-qt-standard-model-column-count - ffi-qt-standard-model-set-row-count ffi-qt-standard-model-set-column-count - ffi-qt-standard-model-set-item ffi-qt-standard-model-item - ffi-qt-standard-model-insert-row ffi-qt-standard-model-insert-column - ffi-qt-standard-model-remove-row ffi-qt-standard-model-remove-column - ffi-qt-standard-model-clear - ffi-qt-standard-model-set-horizontal-header - ffi-qt-standard-model-set-vertical-header - - ;; QStandardItem - ffi-qt-standard-item-create ffi-qt-standard-item-text - ffi-qt-standard-item-set-text - ffi-qt-standard-item-tooltip ffi-qt-standard-item-set-tooltip - ffi-qt-standard-item-set-editable ffi-qt-standard-item-is-editable - ffi-qt-standard-item-set-enabled ffi-qt-standard-item-is-enabled - ffi-qt-standard-item-set-selectable ffi-qt-standard-item-is-selectable - ffi-qt-standard-item-set-checkable ffi-qt-standard-item-is-checkable - ffi-qt-standard-item-set-check-state ffi-qt-standard-item-check-state - ffi-qt-standard-item-set-icon - ffi-qt-standard-item-append-row ffi-qt-standard-item-row-count - ffi-qt-standard-item-column-count ffi-qt-standard-item-child - - ;; QStringListModel - ffi-qt-string-list-model-create ffi-qt-string-list-model-destroy - ffi-qt-string-list-model-set-strings ffi-qt-string-list-model-strings - ffi-qt-string-list-model-row-count - - ;; Views (common) - ffi-qt-view-set-model ffi-qt-view-set-selection-mode - ffi-qt-view-set-selection-behavior ffi-qt-view-set-alternating-row-colors - ffi-qt-view-set-sorting-enabled ffi-qt-view-set-edit-triggers - - ;; QListView - ffi-qt-list-view-create ffi-qt-list-view-set-flow - - ;; QTableView - ffi-qt-table-view-create ffi-qt-table-view-set-column-width - ffi-qt-table-view-set-row-height - ffi-qt-table-view-hide-column ffi-qt-table-view-show-column - ffi-qt-table-view-hide-row ffi-qt-table-view-show-row - ffi-qt-table-view-resize-columns-to-contents - ffi-qt-table-view-resize-rows-to-contents - - ;; QTreeView - ffi-qt-tree-view-create ffi-qt-tree-view-expand-all ffi-qt-tree-view-collapse-all - ffi-qt-tree-view-set-indentation ffi-qt-tree-view-indentation - ffi-qt-tree-view-set-root-is-decorated ffi-qt-tree-view-set-header-hidden - ffi-qt-tree-view-set-column-width - - ;; QHeaderView (via view) - ffi-qt-view-header-set-stretch-last-section - ffi-qt-view-header-set-section-resize-mode - ffi-qt-view-header-hide ffi-qt-view-header-show - ffi-qt-view-header-set-default-section-size - - ;; QSortFilterProxyModel - ffi-qt-sort-filter-proxy-create ffi-qt-sort-filter-proxy-destroy - ffi-qt-sort-filter-proxy-set-source-model - ffi-qt-sort-filter-proxy-set-filter-regex - ffi-qt-sort-filter-proxy-set-filter-column - ffi-qt-sort-filter-proxy-set-filter-case-sensitivity - ffi-qt-sort-filter-proxy-set-filter-role - ffi-qt-sort-filter-proxy-sort ffi-qt-sort-filter-proxy-set-sort-role - ffi-qt-sort-filter-proxy-set-dynamic-sort-filter - ffi-qt-sort-filter-proxy-invalidate-filter - ffi-qt-sort-filter-proxy-row-count - - ;; View signals + selection - ffi-qt-view-on-clicked ffi-qt-view-on-double-clicked - ffi-qt-view-on-activated ffi-qt-view-on-selection-changed - ffi-qt-view-last-clicked-row ffi-qt-view-last-clicked-col - ffi-qt-view-selected-rows ffi-qt-view-current-row - - ;; Validators - ffi-qt-int-validator-create ffi-qt-double-validator-create - ffi-qt-regex-validator-create ffi-qt-validator-destroy - ffi-qt-validator-validate ffi-qt-line-edit-set-validator - ffi-qt-line-edit-has-acceptable-input - - ;; QPlainTextEdit - ffi-qt-plain-text-edit-create ffi-qt-plain-text-edit-set-text - ffi-qt-plain-text-edit-text ffi-qt-plain-text-edit-append - ffi-qt-plain-text-edit-clear ffi-qt-plain-text-edit-set-read-only - ffi-qt-plain-text-edit-is-read-only ffi-qt-plain-text-edit-set-placeholder - ffi-qt-plain-text-edit-line-count ffi-qt-plain-text-edit-set-max-block-count - ffi-qt-plain-text-edit-cursor-line ffi-qt-plain-text-edit-cursor-column - ffi-qt-plain-text-edit-set-line-wrap - ffi-qt-plain-text-edit-on-text-changed - ;; Editor extensions - ffi-qt-plain-text-edit-cursor-position ffi-qt-plain-text-edit-set-cursor-position - ffi-qt-plain-text-edit-move-cursor - ffi-qt-plain-text-edit-select-all ffi-qt-plain-text-edit-selected-text - ffi-qt-plain-text-edit-selection-start ffi-qt-plain-text-edit-selection-end - ffi-qt-plain-text-edit-set-selection ffi-qt-plain-text-edit-has-selection - ffi-qt-plain-text-edit-insert-text ffi-qt-plain-text-edit-remove-selected-text - ffi-qt-plain-text-edit-undo ffi-qt-plain-text-edit-redo - ffi-qt-plain-text-edit-can-undo - ffi-qt-plain-text-edit-cut ffi-qt-plain-text-edit-copy ffi-qt-plain-text-edit-paste - ffi-qt-plain-text-edit-text-length ffi-qt-plain-text-edit-text-range - ffi-qt-plain-text-edit-line-from-position ffi-qt-plain-text-edit-line-end-position - ffi-qt-plain-text-edit-find-text - ffi-qt-plain-text-edit-ensure-cursor-visible ffi-qt-plain-text-edit-center-cursor - ffi-qt-text-document-create ffi-qt-plain-text-document-create - ffi-qt-text-document-destroy - ffi-qt-plain-text-edit-document ffi-qt-plain-text-edit-set-document - ffi-qt-text-document-is-modified ffi-qt-text-document-set-modified - - ;; QToolButton - ffi-qt-tool-button-create ffi-qt-tool-button-set-text ffi-qt-tool-button-text - ffi-qt-tool-button-set-icon ffi-qt-tool-button-set-menu - ffi-qt-tool-button-set-popup-mode ffi-qt-tool-button-set-auto-raise - ffi-qt-tool-button-set-arrow-type ffi-qt-tool-button-set-tool-button-style - ffi-qt-tool-button-on-clicked - - ;; Layout spacers / Size policy - ffi-qt-layout-add-spacing - ffi-qt-widget-set-size-policy ffi-qt-layout-set-stretch-factor - - ;; Graphics Scene - ffi-qt-graphics-scene-create ffi-qt-graphics-scene-add-rect - ffi-qt-graphics-scene-add-ellipse ffi-qt-graphics-scene-add-line - ffi-qt-graphics-scene-add-text ffi-qt-graphics-scene-add-pixmap - ffi-qt-graphics-scene-remove-item ffi-qt-graphics-scene-clear - ffi-qt-graphics-scene-items-count ffi-qt-graphics-scene-set-background - ffi-qt-graphics-scene-destroy - - ;; Graphics View - ffi-qt-graphics-view-create ffi-qt-graphics-view-set-render-hint - ffi-qt-graphics-view-set-drag-mode ffi-qt-graphics-view-fit-in-view - ffi-qt-graphics-view-scale ffi-qt-graphics-view-center-on - - ;; Graphics Item - ffi-qt-graphics-item-set-pos ffi-qt-graphics-item-x ffi-qt-graphics-item-y - ffi-qt-graphics-item-set-pen ffi-qt-graphics-item-set-brush - ffi-qt-graphics-item-set-flags ffi-qt-graphics-item-set-tooltip - ffi-qt-graphics-item-set-zvalue ffi-qt-graphics-item-zvalue - ffi-qt-graphics-item-set-rotation ffi-qt-graphics-item-set-scale - ffi-qt-graphics-item-set-visible - - ;; Paint Widget - ffi-qt-paint-widget-create ffi-qt-paint-widget-on-paint - ffi-qt-paint-widget-painter ffi-qt-paint-widget-update - ffi-qt-paint-widget-width ffi-qt-paint-widget-height - - ;; QProcess - ffi-qt-process-create ffi-qt-process-start ffi-qt-process-write - ffi-qt-process-close-write ffi-qt-process-read-stdout ffi-qt-process-read-stderr - ffi-qt-process-wait-for-finished ffi-qt-process-exit-code ffi-qt-process-state - ffi-qt-process-kill ffi-qt-process-terminate - ffi-qt-process-on-finished ffi-qt-process-on-ready-read ffi-qt-process-destroy - - ;; QWizard / QWizardPage - ffi-qt-wizard-create ffi-qt-wizard-add-page ffi-qt-wizard-set-start-id - ffi-qt-wizard-current-id ffi-qt-wizard-set-title ffi-qt-wizard-exec - ffi-qt-wizard-page-create ffi-qt-wizard-page-set-title - ffi-qt-wizard-page-set-subtitle ffi-qt-wizard-page-set-layout - ffi-qt-wizard-on-current-changed - - ;; QMdiArea / QMdiSubWindow - ffi-qt-mdi-area-create ffi-qt-mdi-area-add-sub-window - ffi-qt-mdi-area-remove-sub-window ffi-qt-mdi-area-active-sub-window - ffi-qt-mdi-area-sub-window-count ffi-qt-mdi-area-cascade ffi-qt-mdi-area-tile - ffi-qt-mdi-area-set-view-mode ffi-qt-mdi-sub-window-set-title - ffi-qt-mdi-area-on-sub-window-activated - - ;; QDial - ffi-qt-dial-create ffi-qt-dial-set-value ffi-qt-dial-value - ffi-qt-dial-set-range ffi-qt-dial-set-notches-visible ffi-qt-dial-set-wrapping - ffi-qt-dial-on-value-changed - - ;; QLCDNumber - ffi-qt-lcd-create ffi-qt-lcd-display-int ffi-qt-lcd-display-double - ffi-qt-lcd-display-string ffi-qt-lcd-set-mode ffi-qt-lcd-set-segment-style - - ;; QToolBox - ffi-qt-tool-box-create ffi-qt-tool-box-add-item - ffi-qt-tool-box-set-current-index ffi-qt-tool-box-current-index - ffi-qt-tool-box-count ffi-qt-tool-box-set-item-text - ffi-qt-tool-box-on-current-changed - - ;; QUndoStack - ffi-qt-undo-stack-create ffi-qt-undo-stack-push - ffi-qt-undo-stack-undo ffi-qt-undo-stack-redo - ffi-qt-undo-stack-can-undo ffi-qt-undo-stack-can-redo - ffi-qt-undo-stack-undo-text ffi-qt-undo-stack-redo-text - ffi-qt-undo-stack-clear - ffi-qt-undo-stack-create-undo-action ffi-qt-undo-stack-create-redo-action - ffi-qt-undo-stack-destroy - - ;; QFileSystemModel - ffi-qt-file-system-model-create ffi-qt-file-system-model-set-root-path - ffi-qt-file-system-model-set-filter ffi-qt-file-system-model-set-name-filters - ffi-qt-file-system-model-file-path ffi-qt-tree-view-set-file-system-root - ffi-qt-file-system-model-destroy - - ;; Signal disconnect - ffi-qt-disconnect-all - - ;; QSyntaxHighlighter - ffi-qt-syntax-highlighter-create ffi-qt-syntax-highlighter-destroy - ffi-qt-syntax-highlighter-add-rule ffi-qt-syntax-highlighter-add-keywords - ffi-qt-syntax-highlighter-add-multiline-rule - ffi-qt-syntax-highlighter-clear-rules ffi-qt-syntax-highlighter-rehighlight - - ;; Line number area - ffi-qt-line-number-area-create ffi-qt-line-number-area-destroy - ffi-qt-line-number-area-set-visible - ffi-qt-line-number-area-set-bg-color ffi-qt-line-number-area-set-fg-color - - ;; Extra selections - ffi-qt-plain-text-edit-clear-extra-selections - ffi-qt-plain-text-edit-add-extra-selection-line - ffi-qt-plain-text-edit-add-extra-selection-range - ffi-qt-plain-text-edit-apply-extra-selections - - ;; Completer on editor - ffi-qt-completer-set-widget ffi-qt-completer-complete-rect - - ;; QScintilla - ffi-qt-scintilla-create ffi-qt-scintilla-destroy - ffi-qt-scintilla-send-message ffi-qt-scintilla-send-message-string - ffi-qt-scintilla-receive-string - ffi-qt-scintilla-set-text ffi-qt-scintilla-get-text ffi-qt-scintilla-get-text-length - ffi-qt-scintilla-set-lexer-language ffi-qt-scintilla-get-lexer-language - ffi-qt-scintilla-lexer-set-color ffi-qt-scintilla-lexer-set-paper - ffi-qt-scintilla-lexer-set-font-attr - ffi-qt-scintilla-set-read-only ffi-qt-scintilla-is-read-only - ffi-qt-scintilla-set-margin-width ffi-qt-scintilla-set-margin-type - ffi-qt-scintilla-set-focus - ffi-qt-scintilla-on-text-changed ffi-qt-scintilla-on-char-added - ffi-qt-scintilla-on-save-point-reached ffi-qt-scintilla-on-save-point-left - ffi-qt-scintilla-on-margin-clicked ffi-qt-scintilla-on-modified) - - (import (chezscheme)) - - ;; ----------------------------------------------------------------------- - ;; Load shared libraries - ;; ----------------------------------------------------------------------- - - (define shim-dir - (or (getenv "CHEZ_QT_LIB") - (let ([script-dir (getenv "CHEZ_QT_SCRIPT_DIR")]) - (and script-dir script-dir)) - ".")) - - ;; In a static build (JEMACS_STATIC=1), both shims are compiled into the binary. - ;; With -Wl,--export-dynamic all symbols are visible; no load-shared-object needed. - ;; Chez's foreign-procedure resolves symbols from the binary's export table directly. - (define static-build? - (let ([v (getenv "JEMACS_STATIC")]) - (and v (not (string=? v "")) (not (string=? v "0"))))) - - (define shlib-ext - (let ((mt (symbol->string (machine-type)))) - (if (and (>= (string-length mt) 3) - (string=? (substring mt (- (string-length mt) 3) (string-length mt)) "osx")) - "dylib" - "so"))) - - ;; libqt_shim.{so,dylib} comes from gerbil-qt's vendor/ dir — use DYLD_LIBRARY_PATH/LD_LIBRARY_PATH or explicit env var - (define qt-shim-loaded - (if static-build? - #f ; symbols already linked in; --export-dynamic makes them visible - (load-shared-object - (let ([qt-shim-dir (getenv "CHEZ_QT_SHIM_DIR")]) - (if qt-shim-dir - (format "~a/libqt_shim.~a" qt-shim-dir shlib-ext) - (format "libqt_shim.~a" shlib-ext)))))) - - (define chez-shim-loaded - (if static-build? - #f ; qt_chez_shim.c compiled into binary - (load-shared-object - (format "~a/qt_chez_shim.~a" shim-dir shlib-ext)))) - - ;; ----------------------------------------------------------------------- - ;; Callback registration (Chez → C shim) - ;; ----------------------------------------------------------------------- - - (define ffi-set-void-callback - (foreign-procedure "chez_qt_set_void_callback" (void*) void)) - - (define ffi-set-string-callback - (foreign-procedure "chez_qt_set_string_callback" (void*) void)) - - (define ffi-set-int-callback - (foreign-procedure "chez_qt_set_int_callback" (void*) void)) - - (define ffi-set-bool-callback - (foreign-procedure "chez_qt_set_bool_callback" (void*) void)) - - ;; ----------------------------------------------------------------------- - ;; Constants — hardcoded from Qt header values - ;; ----------------------------------------------------------------------- - - ;; Alignment (Qt::AlignmentFlag) - (define ffi-qt-const-align-left #x0001) - (define ffi-qt-const-align-right #x0002) - (define ffi-qt-const-align-center #x0084) - (define ffi-qt-const-align-top #x0020) - (define ffi-qt-const-align-bottom #x0040) - - ;; Echo mode (QLineEdit::EchoMode) - (define ffi-qt-const-echo-normal 0) - (define ffi-qt-const-echo-no-echo 1) - (define ffi-qt-const-echo-password 2) - (define ffi-qt-const-echo-password-on-edit 3) - - ;; Orientation (Qt::Orientation) - (define ffi-qt-const-horizontal #x1) - (define ffi-qt-const-vertical #x2) - - ;; Slider tick position (QSlider::TickPosition) - (define ffi-qt-const-ticks-none 0) - (define ffi-qt-const-ticks-above 1) - (define ffi-qt-const-ticks-below 2) - (define ffi-qt-const-ticks-both-sides 3) - - ;; Window state (Qt::WindowState) - (define ffi-qt-const-window-no-state #x00) - (define ffi-qt-const-window-minimized #x01) - (define ffi-qt-const-window-maximized #x02) - (define ffi-qt-const-window-full-screen #x04) - - ;; Scrollbar policy (Qt::ScrollBarPolicy) - (define ffi-qt-const-scrollbar-as-needed 0) - (define ffi-qt-const-scrollbar-always-off 1) - (define ffi-qt-const-scrollbar-always-on 2) - - ;; Cursor shape (Qt::CursorShape) - (define ffi-qt-const-cursor-arrow 0) - (define ffi-qt-const-cursor-cross 2) - (define ffi-qt-const-cursor-wait 3) - (define ffi-qt-const-cursor-ibeam 4) - (define ffi-qt-const-cursor-pointing-hand 13) - (define ffi-qt-const-cursor-forbidden 14) - (define ffi-qt-const-cursor-busy 16) - - ;; ----------------------------------------------------------------------- - ;; Application lifecycle - ;; ----------------------------------------------------------------------- - - (define ffi-qt-app-create - (foreign-procedure "chez_qt_application_create" () void*)) - - (define ffi-qt-app-exec - (foreign-procedure "qt_application_exec" (void*) int)) - - (define ffi-qt-app-quit - (foreign-procedure "qt_application_quit" (void*) void)) - - (define ffi-qt-app-process-events - (foreign-procedure "qt_application_process_events" (void*) void)) - - (define ffi-qt-app-destroy - (foreign-procedure "qt_application_destroy" (void*) void)) - - (define ffi-qt-app-is-running - (foreign-procedure "qt_application_is_running" () int)) - - (define ffi-qt-app-set-style-sheet - (foreign-procedure "qt_application_set_style_sheet" (void* string) void)) - - ;; -----------------------------------------------------------------------