On Sat, 25 Jan 2014 09:18:44 +0200, Frank Millman wrote: > I have realised that we unlikely to come to an agreement on this in the > near future, as our philosophies are completely different. > > You [Chris Angelo] have stated that your objective is to express as > much as possible in Python code. > > I have stated that my objective is to express as little as possible in > Python code.
Interesting perspective. > We would have to resolve that difference of opinion first, before > discussing our respective approaches in detail, and that is way beyond > the scope of this thread. > > As a brief example of my approach, here is how I would write your simple > 'About' box. > > Here is your version - > > mainwindow = GTK2.Window(0)->add(GTK2.Vbox(0,0) > ->add(GTK2.Label("About Gypsum: big long multi-line string")) > ->add(GTK2.HbuttonBox() > ->add(GTK2.Button("Close")) > ->add(GTK2.Button("Foobar")) > ) > ); That's not Python code, but it's reasonably concise and readable. (By the way, what language is it?) The meaning is fairly obvious, and it's all pretty simple. I'd like to see a more human readable GUI designer language: # hypothetical code in a DSL for creating GUI elements create new window mainwindow with mainwindow add vbox at 0,0 add label "About Gypsum: big long multi-line string" add hbuttonbox add button "Close" add button "Foobar" but what you've got there is okay. Seven lines of readable code. > Here is my version - > > <form name="ChrisAbout_form"> > <data_objects/> > <input_params/> > <output_params/> > <rules/> > <frame> > <body> > <block/> <!-- an html div --> > <panel/> <!-- an html table --> > <row/> > <col/> > <text value="This is line one of a multi-line string"/> <row/> > <col/> > <text value="This is line two of a multi-line string"/> <row/> > <col/> > <text value="This is line three of a multi-line string"/> > </body> > <button_row> <!-- an html div --> > <button btn_id="btn_close" btn_label="Close" len="60" > btn_enabled="true" btn_validate="false" btn_default="true"> > <end_form state="completed"/> > </button> > <button btn_id="btn_foo" btn_label="Foobar" len="60" > btn_enabled="true" btn_validate="false" btn_default="false"> > <pyfunc name="path1.path2.foobar"/> > </button> > </button_row> > <frame_methods> > <method name="on_req_close"> <!-- user clicked [X] or pressed > Shift_F4 --> > <end_form state="completed"/> > </method> > <method name="on_req_cancel"> <!-- user pressed Escape --> > <end_form state="completed"/> > </method> > </frame_methods> > </frame> > </form> Thirty. Seven. Lines. Of. XML. You've got to be kidding me. How can you *possibly* prefer that? First rule of XML: it is not human-writable. It's barely human-readable. It's a *document* interchange language which happens to use mostly human- readable elements, which is not the same thing at all. It's designed to be machine written. Using XML for *data* is abusive to both the XML design goals and to the poor schmuck who has to read your config file. Using XML *as a programming language* is not just abuse, it's getting into grievous bodily harm territory. Here's a simple programming expression, familiar to most people, common to hundreds of programming languages: 3+4*5 Here it is written as XML: <add><int>3</int><mult><int>4</int><int>5</int></mult></add> Source: http://www.ibm.com/developerworks/xml/library/x-sbxml/index.html More here: http://www.codinghorror.com/blog/2008/05/xml-the-angle-bracket-tax.html http://myarch.com/why-xml-is-bad-for-humans/ If you expect a human being to routinely *read*, let alone *write*, XML in preference to some real programming language, that is a horrible, horrible thing. Using XML as an internal, machine-generated, format not intended for humans is not too bad. Anything else is abusive. -- Steven -- https://mail.python.org/mailman/listinfo/python-list