{"id":18,"date":"2004-08-14T15:25:17","date_gmt":"2004-08-14T22:25:17","guid":{"rendered":"\/?p=18"},"modified":"2004-08-14T15:25:17","modified_gmt":"2004-08-14T22:25:17","slug":"gui-xul-editor","status":"publish","type":"post","link":"https:\/\/benjamin.smedbergs.us\/blog\/2004-08-14\/gui-xul-editor\/","title":{"rendered":"GUI XUL editor"},"content":{"rendered":"<p>Open standards cannot effectively compete with Microsoft XAML and other closed technologies for large market share without a good set of developer tools that make authoring and developing easy (or at least easier). Visual Basic 5-6 were limited and inefficient programming platforms, but were wildly popular simply because developers could drag\/drop\/insert UI and it would just work. Microsoft Access data applications have much the same appeal. If XUL is to compete with these closed technologies, it needs to have a good GUI editor. The mozilla2.0 team is acutely aware of the problem, but nobody has yet stepped forward to lead the charge.<\/p>\n<p> I spoke briefly with <a href=\"http:\/\/webperso.easyconnect.fr\/danielglazman\/\">Daniel Glazman<\/a> about possible UI ideas for a GUI XUL editor, and how it might relate to the fantastic work that he is doing on <a href=\"http:\/\/www.nvu.com\/\">NVU, the next-generation HTML editor<\/a>. After a little bit of playing, it is obvious that the editing model for XUL would have to be very different from HTML.<\/p>\n<p>One of the primary factors involves the selection model. In HTML, you select text in a mostly-linear fashion to edit it. Even floats and other out-of-line objects have their own little &#8220;flow&#8221;. This is simply not the case for XUL, where you must think in terms of boxes and flex, fitting to the available\/desired space. In XUL editing, your &#8220;cursor&#8221; may be vertical or horizontal, and has a limited scope in the current containing box. Once you escape the immediate containing box, your cursor switches orientation from horizontal to vertical (and vice-versa). <\/p>\n<p>I did a basic playground stylesheet with a simple XUL file, and created a special element &lt;edit:cursor&gt; which would act as a &#8220;heavy&#8221; cursor. What I want to do is steal large parts of DOM inspector code, so that there is a tree sidebar which matches the GUI view.<\/p>\n<p>I found a few places where I need\/would really love additions to core gecko&#8230; somebody please tell me how hard these are:<\/p>\n<p>1) parse entity names with a special DOM element, instead of expanding them to text. This is pretty much a requirement to do large-scale apps that localize appropriately using the chrome registry<\/p>\n<p>2) a :-top-hover selector. I need a selector that only matches the topmost hovered element, not every hovered element.<\/p>\n<p>3) a -moz-min-margin rule&#8230; I can work around this if necessary, but in order to give space between boxes for drag-n-drop and other activities, I would like a -moz-min-margin: 4px rule applied to *.<\/p>\n<p>Did I just volunteer for something? I hope not ;)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Open standards cannot effectively compete with Microsoft XAML and other closed technologies for large market share without a good set of developer tools that make authoring and developing easy (or at least easier). Visual Basic 5-6 were limited and inefficient programming platforms, but were wildly popular simply because developers could drag\/drop\/insert UI and it would [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-18","post","type-post","status-publish","format-standard","hentry","category-mozilla"],"_links":{"self":[{"href":"https:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/posts\/18","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/comments?post=18"}],"version-history":[{"count":0,"href":"https:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/posts\/18\/revisions"}],"wp:attachment":[{"href":"https:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/media?parent=18"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/categories?post=18"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/tags?post=18"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}