OrderedCollection [ GrafoscopioNode { #header : 'Visualizaci\u00F3n', #key : '', #body : 'Texto 1', #children : OrderedCollection [ GrafoscopioNode { #header : 'ZUI', #key : '', #body : 'Zoomable User Interface', #children : OrderedCollection [ GrafoscopioNode { #header : 'Scroll text', #key : '', #body : '| b el|\rb := RTView new.\r[el := RTElement forCollection: (PhaROSSystemInfo instance topicList).\rel do:[:e | e + RTLabel.\r\"e @ RTDraggable.\"\r].\rb elements do:[:e | b removeElement: e].\rb addAll: el.\rRTGridLayout new on: el.\rb signalUpdate.\r] valueWithInterval: 1second.\r\rb open.', #children : OrderedCollection [ ], #parent : @4, #level : 3 }, GrafoscopioNode { #header : 'Arbol con Zoom', #key : '', #body : '| b |\rb := RTGraphBuilder new.\r\rb nodes shape: (RTBox new width: [ :cls | 6 * cls numberOfVariables]; height: \r#numberOfMethods).\r\rb edges\rconnectTo: #subclasses;\rverticalAttachPoint;\ruseInLayout.\r\rb layout tree.\r\rb global\rminSize: 5;\rnormalizeColor: #numberOfVariables using: {Color green . Color red}.\r\rb addAll: RTObject withAllSubclasses.\rb build.\r\r(RTGroup withAll: b view elements) translateTo: 0 @ 0.\rb view canvas camera focusOnCenterScaled: 500.\rb view', #children : OrderedCollection [ ], #parent : @4, #level : 3 } ], #parent : @2, #level : 2 }, GrafoscopioNode { #header : 'Roassal Real Time', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'PharOS', #key : '', #body : '| b el|\rb := RTView new.\r[el := RTElement forCollection: (PhaROSSystemInfo instance topicList).\rel do:[:e | e + RTLabel.\r\"e @ RTDraggable.\"\r].\rb elements do:[:e | b removeElement: e].\rb addAll: el.\rRTGridLayout new on: el.\rb signalUpdate.\r] valueWithInterval: 1second.\r\rb open.', #children : OrderedCollection [ ], #parent : @10, #level : 3 }, GrafoscopioNode { #header : 'Gr\u00E1fica de torta', #key : '', #body : '| b |\rb := RTTimeLineBuilder new.\r\"The lowest value will be red, the highest will be green\"\rb colors: {Color red . Color green}.\r\r\"Width of the bar\"\rb shape current width: 15.\r\r\"Total height of the diagram\"\rb height: 80.\r\r\"Number of values to be displayed before scrolling to the right\"\rb numberOfValues: 20.\r\r\"Small button for test purpose\"\rb view canvas addMenu: \'Add\' callback: [ b add: 30 atRandom ].\rb open', #children : OrderedCollection [ ], #parent : @10, #level : 3 } ], #parent : @2, #level : 2 }, GrafoscopioNode { #header : 'Sunburst fondo transparente', #key : '', #body : '| b |\rb := RTSunburstBuilder new.\rb shape current\rcolorElement: [ :el |\r(el attributeAt: #sbDepth) = 0 ifTrue: [ Color transparent ]\rifFalse: [ Color grayScale256: ((el attributeAt: #sbDepth ifAbsent: [ 0 ]) * 30) \r] ].\r\rb explore: RTObject using: #subclasses.\rb view @ RTDraggableView.\rb open', #children : OrderedCollection [ ], #parent : @2, #level : 2 }, GrafoscopioNode { #header : 'Gr\u00E1fica de torta', #key : '', #body : '| b |\rb := RTPieBuilder new.\rb interaction popup.\r\rb objects: #(10 4 1 2 5).\rb slice: [ :aNumber | aNumber ].\rb globalRule distinctColor.\rb labelled.\rb build.', #children : OrderedCollection [ ], #parent : @2, #level : 2 }, GrafoscopioNode { #header : 'Espect\u00F3grafo', #key : '', #body : '| b now |\rnow := DateAndTime now.\rb := RTSpectrograph new.\rb objects: ((RTObject withAllSubclasses , TRObject withAllSubclasses) \rreverseSortedAs: #livingInDays).\r\rb highlight: [ :cls :livingDay | cls inheritsFrom: TRObject ] color: Color \rlightGreen.\rb highlight: [ :cls :livingDay | cls gotMethodOnDay: livingDay ].\r\rb popupText: [ :cls :age | cls name, \' \', age printString , \' days old\' ].\rb lineBlock: [ :cls | 0 to: cls livingInDays ].\r\rb open.', #children : OrderedCollection [ ], #parent : @2, #level : 2 }, GrafoscopioNode { #header : 'Glamorous Toolkit', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'GLMPageMorph', #key : '', #body : 'GLMBasicExamples new simplePager openOn: 42\r\r\"Interesting to see if auto-update between panes can be used for my own project: grafoscopio\".', #children : OrderedCollection [ ], #parent : @22, #level : 3 } ], #parent : @2, #level : 2 }, GrafoscopioNode { #header : 'Grafos', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Punto de anclaje de los nodos', #key : '', #body : '\"Example by Alexandre Bergel (taken from Moose mailing list)\"\r\"This shows a graph with an edge dynamically attached to the border of point.\"\r\r| v e1 e2 l shape |\rv := RTView new.\r\re1 := ((RTEllipse new size: 20) + RTLabel) elementOn: \'one\'.\re2 := ((RTEllipse new size: 20) + RTLabel) elementOn: \'two\'.\r\re1 @ RTDraggable.\re2 @ RTDraggable.\r\re2 translateTo: 60 @ 40.\r\rshape := RTLine new color: Color red.\rshape attachPoint: (RTShorterDistanceAttachPoint new).\rl := shape edgeFrom: e1 to: e2.\r\rv add: e1; add: e2; add: l.', #children : OrderedCollection [ ], #parent : @26, #level : 3 }, GrafoscopioNode { #header : 'Cambiar el color del arcos', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Ejemplo 1', #key : '', #body : '| v es edges shape |\rv := RTView new.\res := (RTEllipse new size: 20; color: (Color blue alpha: 0.4)) elementsOn: (1 to: 20).\rRTCircleLayout new initialRadius: 100; on: es.\rv addAll: es.\r\rshape := RTLine new color: Color red.\redges := RTEdge \r\tbuildEdgesFromObjects: (1 to: 20) \r\tfrom: [ :value | value // 2 ] \r\tto: #yourself \r\tusing: shape\r\tinView: v.\r\rv canvas addMenu: \'change color\' callback: [ shape color: Color random. edges do: #update. v signalUpdate ].\r\rv open', #children : OrderedCollection [ ], #parent : @30, #level : 4 }, GrafoscopioNode { #header : 'Ejemplo 2', #key : '', #body : '| v es edges shape |\rv := RTView new.\res := (RTEllipse new size: 20; color: (Color blue alpha: 0.4)) elementsOn: (1 to: 20).\rRTCircleLayout new initialRadius: 100; on: es.\rv addAll: es.\r\rshape := RTLine new color: Color red.\redges := RTEdge \r\tbuildEdgesFromObjects: (1 to: 20) \r\tfrom: [ :value | value // 2 ] \r\tto: #yourself \r\tusing: shape\r\tinView: v.\r\rv canvas addMenu: \'change color\' callback: [ edges do: [ :e | e trachelShape color: Color random ]. v signalUpdate ].\r\rv open.', #children : OrderedCollection [ ], #parent : @30, #level : 4 } ], #parent : @26, #level : 3 }, GrafoscopioNode { #header : 'Arcos interconectados', #key : '', #body : '| v es |\rv := RTView new.\res := ((RTEllipse new size: 30) + RTLabel) elementsOn: (1 to: 20).\rv addAll: es.\rRTCircleLayout new initialRadius: 150; on: es.\r\res @ (RTShowEdge new\rconnectTo: [ :value | value - 5 to: value + 5];\rshape: [ :el |\rRTBezierLine new\rattachPoint: RTShorterDistanceAttachPoint new;\rcenterOfObjects: (el model - 5 to: el model +5) inView: v;\rcolor: (Color blue alpha: 0.4) ] ).\r\rv', #children : OrderedCollection [ ], #parent : @26, #level : 3 } ], #parent : @2, #level : 2 }, GrafoscopioNode { #header : 'Mapas', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Localizaci\u00F3n en ciudades', #key : '', #body : '| map |\rmap := RTMapBuilder new.\r\rmap countries: #(\'UnitedStates\' \'Canada\' \'Mexico\').\r\rmap cities addCityNamed: \'New York City\' location: 40.7127 @ -74.0059.\rmap cities addCityNamed: \'Ottawa\' location: 45.420833 @ -75.69.\rmap cities addCityNamed: \'Mexico City\' location: 19.433333 @ -99.133333.\r\rmap cities: #(\'New York City\' \'Ottawa\' \'Mexico City\').\r\rmap render.\rmap view', #children : OrderedCollection [ ], #parent : @38, #level : 3 }, GrafoscopioNode { #header : 'No funcionan', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'SGV Countries', #key : '', #body : '\"El t\u00EDtulo del hilo es: Re: [Pharo-dev] SVG described countries in Roassal\"\r\r| view element nameComponent label |\rview := ROView new.\r\rROSVGPath countries do: [ :k |\relement := (ROSVGPath path: (ROSVGPath perform: k)) elementOn: k.\rview add: element.\r].\r\rnameComponent := ROElement new.\rROSVGPath countries do: [ :k |\rlabel := ROLabel elementOn: k asString.\rlabel @ ROLightlyHighlightable.\rlabel on: ROMouseEnter do: [ :event | ROBlink highlight: (view elementFromModel: \revent model asSymbol) ].\rlabel on: ROMouseLeave do: [ :event | ROBlink unhighlight: (view \relementFromModel: event model asSymbol) ].\rnameComponent add: label.\r].\rROGridLayout new\rgapSize: -3;\rlineItemsCount: 15;\ron: nameComponent elements.\r\rview add: nameComponent.\rnameComponent translateTo: 0 @ 400.\r\rview openInWindowSized: 1000 @ 700', #children : OrderedCollection [ ], #parent : @42, #level : 4 } ], #parent : @38, #level : 3 } ], #parent : @2, #level : 2 }, GrafoscopioNode { #header : 'Kendrick (Epidemiolog\u00EDa)', #key : '', #body : '', #children : OrderedCollection [ ], #parent : @2, #level : 2 }, GrafoscopioNode { #header : 'Paletas de Colores', #key : '', #body : 'ColorPalette sequential show.\rColorPalette diverging show.\rColorPalette qualitative show.\r\r\"or, in one instruction\"\r\rColorPalette subclasses do: #show.', #children : OrderedCollection [ ], #parent : @2, #level : 2 }, GrafoscopioNode { #header : 'Leyendas a gr\u00E1ficas', #key : '', #body : '| v shape legendBuilder elements |\rv := RTView new.\r\r\"We add some elements\"\rshape := RTShapeBuilder new circle\rsize: [ :c | 10 max: (c numberOfMethods) / 7 ];\rfillColor: Color gray;\rif: [ :cls | \'*Array*\' match: cls name ] fillColor: Color blue;\rif: [ :cls | \'*Dictionary*\' match: cls name ] fillColor: Color green;\rif: [ :cls | \'*Set*\' match: cls name ] fillColor: Color red;\rcurrent.\relements := shape elementsOn: (Collection withAllSubclasses).\relements @ RTPopup.\rv addAll: elements.\rRTGridLayout on: v elements.\r\r\"We add the legend\"\rlegendBuilder := RTLegendBuilder new view: v.\rlegendBuilder name: \'array\' color: Color blue.\rlegendBuilder name: \'dictionary\' color: Color green.\rlegendBuilder name: \'set\' color: Color red.\rlegendBuilder render.\r\r\"Open the view\"\rv open', #children : OrderedCollection [ ], #parent : @2, #level : 2 }, GrafoscopioNode { #header : 'Posiciones de texto en gr\u00E1ficas', #key : '', #body : '| v c l1 l2 b |\rv := RTView new.\rc := v canvas.\rl1 := TRLabelShape new text: \'Hello World\'.\rl2 := TRLabelShape new text: \'Bonjour \u00E0 tous\'.\rb := TRBoxShape new size: 40; color: Color blue.\rl1 translateRightTo: 0 @ -30.\rl2 translateLeftTo: 0 @ 30.\rc addShape: b.\rc addShape: l1.\rc addShape: l2.\rv', #children : OrderedCollection [ ], #parent : @2, #level : 2 }, GrafoscopioNode { #header : 'Fetching and charting country population', #key : '', #body : 'n| query data diagram |\r\rquery := DBPediaSearch new\rsetJsonFormat;\rsetDebugOn;\rtimeout: 3000;\rquery: \'SELECT DISTINCT ?name ?population\rWHERE {\r?country a dbpedia-owl:Country .\r?country rdfs:label ?name .\rFILTER\r(langMatches(lang(?name), \"en\"))\rvalues ?hasPopulation { dbpprop:populationEstimatedbpprop:populationCensus }\rOPTIONAL { ?country ?hasPopulation ?population }\rFILTER (isNumeric(?population))\rFILTER NOT EXISTS { ?country dbpedia-owl:dissolutionYear ?yearEnd } { ?country \rdbpprop:iso3166code ?code . }\rUNION { ?country dbpprop:iso31661Alpha ?code . }\rUNION { ?country dbpprop:countryCode ?code . }\rUNION { ?country a yago:MemberStatesOfTheUnitedNations . }}\';\rexecute.\r\rdata := (((NeoJSONReader fromString: query) at:#results) at: #bindings) collect: \r[ :entry | Array with: ( (entry at: #name) at: #value ) with: ( (entry \rat: #population) at: #value ) asInteger ].\r\r\"Use GraphET to render all this\"\rdiagram := GETDiagramBuilder new.\rdiagram verticalBarDiagram\rmodels: (data reverseSortedAs: #second);\ry: #second;\rregularAxisAsInteger;\rtitleLabel: \'Size of countries\';\ryAxisLabel: \'Population\'.\rdiagram interaction popupText.\r\rdiagram open', #children : OrderedCollection [ ], #parent : @2, #level : 2 }, GrafoscopioNode { #header : 'Iconos SVG', #key : '', #body : '| v shape |\rv := RTView new.\rshape := RTSVGPath new path: \r\'M442.264,283.033l-90.66,52.343l28.787,16.621c-28.083,38.277-64.824,62.301-104.362,68.397V231.153\r\rc0-54.82,48.786-60.084,48.786-112.339C324.814,80.869,293.944,50,256,50c-37.943,0-68.814,30.869-68.814,68.814\r\rc0,52.694,48.786,57.052,48.786,112.338v189.242c-39.538-6.097-76.278-30.12-104.363-68.397l28.788-16.621l-90.66-52.343v104.686\r\rl27.018-15.6C137.32,429.445,194.595,462,256,462s118.68-32.555,159.246-89.881l27.018,15.6V283.033z \rM227.242,118.814\r\rc0-15.857,12.9-28.758,28.758-28.758c15.856,0,28.758,12.9,28.758,28.758c0,15.856-12.901,28.757-28.758,28.757\r\rC240.143,147.571,227.242,134.671,227.242,118.814z\'.\rshape fillColor: Color red.\rshape scale: [:vv | vv model ].\rv add: ((shape elementsOn: #(0.1 0.2 0.3 0.4) ) @ RTPopup).\r\rv open', #children : OrderedCollection [ ], #parent : @2, #level : 2 }, GrafoscopioNode { #header : 'Reportes', #key : '', #body : 'Para ejecutar reportes se hace:\r\r\tOnMooseReport importAndOpen\r\t\rEs interesante la herramienta de reporte. Por un lado muestra lo que ocurre al interior de Moose, desde Moose y, por otro, tiene unos \u00EDconos interesantes.\rSer\u00EDa ch\u00E9vere ver c\u00F3mo esto puede ser utilizado en flujos de trabajo a la medida para la creaci\u00F3n de cosas como los curr\u00EDculos.', #children : OrderedCollection [ ], #parent : @2, #level : 2 } ], #parent : GrafoscopioNode { #header : 'Arbol principal', #key : '', #body : '', #children : @1, #level : 0, #nodesInPreorder : OrderedCollection [ @60, @2, @4, @6, @8, @10, @12, @14, @16, @18, @20, @22, @24, @26, @28, @30, @32, @34, @36, @38, @40, @42, @44, @46, @48, @50, @52, @54, @56, @58, GrafoscopioNode { #header : 'Updating ports', #key : '', #body : 'GLMCompositePresentation new\r with: [ :composite |\r composite rubricText\r onChangeOfPort: #text act: [ :textPresentation |\r Transcript cr; cr; show: textPresentation text ] ];\r openOn: \'Type something and check the Transcript\'', #children : OrderedCollection [ GrafoscopioNode { #header : 'Updating in Moose Book', #key : '', #body : '\"En un playground colocar\"\r\r| browser |\rbrowser := GLMTabulator new.\rbrowser title: \'Model list with manual update\'.\rbrowser column: #list.\rbrowser transmit to: #list; andShow: [:a | \r a list \r act: [:list | list update] \r icon: GLMUIThemeExtraIcons glamorousRefresh\r entitled: \'Update\';\r format: #name ].\rbrowser openOn: MooseModel root.\r\r\"Y en otro\"\r\rMooseModel root add: MooseModel new.\rMooseModel name: \'algo\'\r\rSin embargo, siempre aparece \"noName\" como nuevos filas agregadas. No s\u00E9 como cambiarles el nombre.', #children : OrderedCollection [ ], #parent : @62, #level : 2 } ], #parent : @60, #level : 1 }, @64, GrafoscopioNode { #header : 'Workspaces compartidos', #key : '', #body : '\"Son como un pastebin para c\u00F3digo en Smalltalk. Las instrucciones de instalaci\u00F3n fueron tomadas de:\r\rhttp://ws.stfx.eu/1WS4U\r\"\rGofer it\r squeaksource: \'ZincHTTPComponents\';\r package: \'Zinc-WWS-Client\';\r load.', #children : OrderedCollection [ ], #parent : @60, #level : 1 } ] }, #level : 1 }, @62, @66 ]