Re: treeview - gtk-cell-renderer-spin - 2 problems
David Pirotte <[email protected]> Thu, 25 Jul 2013 15:41:44 -0300
| Newsgroups | gmane.lisp.guile.gtk |
|---|---|
| Message-ID | <20130725154144.1c218459@capac> |
--MP_/4m.y3eE8J.KfF9avC8V6oIv Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hello, I slightly improved the example I sent because I forgot to mention that the <gtk-spin-button> appears to work better then the renderer _but_ not always= [I am talking about the value it stores and gives back, the spin itself always re= spects its 'contract': a float rounded to the tenth, between 0.0 and 100.0]. To convince yourself of the 'problem', you may press the up-arrow, page-up, down-arrow page-down until it reaches values that shows the problem. Cheers, David ;; -- Le Wed, 24 Jul 2013 17:35:16 -0300, David Pirotte <[email protected]> a =C3=A9crit : > Hello guilers, > guile-gnomers, >=20 > guile-gnome from git - the latest > GNU Guile 2.0.9.20-10454 >=20 > So far i did render floats myself, using text renderer, mono space right > justified ... because i could never make the <gtk-cell-renderer-spin> cor= rectly > display the number of decimals i wanted. >=20 > I'd like to see if it possible to solve this problem, so i built a small = example to > play with. As you can see there are 2 problems. >=20 > 1- the renderer does not implement the digits i am passing (line 35); > 2- the values it stores and give back are not [exactly] the values i am > given (lines 64, 65). >=20 > [i also tried to define and use an adjustment, but it does not change the > fact that the renderer fails to display the right digit number it receiv= es] >=20 > Hints/debug suggestions welcome, > David --MP_/4m.y3eE8J.KfF9avC8V6oIv Content-Type: text/x-scheme Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=gtk-cell-renderer-spin-digits-prob.scm #!/bin/sh # -*- mode: scheme; coding: utf-8 -*- exec guile-gnome-2 -e main -s $0 "$@" !# (use-modules (ice-9 receive) (oop goops) (gnome gobject) (gnome gtk)) (define *model* #f) (define *selection* #f) (define (pack-tv-column tv column renderer pos) (pack-start column renderer #t) (add-attribute column renderer "text" pos) (append-column tv column)) (define (add-columns treeview) (let* ((renderer1 (make <gtk-cell-renderer-text>)) (column1 (make <gtk-tree-view-column> #:title "What" #:expand #t #:alignment .5)) #;(adjustment2 (make <gtk-adjustment> #:value 0 #:lower 0 #:upper 100 #:step-increment .1 #:page-increment 1 #:page-size 0)) (renderer2 (make <gtk-cell-renderer-spin> ;; #:adjustment adjustment2 #:climb-rate 0.1 #:digits 1)) (column2 (make <gtk-tree-view-column> #:title "Duration" #:sizing 'fixed #:fixed-width 90 #:alignment .5))) (pack-tv-column treeview column1 renderer1 0) (pack-tv-column treeview column2 renderer2 1))) (define (add-model treeview) (let* ((column-types (list <gchararray> <gfloat>)) (model (gtk-list-store-new column-types))) (set-model treeview model) (values model (get-selection treeview)))) (define (setup-treeview treeview) (add-columns treeview) (receive (model selection) (add-model treeview) (set-mode selection 'single) (values model selection))) (define (populate-model model) (for-each (lambda (row) (let ((iter (gtk-list-store-append model))) (set-value model iter 0 (car row)) (set-value model iter 1 (cadr row)))) '(("contrib" 1.1) ("sysadmin" 2.3)))) (define (status-push status-bar message source) (let ((context-id (gtk-statusbar-get-context-id status-bar source))) (gtk-statusbar-push status-bar context-id message))) (define (status-pop status-bar source) (let ((context-id (gtk-statusbar-get-context-id status-bar source))) (gtk-statusbar-pop status-bar context-id))) (define (display-both model iter spin) (string-append "duration, the spin: " (number->string (get-value spin)) " the cell renderer: " (number->string (get-value model iter 1)))) (define (animate) (let* ((window (make <gtk-window> #:type 'toplevel #:title "Gtk cell renderer spin")) (vbox (make <gtk-vbox> #:homogeneous #f #:spacing 2)) (adjustment (make <gtk-adjustment> #:value 0 #:lower 0 #:upper 100 #:step-increment .1 #:page-increment 1 #:page-size 0)) (spin (make <gtk-spin-button> #:adjustment adjustment #:climb-rate .1 #:digits 1)) (scrollw (make <gtk-scrolled-window> #:hscrollbar-policy 'never #:vscrollbar-policy 'automatic)) (treeview (make <gtk-tree-view>)) (statusbar (make <gtk-statusbar>))) (set-default-size window 400 150) (receive (model selection) (setup-treeview treeview) (populate-model model) (add window vbox) (add scrollw treeview) (pack-start vbox spin #f #f 0) (pack-start vbox scrollw #t #t 0) (pack-start vbox statusbar #f #f 0) (connect window 'delete-event (lambda (widget event) (destroy widget) (gtk-main-quit) #f)) (connect spin 'value-changed (lambda (widget) (receive (model iter) (get-selected selection) (set-value model iter 1 (get-value widget)) (status-pop statusbar "") (status-push statusbar (display-both model iter spin) "")))) (connect selection 'changed (lambda (selection) (receive (model iter) (get-selected selection) (status-pop statusbar "") (status-push statusbar (display-both model iter spin) "")))) (select-path selection (list 0))) (show-all window) (gtk-main))) (define (main args) (animate)) --MP_/4m.y3eE8J.KfF9avC8V6oIv Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ guile-gtk-general mailing list [email protected] https://lists.gnu.org/mailman/listinfo/guile-gtk-general --MP_/4m.y3eE8J.KfF9avC8V6oIv--