Alignment, Saving and more Mon, May 11. 2009
So working on the programm for a week now, we get quite a few things done for the first stable version.
I added a few new Unitelements. for example for merging RGB-channels, for FFT, Saving and more. Adding new units is kind of a in-between task, if I get bored, I add a new one.
Alot of work has been spent fixing the algorithm for sorting the units to generate the final macro. I introduced Frido to the topic and explaining the algorithm helped finding a few issues. Rubber duck debugging works.
Frido also fixed a problem with the GUI. You can now actually resize the sidepane on the left.
Also new is to display a grid on the workspace and to align all units to this grid. To sum up the obvious new features is to collaps units to take up less space on the workspace.

Here is a screenshot, work continues with debugging.
I added a few new Unitelements. for example for merging RGB-channels, for FFT, Saving and more. Adding new units is kind of a in-between task, if I get bored, I add a new one.
Alot of work has been spent fixing the algorithm for sorting the units to generate the final macro. I introduced Frido to the topic and explaining the algorithm helped finding a few issues. Rubber duck debugging works.
Frido also fixed a problem with the GUI. You can now actually resize the sidepane on the left.
Also new is to display a grid on the workspace and to align all units to this grid. To sum up the obvious new features is to collaps units to take up less space on the workspace.

Here is a screenshot, work continues with debugging.
Changes Wed, Apr 8. 2009
I have to do a small status report. I finished writing my Bachelor thesis, had my oral exam on monday and got my degree. Everything went perfect and I'm relieved everything went alright. Understandably, I had to get away from it for a couple of days and I began to work on the changes for version 1.0 just this weekend. I found a couple of bugs and I got a few reports I will fix for the first full release. Part of the changes will be to see how I can get the sourcse to a point that can be released. I'm not saying they are a mess at the moment, but the dependencies between my application and VisualAp could need some cleanup and the project-structure for compilation has to be checked.
More screens Wed, Feb 25. 2009
Current UI Thu, Feb 12. 2009
Moving to AppFrameWork Sun, Dec 28. 2008
Shortly before christmas I finished the work on the prototype, tagged this version and began a major overhaul of the application structure. I based the application on Swinglab's AppFrame and SwingWorker. This Desktop-Framework allows me to have a unified multithread application with some good application guide lines.
So far I only developed my prototype around an application-structure, that a mix of the basics I learned in Java, some influences from my work with Ruby-on-rails and some evil work arounds to achieve my goals. AppFramework should optimise this and get the application in a better shape.
There are many new things I have to use with AppFramework, for example Introspection or Annotated Object creation for the Actions. So my app is changing alot at the moment.
I'm also thinking how the actual GUI will look like. I'd like to keep it clean and simple, but I have to see what will be used actually.
So far I only developed my prototype around an application-structure, that a mix of the basics I learned in Java, some influences from my work with Ruby-on-rails and some evil work arounds to achieve my goals. AppFramework should optimise this and get the application in a better shape.
There are many new things I have to use with AppFramework, for example Introspection or Annotated Object creation for the Actions. So my app is changing alot at the moment.
I'm also thinking how the actual GUI will look like. I'd like to keep it clean and simple, but I have to see what will be used actually.
Interfaces Fri, Dec 19. 2008
For another course I'm working on a PacMan-implementation in c++. For the graph realisation we thought about a small java editor to create the necessary XML-files. I spoke with Matthias about this editor and I got a bunch of new ideas and hints for Imageflow.
So today I reworked the Connection-Interface. Actually making it an Interface. The Pins (Inputs and Outputs) now implement the Connectable interface, which requires methods to connect this pins. This refactoring also cleaned alot of the old methods of registering connections using IDs. This is fully object-oriented now, using references.
Actually I found Interfaces are a nice thing once you start to use them. Changed the Parameters-implementation as well.
I wish VisualAp would've used more. I always get back to some small implementatoin issues when I enherite from an VisualAp-object and the variable I need is private and not protected. I did many of this small changes. I hope I find a good way to collect them, sort them, explain them and get them to the author, so he can add them tot he regular visualap version.
So today I reworked the Connection-Interface. Actually making it an Interface. The Pins (Inputs and Outputs) now implement the Connectable interface, which requires methods to connect this pins. This refactoring also cleaned alot of the old methods of registering connections using IDs. This is fully object-oriented now, using references.
Actually I found Interfaces are a nice thing once you start to use them. Changed the Parameters-implementation as well.
I wish VisualAp would've used more. I always get back to some small implementatoin issues when I enherite from an VisualAp-object and the variable I need is private and not protected. I did many of this small changes. I hope I find a good way to collect them, sort them, explain them and get them to the author, so he can add them tot he regular visualap version.
Warming up again Mon, Dec 15. 2008
I began to work in my code again yesterday. In January and February I will continue to work on it with more time at hand.
I'm working on several problems at the moment.
VisualAp already brought support for Copy-Cut-Paste, which I changed slightly, because there were some problems with my object-cloning. I do deep-copies by hand, so this had to be fixed and checked.
I'm working on some ways to make graph-checks on the fly and to prohibit illegal graphs when they are build. There is also some basic mechanism to show problems in the graph. It doesn't work nice yet, so I skip the screenshots.
I expand my unit-testing with every problem I got. I try to identify the problem, isolate it in tests and this way, my test-environment grows. It's not totally test-driven, but it's a great development support.
I'm still looking for a general programm structure I can work with. I should find one at the beginning of January, so I can really start with the final application then.
I'm working on several problems at the moment.
VisualAp already brought support for Copy-Cut-Paste, which I changed slightly, because there were some problems with my object-cloning. I do deep-copies by hand, so this had to be fixed and checked.
I'm working on some ways to make graph-checks on the fly and to prohibit illegal graphs when they are build. There is also some basic mechanism to show problems in the graph. It doesn't work nice yet, so I skip the screenshots.
I expand my unit-testing with every problem I got. I try to identify the problem, isolate it in tests and this way, my test-environment grows. It's not totally test-driven, but it's a great development support.
I'm still looking for a general programm structure I can work with. I should find one at the beginning of January, so I can really start with the final application then.
Featureflash Sat, Nov 1. 2008
During the last few days many new features arrived. Nodes can be added via a popup-menü. Existing nodes can be copied. Finally you can turn Nodes into DisplayUnits in the GUI. DisplayUnits show their results, while normal units just pass the result to the next unit. I'm just wondering, if it makes sense to add a bypass-function, although this can be done easily in the graph anyway.
Node deletion will be up next. One major task, that I haven't touched yet is the interface for changing the parameters of a unit. So far those can't changed. I know VisualAp has something, but I haven't checked if I can use it.
Node deletion will be up next. One major task, that I haven't touched yet is the interface for changing the parameters of a unit. So far those can't changed. I know VisualAp has something, but I haven't checked if I can use it.
To much to go into details Wed, Oct 29. 2008
Another day of work on the project. My major attention is at the algorithms, that check the workflow. It's still work in progress, but I don't have to pay attention to the order in which the units are listed. It's checked and sorted automatically.
I also did some work on the connections. Reconnecting nodes automatically creates new connections and deletes the old ones.
I added some simple FileDropper to the GPanel, so I can Drag'n drop image files and it creates a suited source unit. Obviously I develop on Mac, so these things look always nice while being handy.
Work will continue the next 4 days.
Here is the current GUI:
I also did some work on the connections. Reconnecting nodes automatically creates new connections and deletes the old ones.
I added some simple FileDropper to the GPanel, so I can Drag'n drop image files and it creates a suited source unit. Obviously I develop on Mac, so these things look always nice while being handy.
Work will continue the next 4 days.
Here is the current GUI:

The lower source was dragged on the GUI and manually connected to the nodes.
Connect() Tue, Oct 28. 2008
I can connect all units by hand and it still works at the end. 
I reworked some of the ways the connections are handled. It's not yet nice and not yet safe, but it works.
I reworked some of the ways the connections are handled. It's not yet nice and not yet safe, but it works.
Slightly off, but you see where it goes Thu, Oct 23. 2008
After a long and busy weekend and two days off, I continued the last two days. Here is the current status.

The nodes are being drawn and can be attached in the graph, though as you can see, the positioning is still off and I haven't yet figured out why. Also, if you do connect graphs, this new connection is not yet added to the backend representation of the flow-graph.
It can be noted, that I work iterative as you can see. I always keep a running version and and new features to this build. I refactor every now and then, but I guess I should do this more often. At the moment is function the main priority.
So far the application doesn't have any actions, during the weekend I will work on the implemenation of the "run"-button. Once this is done, you can start the app, it shows your hardcoded graph and on click you can make it work. I have some scribbles for the GUI, but I haven't spent much time on it yet.

The nodes don't attach correctly, but they attach, the GUI is starting to get some shape.
The nodes are being drawn and can be attached in the graph, though as you can see, the positioning is still off and I haven't yet figured out why. Also, if you do connect graphs, this new connection is not yet added to the backend representation of the flow-graph.
It can be noted, that I work iterative as you can see. I always keep a running version and and new features to this build. I refactor every now and then, but I guess I should do this more often. At the moment is function the main priority.
So far the application doesn't have any actions, during the weekend I will work on the implemenation of the "run"-button. Once this is done, you can start the app, it shows your hardcoded graph and on click you can make it work. I have some scribbles for the GUI, but I haven't spent much time on it yet.
Bridging the gap Fri, Oct 17. 2008
Ok, first small victories.
The last few days I spent analysing the VisualAp code structure and how everything fits together. The business-logic is different to the one I'll be using, although the basic workings are very very similar. So what I did is trying to find common points and to make the implementation in VisualAp more abstract. I tried to change as few as possible, I should contact the author of visualap. It's open source, so no problem there, but maybe he finds some of my changes usefull.
The basic structure in VisualAp is like this: you got a Bean, a small jar file, which is read and which contains the functions that are offered by this unit. This bean is encapsulated in a BeanDelegate. This beandelegate is stored in an array. The BeanDelegate was split into a Delegate Interface and the usual BeanDelegate for VisualAp and my NodeDelegate for ImageFlow. This is one example.
Another one would be, how to draw the flow-graph. That was much more tricky, because of different dependencies. First, the graph is painted by the GPanel, this accesses the list of BeanDelegates, as well as a list of all Nodes. I had to change a few things in the GPanel, so I can actually access the Node-list, add my own nodes, which extend the same Nodes-Interface as VisualAp. My nodes then get some nice new painting-methods, that I mentioned in the post before. So I create a UnitElement, I add it to a new Node, which has an origin on the panel and this Node draws it's NodeIcon. VisualAp already brings functions to select and move it. Very nice.
Actually, I wanted to post a screenshot, but a screenshot doesn't show anything, except for the things I showed in the last post.
Well anyway …

Next thing will be to extend this. Now it's only one single node, I'll add more and work on the methods to connect them.
May aim is to have a fully working graph asap. This means I have a bunch of nodes, I can connect them and somewhere a run button.
The last few days I spent analysing the VisualAp code structure and how everything fits together. The business-logic is different to the one I'll be using, although the basic workings are very very similar. So what I did is trying to find common points and to make the implementation in VisualAp more abstract. I tried to change as few as possible, I should contact the author of visualap. It's open source, so no problem there, but maybe he finds some of my changes usefull.
The basic structure in VisualAp is like this: you got a Bean, a small jar file, which is read and which contains the functions that are offered by this unit. This bean is encapsulated in a BeanDelegate. This beandelegate is stored in an array. The BeanDelegate was split into a Delegate Interface and the usual BeanDelegate for VisualAp and my NodeDelegate for ImageFlow. This is one example.
Another one would be, how to draw the flow-graph. That was much more tricky, because of different dependencies. First, the graph is painted by the GPanel, this accesses the list of BeanDelegates, as well as a list of all Nodes. I had to change a few things in the GPanel, so I can actually access the Node-list, add my own nodes, which extend the same Nodes-Interface as VisualAp. My nodes then get some nice new painting-methods, that I mentioned in the post before. So I create a UnitElement, I add it to a new Node, which has an origin on the panel and this Node draws it's NodeIcon. VisualAp already brings functions to select and move it. Very nice.
Actually, I wanted to post a screenshot, but a screenshot doesn't show anything, except for the things I showed in the last post.
Well anyway …

First view of the Imageflow application
Next thing will be to extend this. Now it's only one single node, I'll add more and work on the methods to connect them.
May aim is to have a fully working graph asap. This means I have a bunch of nodes, I can connect them and somewhere a run button.
« previous page
(Page 1 of 1, totaling 12 entries)
next page »
