#! /usr/bin/env fan // // Copyright (c) 2008, Brian Frank and Andy Frank // Licensed under the Academic Free License version 3.0 // // History: // 10 Sep 08 Brian Frank Creation // using gfx using fwt ** ** Paint the desktop monitor configuration. ** class DesktopDemo : Canvas { Void main() { Window { it.title = "Desktop Demo" it.size = Size(600,400) DesktopDemo {}, }.open } override Void onPaint(Graphics g) { w := size.w h := size.h f := Font { it.name=Desktop.sysFont.name; it.size=14 } // paint background white g.font = f g.brush = Color.white g.fillRect(0, 0, w, h) // paint desktop bounds in 1/10 scale d := Desktop.bounds g.translate( (w-(d.w-d.x)/10)/2, (h-(d.h-d.y)/10)/2 ) g.brush = Color.blue g.pen = Pen { width = 5 } g.drawRect(d.x/10, d.y/10, d.w/10, d.h/10) g.pen = Pen { width = 1 } // paint each monitor mon := Monitor.list mon.each |Monitor m, Int i| { g.brush = Color.red r := m.screenBounds g.fillRect(r.x/10, r.y/10, r.w/10, r.h/10) g.brush = Color.yellow r = m.bounds g.fillRect(r.x/10, r.y/10, r.w/10, r.h/10) r = m.screenBounds g.brush = Color.black g.drawRect(r.x/10, r.y/10, r.w/10, r.h/10) g.brush = Color.black name := i.toStr if (m == Monitor.primary) name += "*" g.drawText(name, r.x/10 + (r.w/10-f.width(name))/2, r.y/10 + (r.h/10-f.height)/2) } } }