better "connection" handling to Lisp functions; make disconnect work properly; some revisions;

This commit is contained in:
polos 2016-12-10 15:46:36 +01:00
parent 09e0f53f28
commit 7b03ef56fd
25 changed files with 246 additions and 138 deletions

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>VideoSettingsUi</class>
<class>dialog</class>
<widget class="QDialog" name="dialog">
<property name="geometry">
<rect>
@ -28,7 +28,7 @@
<x>0</x>
<y>0</y>
<width>543</width>
<height>250</height>
<height>251</height>
</rect>
</property>
<layout class="QGridLayout" name="grid_layout_3">
@ -67,6 +67,12 @@
</item>
<item row="4" column="1">
<widget class="QSlider" name="audio_quality_slider">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximum">
<number>4</number>
</property>
@ -123,6 +129,12 @@
</item>
<item row="6" column="1">
<widget class="QSlider" name="video_quality_slider">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximum">
<number>4</number>
</property>

View file

@ -74,7 +74,7 @@
(qfun *scroll-area* "setWidgetResizable" t)
(setf *scroll-area-widget-contents* (qnew "QWidget"))
(qfun *scroll-area-widget-contents* "setObjectName" "scroll_area_widget_contents")
(qfun *scroll-area-widget-contents* "setGeometry" 0 0 543 250)
(qfun *scroll-area-widget-contents* "setGeometry" 0 0 543 251)
(setf *grid-layout-3* (qnew "QGridLayout(QWidget*)" *scroll-area-widget-contents*))
(qfun *grid-layout-3* "setObjectName" "grid_layout_3")
(setf *group-box* (qnew "QGroupBox(QWidget*)" *scroll-area-widget-contents*))
@ -98,6 +98,7 @@
(qfun *grid-layout* "addWidget" *label-3* 4 0 1 1)
(setf *audio-quality-slider* (qnew "QSlider(QWidget*)" *group-box*))
(qfun *audio-quality-slider* "setObjectName" "audio_quality_slider")
(qfun *audio-quality-slider* "setMinimumSize" 100 0)
(qfun *audio-quality-slider* "setMaximum" 4)
(qfun *audio-quality-slider* "setOrientation" |Qt.Horizontal|)
(qfun *grid-layout* "addWidget" *audio-quality-slider* 4 1 1 1)
@ -129,6 +130,7 @@
(qfun *grid-layout-2* "addWidget" *label-7* 6 0 1 1)
(setf *video-quality-slider* (qnew "QSlider(QWidget*)" *groupbox-2*))
(qfun *video-quality-slider* "setObjectName" "video_quality_slider")
(qfun *video-quality-slider* "setMinimumSize" 100 0)
(qfun *video-quality-slider* "setMaximum" 4)
(qfun *video-quality-slider* "setOrientation" |Qt.Horizontal|)
(qfun *grid-layout-2* "addWidget" *video-quality-slider* 6 1 1 1)

View file

@ -121,6 +121,11 @@
;;; UI
(defmacro connect-clicked (&rest args)
`(progn
,@(loop :for arg :in args :collect
`(qconnect ,arg "clicked()" ',(intern (string-upcase (format nil "~A-clicked" arg)))))))
(defun run ()
(flet ((b ()
(qnew "QToolButton"
@ -185,12 +190,7 @@
(qconnect (svref digits n) "clicked()" 'digit-clicked))
(dolist (w (list plus minus multiply divide))
(qconnect w "clicked()" 'operation-clicked))
;; the following lines are crying for a macro like:
;; (connect-clicked (list clear back sign point reci words equal))
(mapc (lambda (w fun)
(qconnect w "clicked()" fun))
(list clear back sign point reci words equal)
(list 'clear-clicked 'back-clicked 'sign-clicked 'point-clicked 'reci-clicked 'words-clicked 'equal-clicked))
(connect-clicked clear back sign point reci words equal) ; see macro above
(clear-display)
(|setFocus| *real*)
(x:do-with *main* |show| |raise|))))