rss

Quick note : fresh s/commit/push

Category : C#, Circ, Quick note

Just go and git-clone git://repo.or.cz/circ.git master, new features inside :) .

To introduce the post, let me show you what Circ now look like :

capture-circ.png

As you can notice there is a new UI style with resizable panel, distinct tabs for server-channel. It also show some features that I added to the backend like users fetching, topic support, timestamps etc…

In addition to the /j command I added the corresponding /c command which let you connect to the server you want (yes Circ isn’t limited to Epiknet anymore !) so my client is slowly getting useful ;) .

I have also added two new « brainstorming » ideas. The first one is for the plugins part : when I designed the Plugin abstract class I though I could just put some methods/events to let plugins interact with the main program. The problem is that it limits what you can do to what I provide in these methods and we know that a developper doesn’t like to be limited ;) . So I though about using something I called a « Shop ». As you know a Shop in real life is a place where you can ask for services and trade your own ones. Circ’s Shop follows the same principle, you can ask everything you want to it and it will provide you with every controls that Circ possess, meaning complete control on the backend and frontend via all the methods exposed by Controller. In other word you can do everything that Circ can do.
The second idea concern message parsing in the GUI. For example I may parse some links, replace smilies with image and also let users do other transformations via plugins. For that purpose I imagined a sort of « pipeline », basically Transformation are represented by function which are posted to a TransformationPool. The Input method of the Pool is connected to the MessageReceived event of the backend via the Controller and thus is called each time a new message arrives. Then each method inside the Pool parse the string and store particuliar transformation (text modification, TextTag adding, Pixbuff substitution) in a transformation container. At the end, when every functions have finished their job, the method responsible for showing the final message takes account of every transformation stored in the container and show the text accordingly. I think that in functional programming this thing is called an Arrow.

We are really progressing towards a real 0.1 release …

Post a comment