Blog
Page: 0 ... 5 ... 10 ... 15 ... 20 ... 25 ... 30 ... 35 ... 40 41 42 43 44 45 46 47 48 49 ... 50 ... 55 ... 60 ... 65
Calendar Recurring Rules UI
Date: 19/12/2006
I had a read of the iCalendar RFC and decided that my previous recurring UI attempt was not flexible enough, and so I redesigned the UI somewhat. This is a shot from my UI builder, obviously it'll be nicely laid out at runtime:

This time around I've added more control, although I think it's harder to understand what everything does. Basically I'm trying to expose these fields:

Rule:
	freq = [daily, weekly, monthly, yearly]
	repeat = [int]
	by day = [mon,tues,wed,thur,fri,sat,sun]
	by month = [1,12]
	by year = [year,...]
	by pos = [int]

End:
	none
	date = [dd/mm/yyyy]
	count = [int]


Basically the first 2 fields, "freq" and "repeat" generate a list of days, which then gets limited by the "By Day", "By Month", "By Year" and "By Pos" fields.

So if you wanted all the fridays in Feb, you would set Freq=Day, Repeat=1, ByDay=Fri, ByMonth=Feb.

If you wanted the 3rd Saturday in every month, StartDate=a saturday, Freq=Week, ByPos=3

Can you think of some important cases that aren't covered by this UI?
(6) Comments | Add Comment

Memecode Apps On Intel Macs
Date: 18/12/2006
Seriously, so porting to the Intel Mac has been as easy as pie, I've changed about 5 lines of code and i.Ftp starts, runs and shuts down as well as it does on the PPC machine I have. There are some issues with displaying of pixels from the toolbar.gif file that I havn't gotten to the bottom of yet but all I needed was a few byte ordering #ifdef's in the graphics library and everything just works. Universal binaries here we come! Plus I said that I would get an alpha working sometime in Jan. And I'll be taking time off over Christmas / New Year so I'll get a chance to work on it again.

Oh, yeah, btw I bought a C2D white Macbook 2.0ghz for our Christmas prez. It kicketh thine butte.
(0) Comments | Add Comment

Scribe Stable Candidate
Date: 17/12/2006
Ok, well it's almost the end of 2006, and that means a new stable release of Scribe. I've been working hard on squashing bugs the last few weeks and I think I'm getting close. The next release "Test11" will incorperate the last of the bug fixes I think are important for a stable release. We'll see how it fairs in the wild and if it's good then it'll be the first stable release. I do generally release maintainence releases throughout the year when I back port fixes from the developement branch (HEAD). For instance the current v1.88 stable build is actual "m5", or 5 releases after the original stable release.

The only thing I havn't actually fixed for Test11 is the main window behaviour between sessions. When it starts minimized to the tray the window still appears in the program bar.

If you have any other issues that are important and aren't already mentioned in the version history for Test11 then let me know.
(0) Comments | Add Comment

Scribe Test10
Date: 14/12/2006
Hi All, I was about to do a release and the cable is down. It seems that in hot weather the internet is up and down like a yoyo. But in cool weather it's rock solid for weeks. Very annoying. I would like to try ADSL, but who knows, it might suck more?

Anyway. The only thing that won't make it into this release that I really wanted to get done is the recuring calendar events. Lots of people are waiting on fixes for various things and so I will release test10 to get them on their way and then get down to work on features again.
(0) Comments | Add Comment

Danger Will Robinson: EnumDisplayDevices
Date: 1/12/2006
In the documentation for EnumDisplayDevices it tells you that you need to initialize the cb parameter of DISPLAY_DEVICE to sizeof(DISPLAY_DEVICE), fair enough. That part is obvious. In XP you can do that and then call EnumDisplayDevices multiple times with the same DISPLAY_DEVICE structure and it works as you'd expect. But in Win2k it overwrites the cb parameter with a new larger value with every call to EnumDisplayDevices, so the 2nd call overwrites the stack and your app goes kaboom!

So now you know.
(0) Comments | Add Comment

Scripting Scribe
Date: 29/11/2006
Well after yakking on about scripting for so long I actually ran my first script using the new engine in Scribe this morning. The javascript style engine that initially appeared in the recent i.Mage release is now also being used in Scribe. Currently the only place you can write script is in the filter object's "Script" tab. For instance this script changes the background colour of email that match the filter conditions to red:
if (Filter.TestConditions)
{
    Mail.Colour = 0xffff0000;
}
Where the hex value is in the form "0xAARRGGBB", alpha, red, green, blue. Fairly standard stuff. The first part calls back into the filter object via the DOM mapping to test the conditions defined in the Conditions tab of the filter. This way you can customize the conditions even furthur or ignore the conditions entirely and just make up your own scripted conditions. But at least if you want to use the UI for conditions you can. You get 3 predefined variables, App = the application DOM object, Mail = the mail object being filtered and Filter = the filter object the script is attached to. Of course all that will be documented in time.

I'm also thinking of having a application wide set of scripted event handlers so that you can hook events and execute scripts. This would allow you to customize various things like changing default settings on new mail or do something when the app starts. I really don't know what people will want to do yet but I'll just get it out there and see what people start hacking on to Scribe. I'm sure there will be a deluge of questions and scripts flying around for a while.

Better get a release out eh!
After fixing a bunch of bugs in the script engine this now works:
Fd = GetFolder("/Inbox");
if (Fd)
{
    Print("Got folder '" + Fd.Name + "'\n");
	
    Child = CreateSubFolder(Fd, "Test", "Mail");
    if (Child)
    {
        MoveItem(Child, Mail);
    }
}
It creates (or uses an existing) folder called 'Test' under the inbox and moves a matching email to that folder. You could for instance pull information out of the contact record associated with the sender to sort email into folders based on sender, creating more sub-folders if needed with this sort of script.

The "Print" command outputs to a new scripting console window that is hidden by default but you can show it using Tools -> Debug -> Show Scripting Console.

What would you want to do with scripted filters?
(3) Comments | Add Comment