[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