[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [sc-dev] [win32] discard SCSpawn?



On 12/12/05, Scott Wilson <sdwilson@xxxxxxxxxxxx> wrote:
 Correct me if I'm wrong, but don't both SCUM and SwingOSC already run
 on all 3 platforms? GUI solutions are multiplying like rabbits.
 Wouldn't it be best at this point to work on coming up with a common
 class interface for GUIs regardless of what's under the hood?

Quite agree. I would love for the GUI code in my library to work on
Linux and Windows, but I'm not going to spawn new versions every time
somebody gets a nifty idea for a new graphics platform. I'm
disorganized enough maintaining the one version as it is!

My vote is for SwingOSC (with loopback for security) since it would
(in theory) involve the fewest changes. I could keep my lib in a Mac
version and use a simple sed or awk script to manufacture a SwingOSC
version.


I once had started to make an event type \gui that tries to be an abstract GUI description which then can be filled in. It is just a sketch though, maybe it helps anyway.






(
x = (
		bounds: { Rect(~left, ~top, ~x, ~y) },
		windowbounds: { Rect(10, 250, 305, 200) },
		gap: Point(4,4),
		margin: Point(4,4),
		left:10, top:10, x: 200, y: 30,
		name: "Untitled",
		resizable: true,
		border: true,
		background: Color.white,
		target: nil,
states: [["state1", Color.black, Color.clear], ["state2", Color.blue, Color.clear]],
		types: (
			window: #{
~window = SCWindow(~name, ~windowbounds.value, ~resizable, ~border).front;
				~window.view.background = ~background;
				 ~target = ~window.view;
			},
composite: #{ SCCompositeView(~target, ~bounds.value).background_(~background) },
			makeComposite: #{ |e| ~target = e[\composite].value },
			makeDecorator: #{ |e|
~window.view.decorator = ~decorator = e[\decorator].value.postln;
			},
slider: #{ SCSlider(~target, ~bounds.value).background_(~background) }, button: #{ SCButton(~target, ~bounds.value).states_(~states).background_(~background) }, decorator: #{ FlowLayout(~window.view.bounds, ~margin, ~gap) }
		)

);

);


(
y = ().parent_(x);
y.use {
	~types[\window].value;
	~types.makeDecorator;
	~types[\slider].value;
	~background = Color.rand;
//	~types.makeComposite;
	~types[\button].value;
	~types[\slider].value;
	~types[\button].value;
	~types[\slider].value;
}
)
--





.