[Blobs] Blobs cabal support

Einar Karttunen ekarttun at cs.helsinki.fi
Fri Nov 25 06:23:29 EST 2005


Hello

Here is a small patch that I am using to make Blobs
build with Cabal.

- Einar Karttunen
-------------- next part --------------

New patches:

[Add Cabal support for building Blobs
Einar Karttunen <ekarttun at cs.helsinki.fi>**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 at cs.york.ac.uk**20051121110649] 
[Draw rectangle when dragging canvas area for multiple selection.
Malcolm.Wallace at cs.york.ac.uk**20051118235443] 
[Store node palette in the network document rather than in the GUI state.
Malcolm.Wallace at 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 at cs.york.ac.uk**20051117183706] 
[Dragging an area on the canvas now makes a multiple selection.
Malcolm.Wallace at 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 at cs.york.ac.uk**20051117163055] 
[another example diagram to play with (wiring.blobs)
Malcolm.Wallace at cs.york.ac.uk**20051117162709] 
[update simple.blobpalette with correct types, new shapes
Malcolm.Wallace at cs.york.ac.uk**20051117161901] 
[document new features 2005-11-16 MW
Malcolm.Wallace at cs.york.ac.uk**20051116224439] 
[Permit multiple selection, which can be dragged as one unit.
Malcolm.Wallace at 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 at cs.york.ac.uk**20051116161648] 
[allow caller style options to override default shape style
Malcolm.Wallace at 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 at 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 at cs.york.ac.uk**20051116121100] 
[make basic app demo slightly more interesting
Malcolm.Wallace at 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 at 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 at 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 at 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 at cs.york.ac.uk**20051104131850] 
[extend the RTN palette with more protocols
Malcolm.Wallace at cs.york.ac.uk**20051104131612] 
[add a pic of Dazzle to the webpage
Malcolm.Wallace at cs.york.ac.uk**20051104131508] 
[notes on version dependencies
Malcolm.Wallace at cs.york.ac.uk**20051017133112] 
[change example .blobs file
Malcolm.Wallace at cs.york.ac.uk**20051017112444] 
[hyperlink for Dazzle
Malcolm.Wallace at cs.york.ac.uk**20051017112214] 
[add usage info and to do list
Malcolm.Wallace at cs.york.ac.uk**20051016152815] 
[add a basic webpage describing Blobs
Malcolm.Wallace at cs.york.ac.uk**20051016121305] 
[add copyright/licence information
Malcolm.Wallace at cs.york.ac.uk**20051014161506] 
[multi-line text
Malcolm.Wallace at 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 at cs.york.ac.uk**20051014155932] 
[different display colours
Malcolm.Wallace at 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 at cs.york.ac.uk**20051014155553] 
[preliminary blobpalette for RTN notation
Malcolm.Wallace at cs.york.ac.uk**20051014153022] 
[all parser combinators now from HaXml
Malcolm.Wallace at 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 at 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 at 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 at cs.york.ac.uk**20050930155234] 
[split InfoKind class, introduce Parse class
Malcolm.Wallace at 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 at cs.york.ac.uk**20050930154656] 
[format tweak
Malcolm.Wallace at cs.york.ac.uk**20050930154530] 
[add ops to Set
Malcolm.Wallace at cs.york.ac.uk**20050930154215
 Add null test and Ord instance on Sets.  (Already in fptools)
] 
[rejig XML writer/parser
Malcolm.Wallace at 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 at 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 at cs.york.ac.uk**20050822160344] 
[use ShapeStyle attributes
Malcolm.Wallace at 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 at 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 at 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 at cs.york.ac.uk**20050819135525] 
[refactor DoublePoint defn
Malcolm.Wallace at 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 at 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 at cs.york.ac.uk**20050728141215] 
[improve control points
Malcolm.Wallace at 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 at cs.york.ac.uk**20050728140928] 
[Add MacOSX icon to application bundle
Malcolm.Wallace at cs.york.ac.uk**20050726143225] 
[MacOS icons
Malcolm.Wallace at cs.york.ac.uk**20050726141841] 
[Edges can have control points
Malcolm.Wallace at 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 at cs.york.ac.uk**20050726104633] 
[file extension will be ".blobs"
Malcolm.Wallace at cs.york.ac.uk**20050726103950] 
[compile with HaXml >= 1.13
Malcolm.Wallace at cs.york.ac.uk**20050726103914] 
[get past a strict cpp
Malcolm.Wallace at cs.york.ac.uk**20050726103831] 
[build on MacOS
Malcolm.Wallace at cs.york.ac.uk**20050726103736] 
[initial import
Malcolm.Wallace at 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


More information about the Blobs mailing list