X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sbcglobal.net; s=s1024; t=1374535444; bh=8sWN7sMkVZnMQ0UvgoqGXO6VCkKkaEn8U5zx4ERfe74=; h=X-Yahoo-Newman-Id:X-Yahoo-Newman-Property:X-YMail-OSG:X-Yahoo-SMTP:X-Rocket-Received:Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Content-Transfer-Encoding:Message-Id:References:To:X-Mailer; b=GzVF7C1OtY0a2omjvTq27oFFD40Up1BxQNa/vIggEYt2WKgtfHCh0Wx+zqxtmTE7HJZmvOWeEMArx+JBhS36VPOpbF7idSTXKdefdVOLM0jSvFhlkzqmH4W9AtdmVNJPnm980he4u+U9mm842yhx4cOTqUznjbOP7pHq3HqZ39s= X-Yahoo-Newman-Id: 871472 DOT 99310 DOT bm AT smtp104 DOT sbc DOT mail DOT bf1 DOT yahoo DOT com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: kRvWNSAVM1ki6qLXsdJNqJ8EKgxoq5mG2TJ7l6KHmHVQcnn VkezvZPnKHZhQt6zTRk7pvzvdIdxXBkQqXef4sOWcN0TqZo8_uF6eb.oD9r6 qnGV80nvVw00WP7yuK0UjsOxLYYA8eutHbKO_oSDBLov1cGNjPCvri7q4nwq bdM6DZulRVYX.a7W1kFgVdRpagADNdNgHHBkeSjA45xE3g3cMD1gSo_VIRI. NitzrxX3525S9HiGUaqHAhgVRdGOHLZnYcBHRM9bJpuL1MBxilpU3FgBeH32 4TUzOesxIvL4f6.nIsaVwzEbugIMA_nzSgC0fCoV887K8LRiR3L2ZRpi1THW 3cY9vVB4p3wUNaFiG9LI6pLBM6BXy93ddCxr.x0PW428OqMzL7duh7dbkmqL AF9VZuDzPXLt0OqU.uTNip7x.i.A.8nc4BAH4kHrqEj6AXaImBBTgljxdd.h Od6xRS2txvWkj6svThMRP6mYuCfpWZ8AIXrN3mBbS6MLNHKsSeBEBtNZrXzW ovmRhOTvDu39IpHYR5ABybTRfc0BOisKDlvEZQHI0KE.pIY6lZV0aitNB5C6 M_FXqyMYjoNtvpoSUIJNE3Nz69smAEApALJWuvHQRuPo33dimAn7PWnb0KsT 3.9OiLfxlU9tD X-Yahoo-SMTP: b8jVkbOswBAqZ4BhECp7nxPJUfTGEnEGv_G4qgQeZMeAbA-- X-Rocket-Received: from [192.168.1.66] (ehennes AT 69 DOT 109 DOT 30 DOT 233 with plain) by smtp104.sbc.mail.bf1.yahoo.com with SMTP; 22 Jul 2013 16:24:04 -0700 PDT Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\)) Subject: Re: [geda-user] Non-modal Dialogs From: Edward Hennessy In-Reply-To: <20130722222617.6c1528c1@Parasomnia.thuis.lan> Date: Mon, 22 Jul 2013 16:24:03 -0700 Content-Transfer-Encoding: 7bit Message-Id: <64C5494E-592F-43FA-A513-EB60B54E361E@sbcglobal.net> References: <2174C2C2-6FAF-4544-A4C0-5FDBD564A6FB AT sbcglobal DOT net> <20130722222617 DOT 6c1528c1 AT Parasomnia DOT thuis DOT lan> To: geda-user AT delorie DOT com X-Mailer: Apple Mail (2.1508) Reply-To: geda-user AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: geda-user AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk Bas, Thank you for the article. Here is another pattern designed to improve testability. It strives for the same philosophy, to remove logic from the dialog box, but in a different way. http://martinfowler.com/eaaDev/PresentationModel.html The immediate problem I'm up against is identifying a mechanism for property change notification. For property change notification, I prefer gobject signals. However, gobject is cumbersome and I'm not sure all developers would be onboard with that direction. The Humble Dialog Box implementation closely resembles the observer pattern from the Gang of Four. This system would be another option. I also need to look at the weak references already in the code. And of course, there is also the callback function pointer. ;) Cheers, Ed On Jul 22, 2013, at 1:26 PM, Bas Gieltjes wrote: > > Hello Edward, > > See the attached paper "The Humble Dialog Box" by Michael Feathers that > describes a dialog box implementation. The implementation separates the > data (model) and view, when the data changes the dialog box is > updated. I hope that the paper is not too object oriented. > > You know how the current implementation of the dialog boxes and are > better able to guess if the paper is a useful start. > >> Implementation of non-modal dialogs requires some form of property >> change notification. This way, if an object property gets changed, >> either through the GUI or scripting, the dialog box widgets stay in >> sync with the value of the property. How should property change >> notification be implemented in gschem/libgeda? > > Bas > -- >