Forum: IronRuby A tiny DSL to build Windows::Forms menus from IronRuby - review wanted

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
91eb330fb36d1e03c856574dfb77d2bc?d=identicon&s=25 Thibaut Barrère (thbar)
on 2009-02-26 23:28
(Received via mailing list)
Hi,
I started working on UI bits, both for Ivan book and because my
customers
are interested (and well - because it's fun, too!). First topic is how
to
build menus more easily (next one will be long running operations and
how to
sugar them).

I'd be interested to get your opinion on both the DSL syntax (below for
quick read or
here<http://github.com/thbar/ironruby-labs/blob/66b45fd...
on
github) and the
implementation<http://github.com/thbar/ironruby-labs/blob/66b45fd...
.

form.menu = MainMenu.build do
  item("&File") {
    item("&New") {
      item("Spreadsheet")
      item("Document")
    }
    item "&Quit", lambda { Application.Exit }
  }
  item("&Tools") {

 item "&PowerBlade", lambda { MessageBox.Show("Powerblades are
amazing...") }
    item "&Scissors"
  }
end

what do you think ?

cheers,

Thibaut Barrère
Ade8632553a9243ae05fc920f68644c1?d=identicon&s=25 Jim Deville (Guest)
on 2009-02-27 00:33
(Received via mailing list)
I think it looks very nice. It's a shame that you have to resort to
direct lambda's since you can't pass two lambda's in, but otherwise it's
a nice visual representation of the menu, in code.

JD

From: ironruby-core-bounces@rubyforge.org
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Thibaut
Barrère
Sent: Thursday, February 26, 2009 2:26 PM
To: ironruby-core
Subject: [Ironruby-core] A tiny DSL to build Windows::Forms menus from
IronRuby - review wanted

Hi,

I started working on UI bits, both for Ivan book and because my
customers are interested (and well - because it's fun, too!). First
topic is how to build menus more easily (next one will be long running
operations and how to sugar them).

I'd be interested to get your opinion on both the DSL syntax (below for
quick read or
here<http://github.com/thbar/ironruby-labs/blob/66b45fd...
on github) and the
implementation<http://github.com/thbar/ironruby-labs/blob/66b45fd....

form.menu = MainMenu.build do
  item("&File") {
    item("&New") {
      item("Spreadsheet")
      item("Document")
    }
    item "&Quit", lambda { Application.Exit }
  }
  item("&Tools") {
    item "&PowerBlade", lambda { MessageBox.Show("Powerblades are
amazing...") }
    item "&Scissors"
  }
end

what do you think ?

cheers,

Thibaut Barrère
91eb330fb36d1e03c856574dfb77d2bc?d=identicon&s=25 Thibaut Barrère (thbar)
on 2009-02-27 21:15
(Received via mailing list)
Hi,

> I think it looks very nice. It’s a shame that you have to resort to direct
> lambda’s since you can’t pass two lambda’s in, but otherwise it’s a nice
> visual representation of the menu, in code.
>
thanks for the feedback, appreciated!

I just realised that I can also use this (without modifying the
implementation):

    item("&PowerBlade").click { MessageBox.Show("Powerblades are
amazing...") }

instead of

    item("&PowerBlade", lambda { MessageBox.Show("Powerblades are
amazing...") }

same effect, slightly more readable though.

cheers, and I shall move on to long running operations.

-- Thibaut
91eb330fb36d1e03c856574dfb77d2bc?d=identicon&s=25 Thibaut Barrère (thbar)
on 2009-02-27 23:46
(Received via mailing list)
After chatting with Ivan, I created some code to build Forms too:

form = Magic.build do
  form(:text => "Hello") do
    flow_layout_panel(:dock => DockStyle.fill) do
      button(:text => "Click me!", :click => lambda {
MessageBox.Show("Hello") })
      button(:text => "Quit", :click => lambda { Application.Exit })
    end
  end
end
*
*

I use method_missing and transform the method name from
flow_layout_panel to
FlowLayoutPanel class etc.

After using these a bit, I'm pretty sure we'll end up with some
community
project sharing that kind of stuff, at some point.

Nb: I hope it's not OT for the core list - or is it time to create a
user
group ?

cheers,

-- Thibaut

On Fri, Feb 27, 2009 at 8:54 PM, Thibaut Barrère
E1deaac6561498a0e7472e6268ea9ccc?d=identicon&s=25 Jimmy Schementi (Guest)
on 2009-02-28 01:09
(Received via mailing list)
Awesome stuff! If you make this into its own github project, I can add
it to http://github.com/ironruby/ironruby-contrib as a submodule.
That'll force me to keep it updated =)

From: ironruby-core-bounces@rubyforge.org
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Thibaut
Barrère
Sent: Friday, February 27, 2009 2:46 PM
To: ironruby-core@rubyforge.org
Subject: Re: [Ironruby-core] A tiny DSL to build Windows::Forms menus
from IronRuby - review wanted

After chatting with Ivan, I created some code to build Forms too:




form = Magic.build do



  form(:text => "Hello") do



    flow_layout_panel(:dock => DockStyle.fill) do



      button(:text => "Click me!", :click => lambda {
MessageBox.Show("Hello") })



      button(:text => "Quit", :click => lambda { Application.Exit })



    end



  end



end






I use method_missing and transform the method name from
flow_layout_panel to FlowLayoutPanel class etc.

After using these a bit, I'm pretty sure we'll end up with some
community project sharing that kind of stuff, at some point.

Nb: I hope it's not OT for the core list - or is it time to create a
user group ?

cheers,

-- Thibaut

On Fri, Feb 27, 2009 at 8:54 PM, Thibaut Barrère
<thibaut.barrere@gmail.com<mailto:thibaut.barrere@gmail.com>> wrote:
Hi,

I think it looks very nice. It's a shame that you have to resort to
direct lambda's since you can't pass two lambda's in, but otherwise it's
a nice visual representation of the menu, in code.
thanks for the feedback, appreciated!

I just realised that I can also use this (without modifying the
implementation):

    item("&PowerBlade").click { MessageBox.Show("Powerblades are
amazing...") }

instead of

    item("&PowerBlade", lambda { MessageBox.Show("Powerblades are
amazing...") }

same effect, slightly more readable though.

cheers, and I shall move on to long running operations.

-- Thibaut




JD



From:
ironruby-core-bounces@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org>
[mailto:ironruby-core-bounces@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org>]
On Behalf Of Thibaut Barrère
Sent: Thursday, February 26, 2009 2:26 PM
To: ironruby-core
Subject: [Ironruby-core] A tiny DSL to build Windows::Forms menus from
IronRuby - review wanted



Hi,



I started working on UI bits, both for Ivan book and because my
customers are interested (and well - because it's fun, too!). First
topic is how to build menus more easily (next one will be long running
operations and how to sugar them).



I'd be interested to get your opinion on both the DSL syntax (below for
quick read or
here<http://github.com/thbar/ironruby-labs/blob/66b45fd...
on github) and the
implementation<http://github.com/thbar/ironruby-labs/blob/66b45fd....



form.menu = MainMenu.build do
  item("&File") {
    item("&New") {
      item("Spreadsheet")
      item("Document")
    }
    item "&Quit", lambda { Application.Exit }
  }
  item("&Tools") {
    item "&PowerBlade", lambda { MessageBox.Show("Powerblades are
amazing...") }
    item "&Scissors"
  }
end



what do you think ?



cheers,



Thibaut Barrère

--
LoGeek
[blog] http://evolvingworker.com - tools for a better day
[blog] http://blog.logeek.fr - about writing software
91eb330fb36d1e03c856574dfb77d2bc?d=identicon&s=25 Thibaut Barrère (thbar)
on 2009-02-28 11:44
(Received via mailing list)
Hi Jimmy,

> Awesome stuff! If you make this into its own github project, I can add it
> to http://github.com/ironruby/ironruby-contrib as a submodule. That’ll
> force me to keep it updated =)
>
glad you like it! I'll definitely extract it to a separate github
project
later on - I'll ping you when I do so.

-- Thibaut
91eb330fb36d1e03c856574dfb77d2bc?d=identicon&s=25 Thibaut Barrère (thbar)
on 2009-03-04 10:01
(Received via mailing list)
Hi Jimmy et al,

>> Awesome stuff! If you make this into its own github project, I can add it to
>> http://github.com/ironruby/ironruby-contrib as a submodule. That’ll force me
>> to keep it updated =)

> glad you like it! I'll definitely extract it to a separate github project later on - 
I'll ping you when I do so.

not sure if my annoucement was clear - the separate project is now
available. It's called Magic:

http://github.com/thbar/magic/tree/master

At the end I realize the syntax is totally shooesesque
(http://shoooes.net/).

I'm in the process of evolving it so that it works well with WPF and
Silverlight (and QuickGraph, too).

cheers,

-- Thibaut
This topic is locked and can not be replied to.