New patches: [Add Cabal support for building Blobs Einar Karttunen **20051125112040] { addfile ./Blobs.cabal hunk ./Blobs.cabal 1 +Name: Blobs +Version: 0.1 +License: LGPL +Author: Arjan van IJzendoorn, Martijn Schrage, Malcolm Wallace +Description: Diagram editor +Homepage: http://www.cs.york.ac.uk/fp/darcs/Blobs/ +Build-Depends: base, haskell98, wx >= 0.9, wxcore >= 0.9, HaXml >= 1.14, lang + +executable: blobs +main-is: Main.hs +Hs-Source-Dirs: src lib/DData +Ghc-Options: -O2 +Extensions: ForeignFunctionInterface, MultiParamTypeClasses + addfile ./Setup.hs hunk ./Setup.hs 1 +import Distribution.Simple + +main = defaultMain } Context: [oops, spell the authors' names correctly! Malcolm.Wallace@cs.york.ac.uk**20051121110649] [Draw rectangle when dragging canvas area for multiple selection. Malcolm.Wallace@cs.york.ac.uk**20051118235443] [Store node palette in the network document rather than in the GUI state. Malcolm.Wallace@cs.york.ac.uk**20051118171005 Change the representation of the palette of node shapes very slightly. The palette is now stored as a part of the document (network) itself, rather than in the state of the GUI. This means when you load a new document, you automatically get the palette it was built with. Also, a node can now store either the name of its shape (for lookup in the palette), or its full description, with the shape name being preferred in most circumstances. ] [doc update for today's change 2005-11-17 MW Malcolm.Wallace@cs.york.ac.uk**20051117183706] [Dragging an area on the canvas now makes a multiple selection. Malcolm.Wallace@cs.york.ac.uk**20051117183152 Dragging out a rectangle on the background canvas now selects all the nodes and control points within the dragged area. I haven't worked out how to display the rectangle itself. The multiple selection can then be moved by dragging any one of its items. ] [do not override the solidFill colour when drawing a shape Malcolm.Wallace@cs.york.ac.uk**20051117163055] [another example diagram to play with (wiring.blobs) Malcolm.Wallace@cs.york.ac.uk**20051117162709] [update simple.blobpalette with correct types, new shapes Malcolm.Wallace@cs.york.ac.uk**20051117161901] [document new features 2005-11-16 MW Malcolm.Wallace@cs.york.ac.uk**20051116224439] [Permit multiple selection, which can be dragged as one unit. Malcolm.Wallace@cs.york.ac.uk**20051116202316 Rather than being allowed to select only one node, edge, or control point, it is now possible to add multiple items into the selection by holding down the Meta key when clicking an entity. (Meta = Cmd (helicopter) key on MacOS, probably either Alt or Box on Windows.) The Meta-click acts as a toggle, so you can remove items from the selection also. The multiple selection can be dragged to new positions on the canvas, just like a single selection. However, because of this, it only makes sense to allow nodes and control points within a multiple selection. An edge has no location independent of the nodes/controls, so cannot itself be moved. ] [left-click on canvas resets current selection Malcolm.Wallace@cs.york.ac.uk**20051116161648] [allow caller style options to override default shape style Malcolm.Wallace@cs.york.ac.uk**20051116160919 The call to draw a shape should allow the caller to override the normal shape styling, in order to indicate e.g. current selection by bold-ifying. ] [remove class Analysis, replacing it with datatype Operations Malcolm.Wallace@cs.york.ac.uk**20051116154759 The class Analysis was too restrictive, defining only a single graph-altering operation (and its reversion) per application. Replace it with a datatype storing many possible graph operations. These operations are added to a new title-bar menu. ] [trim dead import Malcolm.Wallace@cs.york.ac.uk**20051116121100] [make basic app demo slightly more interesting Malcolm.Wallace@cs.york.ac.uk**20051116120656 Now that we can edit the info on an edge, let's make the simple application demo slightly more interesting. The nodes now collect all the numbers on their incoming edges into a list. Then the sum of the numbers in a node is pushed out along its outgoing edges. If you keep hitting the 'perform analysis' step, it will eventually reach a fixed point. ] [allow editing of edge info Malcolm.Wallace@cs.york.ac.uk**20051116110633 It is now possible to edit the info field on an edge, just like the info field on a node. (Through a context menu, or pressing 'i' whilst the edge is selected.) ] [merge module Node into module Network Malcolm.Wallace@cs.york.ac.uk**20051115173440 This patch incorporates two improvements from Arjan. * First, the module Node.hs has been removed, with its contents merged into Network.hs. * Secondly, the types for Node and Edge have been made fully abstract. Their internals are no longer available, only getters and setters. ] [remove all the FPTC stuff Malcolm.Wallace@cs.york.ac.uk**20051104140650 The FPTC backend should not be publically available (yet). Initially, it was in the repository as a guide to how to use the class Analysis. This has now been replaced by a more trivial example, using just Ints stored at nodes, and propagating them along edges. ] [remove zipfile of original sources Malcolm.Wallace@cs.york.ac.uk**20051104131850] [extend the RTN palette with more protocols Malcolm.Wallace@cs.york.ac.uk**20051104131612] [add a pic of Dazzle to the webpage Malcolm.Wallace@cs.york.ac.uk**20051104131508] [notes on version dependencies Malcolm.Wallace@cs.york.ac.uk**20051017133112] [change example .blobs file Malcolm.Wallace@cs.york.ac.uk**20051017112444] [hyperlink for Dazzle Malcolm.Wallace@cs.york.ac.uk**20051017112214] [add usage info and to do list Malcolm.Wallace@cs.york.ac.uk**20051016152815] [add a basic webpage describing Blobs Malcolm.Wallace@cs.york.ac.uk**20051016121305] [add copyright/licence information Malcolm.Wallace@cs.york.ac.uk**20051014161506] [multi-line text Malcolm.Wallace@cs.york.ac.uk**20051014160025 Fix logicalDrawText to cope with multi-line strings. There are now justification options too. Horizontally, within the box centred at the given location, you can justify Left, Centre, or Right. Vertically, you can justify the box so the Top, Middle, or Bottom is on the given location. ] [changing node shape from context menu should change the node info too Malcolm.Wallace@cs.york.ac.uk**20051014155932] [different display colours Malcolm.Wallace@cs.york.ac.uk**20051014155721 Add some constants for using different display colours for node labels, node info, and edge info. ] [add ability to revert the analysis Malcolm.Wallace@cs.york.ac.uk**20051014155553] [preliminary blobpalette for RTN notation Malcolm.Wallace@cs.york.ac.uk**20051014153022] [all parser combinators now from HaXml Malcolm.Wallace@cs.york.ac.uk**20051014152026 Move from using several different sets of parser combinators to exclusively use only those in HaXml-1.14. Ditch class Read for Palettes, and now use class Parse from module Text.ParserCombinators.TextParser. Ditch class Haskell2XmlNew, and now go with class XmlContent. ] [big one Malcolm.Wallace@cs.york.ac.uk**20051007102345 Lots of overlapping things here. * class Read is no longer a superclass of Parse * add more parameterised InfoKind types to various Network types - global info (mainly for checking against node info) on Network - edge info on Edge * GUI options to show/edit the new info - removed boxes around GUI labels, and moved labels closer to their blobs. - info on Edges now shown * class InfoKind becomes multi-parameter, linking two info types (e.g. node with global, edge with global) * new multi-parameter class Analysis, whose member method essentially takes a whole network and returns a new one. FPTC is now a specific instance of the general GUI + class Analysis. * data FaultModel records global info: failure types of interest. * the original FPTC analysis from the previous tool has been plumbed in. ] [expand the API Malcolm.Wallace@cs.york.ac.uk**20051007095215 Bring the exports closer to those currently in package base, namely change "single" to "singleton", and add "map" and "mapMonotonic". ] [suck in some initial FPTC stuff Malcolm.Wallace@cs.york.ac.uk**20050930155234] [split InfoKind class, introduce Parse class Malcolm.Wallace@cs.york.ac.uk**20050930154829 The InfoKind class was trying to do too much. Split off the parsing bit into a new class Parse, as a replacement for the Read class where that was previously used. Should give better error messages. ] [format tweaking Malcolm.Wallace@cs.york.ac.uk**20050930154656] [format tweak Malcolm.Wallace@cs.york.ac.uk**20050930154530] [add ops to Set Malcolm.Wallace@cs.york.ac.uk**20050930154215 Add null test and Ord instance on Sets. (Already in fptools) ] [rejig XML writer/parser Malcolm.Wallace@cs.york.ac.uk**20050927144054 Originally, this module used home-grown (in Utrecht) conversion functions from values to XML and back, with better errors and warnings than HaXml provided. Now that the Haskell2XmlNew part of HaXml has been improved, we can get much of the error/warning stuff for free now, plus it is all managed through a single class. ] [new info field on every node Malcolm.Wallace@cs.york.ac.uk**20050927143505 Add a new polymorphic info field on every node of the graph. The class InfoKind constrains the info type, and eventually (in module Main), the type must be resolved to something concrete, for now just (). Meanwhile, the info field can be displayed on the diagram (there is a new View menu, controlling the value of DisplayOptions), and edited as if it were text (parsed back via Read class). ] [comment-out the canvas border Malcolm.Wallace@cs.york.ac.uk**20050822160344] [use ShapeStyle attributes Malcolm.Wallace@cs.york.ac.uk**20050822160059 Bring the ShapeStyle datatype into play. The palette of node shapes now allows changes of fill-colour, stroke-colour, and stroke-width. ] [change colour representation Malcolm.Wallace@cs.york.ac.uk**20050822155546 Introduce a local algebraic type "Colour" for colours, and convert to the WX type "Color" when necessary. This is purely so we can Read and Show them. ] [Add a palette of shapes. Malcolm.Wallace@cs.york.ac.uk**20050819135624 Add a new feature: a user-definable palette of shapes for nodes. The palette is just a haskell value containing shapes, stored in a file and loaded at runtime by a new 'Edit' menu item. A node is still always created initially as a circle, but can be changed afterwards to another shape by selecting from the palette revealed by the context menu on the node. ] [bugfix for rendering Lines variant of Shape type. Malcolm.Wallace@cs.york.ac.uk**20050819135525] [refactor DoublePoint defn Malcolm.Wallace@cs.york.ac.uk**20050819135113 Refactor the definition of the DoublePoint type to avoid named fields. This is purely to make the derived instances of read and show simpler, so I can write values nicely by hand and have them 'read' properly. ] [allow different shape nodes Malcolm.Wallace@cs.york.ac.uk**20050817153909 Added a fairly general Shape description type, to allow arbitrary shapes of nodes. For now however, the diagram editor only allows switching between circles and squares. ] [better initial screen position Malcolm.Wallace@cs.york.ac.uk**20050728141215] [improve control points Malcolm.Wallace@cs.york.ac.uk**20050728140958 When adding a control point, make sure it is in the correct segment of the line, not necessarily at one end. (from Arjan van IJzendoorn) ] [blobs becomes Blobs Malcolm.Wallace@cs.york.ac.uk**20050728140928] [Add MacOSX icon to application bundle Malcolm.Wallace@cs.york.ac.uk**20050726143225] [MacOS icons Malcolm.Wallace@cs.york.ac.uk**20050726141841] [Edges can have control points Malcolm.Wallace@cs.york.ac.uk**20050726104743 The concept of a "control point" on an edge is introduced, to aid the clarity of diagrams. A control point is just an intermediate coordinate that the line must pass through when drawn. In the code these are known as "via" points for short. They can be added through a context menu on an edge; they can be dragged and dropped; they can be deleted through a context menu on the point itself. ] [a simple blobs diagram Malcolm.Wallace@cs.york.ac.uk**20050726104633] [file extension will be ".blobs" Malcolm.Wallace@cs.york.ac.uk**20050726103950] [compile with HaXml >= 1.13 Malcolm.Wallace@cs.york.ac.uk**20050726103914] [get past a strict cpp Malcolm.Wallace@cs.york.ac.uk**20050726103831] [build on MacOS Malcolm.Wallace@cs.york.ac.uk**20050726103736] [initial import Malcolm.Wallace@cs.york.ac.uk**20050726103303 The original "Blobs" source code, supplied by Arjan van IJzendoorn. Trimmed down from the Universiteit Utrecht application for Bayesian networks, "Dazzle". http://www.cs.uu.nl/dazzle/ ] Patch bundle hash: c6c5260df3d06cae85e5773f5449d934bf13ae91