! Copyright (C) 2006, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors inspector namespaces kernel models fry
-colors.constants models.arrow prettyprint sequences mirrors assocs
-classes io io.styles arrays hashtables math.order sorting refs fonts
-ui.tools.browser ui.commands ui.operations ui.gadgets ui.gadgets.panes
-ui.gadgets.scrollers ui.gadgets.slots ui.gadgets.tracks ui.gestures
-ui.gadgets.buttons ui.gadgets.tables ui.gadgets.status-bar
-ui.gadgets.labeled ui.tools.common ui ;
+USING: accessors colors inspector namespaces kernel models fry
+colors.constants models.arrow prettyprint sequences mirrors
+assocs classes io io.styles arrays hashtables math.order sorting
+refs fonts ui.tools.browser ui.commands ui.operations ui.gadgets
+ui.gadgets.panes ui.gadgets.scrollers ui.gadgets.slots
+ui.gadgets.theme ui.gadgets.tracks ui.gestures
+ui.gadgets.buttons ui.gadgets.tables ui.theme ui.gadgets.toolbar
+ui.gadgets.status-bar ui.gadgets.labeled ui.tools.common ui
+combinators ui.gadgets.worlds ;
IN: ui.tools.inspector
TUPLE: inspector-gadget < tool table ;
: <summary-gadget> ( model -- gadget )
[
standard-table-style [
- [
+ {
[
- [ "Class:" write ] with-cell
- [ class pprint ] with-cell
- ] with-row
- ]
- [
+ [
+ [ "Class:" write ] with-cell
+ [ class-of pprint ] with-cell
+ ] with-row
+ ]
[
- [ "Object:" write ] with-cell
- [ pprint-short ] with-cell
- ] with-row
- ]
- [
+ [
+ [ "Object:" write ] with-cell
+ [ pprint-short ] with-cell
+ ] with-row
+ ]
[
- [ "Summary:" write ] with-cell
- [ print-summary ] with-cell
- ] with-row
- ] tri
+ [
+ [ "Summary:" write ] with-cell
+ [ print-summary ] with-cell
+ ] with-row
+ ]
+ [
+ content-gadget [
+ [
+ [ "Content:" write ] with-cell
+ [ output-stream get write-gadget ] with-cell
+ ] with-row
+ ] when*
+ ]
+ } cleave
] tabular-output
] <pane-control> ;
: <inspector-table> ( model -- table )
[ make-slot-descriptions ] <arrow> inspector-renderer <table>
[ invoke-primary-operation ] >>action
- monospace-font >>font
- COLOR: dark-gray >>column-line-color
+ monospace-font >>font theme-font-colors
+ line-color >>column-line-color
6 >>gap
15 >>min-rows
15 >>max-rows
40 >>max-cols ;
: <inspector-gadget> ( model -- gadget )
- vertical inspector-gadget new-track
- { 3 3 } >>gap
+ vertical inspector-gadget new-track with-lines
add-toolbar
swap >>model
dup model>> <inspector-table> >>table
- dup model>> <summary-gadget> "Object" <labeled-gadget> f track-add
- dup table>> <scroller> "Contents" <labeled-gadget> 1 track-add ;
+ dup model>> <summary-gadget> margins white-interior "Object" object-color <labeled> f track-add
+ dup table>> <scroller> margins white-interior "Contents" contents-color <labeled> 1 track-add ;
M: inspector-gadget focusable-child*
table>> ;
\ com-push H{ { +listener+ t } } define-command
: slot-editor-window ( close-hook update-hook assoc key key-string -- )
- [ <value-ref> <slot-editor> ] [ "Slot editor: " prepend ] bi*
- open-window ;
+ [ <value-ref> <slot-editor> ]
+ [
+ <world-attributes>
+ swap "Slot editor: " prepend >>title
+ [ { dialog-window } append ] change-window-controls
+ ] bi*
+ open-status-window ;
: com-edit-slot ( inspector -- )
[ close-window ] swap
[ table>> (selected-row) ] tri [
[ key>> ] [ key-string>> ] bi
slot-editor-window
- ] [ 2drop 2drop ] if ;
+ ] [ 4drop ] if ;
: inspector-help ( -- ) "ui-inspector" com-browse ;
: inspector ( obj -- )
<model> inspect-model ;
+
+{ 550 400 } inspector-gadget set-tool-dim