Slider 2.1 Released!

I’m happy to announce the release of Slider 2.1. The first major upgrade to Slider 2 represents a vast array of bugfixes and tweaks. The GUI has been re-worked, and a major feature has been added: the Slidebrary.

The Slidebrary allows one to save your favourite Slider 2 settings for use in other pages and projects. More than this, it allows one to import and export these settings. Start sharing!

Read on for a more comprehensive list of fixes and upgrades that have made it into this release:

Comments (1) | Trackback

Slider Update – Tab Feature Coming Together

As I finally reached a programming goal I had set – the tab hover javascript was working fairly well – I realised that users would want the option of positioning the tabs in the middle or corners of Slider’s four sides. Initially I had assumed it would be OK for users to have tabs positioned only in the center of either of the four sides.

Great, I thought. This shouldn’t be too bad – just increase the number of radio buttons available and position the tabs accordingly.

Four hours later, I “achieve” a build of Slider that exports without the dreaded Uncaught Exception 10.

None of the Javascript works, turns out that was where the final erroneous lines were. Not in the 6 other class files I combed through. Duh.

The radio buttons for selecting tab position changed from:

Ugh, these are so yesterday

Ugh, these are so yesterday

to:

Positioning Radios as they should be.

Positioning Radios as they should be.

Here is an example of the type of thing you’ll be able to do with Slider, when the rewrite is finally done:

It's getting there!

It's getting there!

Finally, I feel like the hours I’ve spent mashing my hands on my keyboard are starting to show results.

Not working, releasable results, but results all the same.

Still not working: arrows, timer, content (!), table row repositioning, titles, text shadow, effects (or any sliding at all, come to think of it), cell links.

I have another project that I will soon have to devote serious time to, but I’ll continue plugging away at Slider, I’m excited about the new version!

No comments | Trackback

The Mutations of Slider’s Tab Option Pane

During the past week, I’ve been working on Slider’s new Tab option pane.

I took screen shots before making changes to the layout.

Here they are:

Tabs Iteration #1

Tabs Iteration #2

Tabs Iteration #3

Tabs Iteration #4

I hope I’m not tempted to change things around again… I really need to get the backend going now!

No comments | Trackback

Slider Progress: Slider Styling Option Pane

During the great rewrite, I’ve been trying to focus on one section at a time. The first section to come under attack was “everything pertaining to the styling of Slider that is not Arrow-related”. After much mucking-about I decided to combine the Border, Rounded Corner, Background Image, Gradient and Background Colour onto one Pane.

I don’t know why I didn’t do this before, it is obvious and really the only logical way to present these controls – enabling some may disable others, it was confusing and clumsy when they were on different tabs.

Now users will be able to see what is being enabled/disabled without swapping between different tabs.

Here is a screenshot of the option page as it is currently:

Slider style configuration laid bare: Click to view

Slider style configuration laid bare: Click to view

This is about the 10th layout redesign, I’m quite sure there will be no major changes from now on.

Still a long way to go, but progress *is* being made.

Comments (1) | Trackback

Return an NSMutableString as NSString Avoiding “Uncaught Error 11” with Cocoa

Another stumbling block on the road to Slider completion was this:

NSUncaughtSystemExceptionException — Uncaught system exception: signal 11

This vague and unhelpful error message (in this case) was caused by my trying to return an NSMutableString in place of an NSString:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- (NSString *)generateHTML{
 
	NSMutableString *html = [NSMutableString string];
 
	@try{
 
	//Begin wrapper
	[html appendString:[NSString stringWithFormat:@"<div id=\"slider%@\" style=\"height:%ipx;width:%ipx;position:relative;z-index:0;margin-left:%ipx;%@\">",
						UID, (int)portalSize.height, (int)portalSize.width, leftMargin, [self generateBGCSS]]];
 
	//Begin other content
	[html appendString:[self someYetToBeWrittenFunction]];
 
	//Close wrapper
	[html appendString:@"</div>"];
 
	}
	@catch (NSException *e) {
		NSLog(@"generateHTML: %@", e);
	}
	return html;
}

Googling resulted in this solution, from the Cocoa Dev Archives (which have saved me from suicide more times than I can count).

The successful code is:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- (NSString *)generateHTML{
 
	NSMutableString *html = [NSMutableString string];
 
	@try{
 
	//Begin wrapper
	[html appendString:[NSString stringWithFormat:@"<div id=\"slider%@\" style=\"height:%ipx;width:%ipx;position:relative;z-index:0;margin-left:%ipx;%@\">",
						UID, (int)portalSize.height, (int)portalSize.width, leftMargin, [self generateBGCSS]]];
 
	//Begin other content
	[html appendString:[self someYetToBeWrittenFunction]];
 
	//Close wrapper
	[html appendString:@"</div>"];
 
	}
	@catch (NSException *e) {
		NSLog(@"generateHTML: %@", e);
	}
	return [NSString stringWithString:html];
}

This should have been obvious, I regret the shame I bring on my family.

No comments | Trackback