Welcome to the MacNN Forums.

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

You are here: MacNN Forums > Software - Troubleshooting and Discussion > macOS > Random desktops - works ;)

Random desktops - works ;)
Thread Tools
Gee4orce
Professional Poster
Join Date: Dec 2000
Location: Staffs, UK
Status: Offline
Reply With Quote
Oct 15, 2001, 04:37 AM
 
...well kinda !

At least, you can tell the finder to change the desktop picture via Applescript. (from memory)
<BLOCKQUOTE><font size="1"face="Geneva, Verdana, Arial">code:</font><HR><pre><font size=1 face=courier>
tell application <font color = red>"Finder"</font>
set desktop picture to <font color = red>"path:to:filename:with:colons:not:slashes:"</font> as alais
end tell
</font>[/code]

Ta da! Now, not being a Applescript guru (and having a hard time finding a decent language reference - I'll have to buy that O'Reilly book) I was a bit stumped with the 'random' bit.

What I did was write a Perl script that found every image file beneath a certain directory, randomly selected one, and wrote the path to this file into a file in my preferences folder. I then changed the Applescript to read from this new file. Both these jobs were scheduled hourly with cron.

BUT - it seems that running an Applescript, or 'tell'ing the Finder to do anything when you are not logged in, is a bad idea, as when I returned to my machine it was frozen.

What I really need to do is write a shell script to check that I am logged in before it run my cron job. Or maybe start a daemon proces when I log in.

Phew ! Convoluted, but at least that basic functionality is not there in the Finder.

BTW: I tried setting the desktop picture to a folder, but no joy.
     
kangoo_boo
Dedicated MacNNer
Join Date: May 2001
Location: Paris, France
Status: Offline
Reply With Quote
Oct 15, 2001, 05:02 AM
 
what do you think of using login startup items (System Preferences) ?
or i missed something ?
hotline://hl.chatonly.org
mp3://radio.chatonly.org
     
Gee4orce  (op)
Professional Poster
Join Date: Dec 2000
Location: Staffs, UK
Status: Offline
Reply With Quote
Oct 15, 2001, 05:07 AM
 
Yeah - but what if you don't log in very often (like me - I leave it logged in). You only get the desktop changing once.

I was looking for a solution that would change the desktop every hour or something.
     
Rickster
Mac Elite
Join Date: Feb 2001
Location: Vancouver, WA
Status: Offline
Reply With Quote
Oct 15, 2001, 05:59 AM
 
Randomness in AppleScript is easy! Not only is there the quite flexible "random number" command in Standard Additions, there's the "some" object specifier (arguably one of the coolest features of the language). The expression
<BLOCKQUOTE><font size="1"face="Geneva, Verdana, Arial">code:</font><HR><pre><font size=1 face=courier>
some item of {<font color = red>"a"</font>, <font color = red>"b"</font>, <font color = red>"c"</font>, <font color = red>"d"</font>}
</font>[/code]
returns a random item rom the list. Name another language that can do that!

As for the scheduling, you can do that by returning a value at the end of an "on idle" handler, telling when you want the handler invoked next.

Here's an example that uses a random Apple-provided pic every hour:
<BLOCKQUOTE><font size="1"face="Geneva, Verdana, Arial">code:</font><HR><pre><font size=1 face=courier>
on idle
tell application <font color = red>"Finder"</font> to set desktop picture to &not;
(some file of entire contents of folder <font color = red>"Desktop Pictures"</font> of folder <font color = red>"Library"</font> of startup disk) as alias
return <font color = blue>3600</font> -- <font color = blue>1</font> hour = <font color = blue>60</font> * <font color = blue>60</font> seconds
end idle
</font>[/code]
The "folder 'foo' of folder 'bar'" stuff is lengthy, but it lets you avoid putting the name of a specific disk in the script. "entire contents" makes it list all the files in all the subfolders.

Save this as an application, and check Stay Open and Never Show Startup Screen. Then put it in your Login Items. If you want to make it so that the script-applet's icon doesn't show up in the Dock, open it up in a resource editor (ResEdit or Resorceror, etc.) and edit plst resource 0. Add these lines after the &lt;dict&gt; tag:
<BLOCKQUOTE><font size="1"face="Geneva, Verdana, Arial">code:</font><HR><pre><font size=1 face=courier>
&lt;key&gt;NSUIElement&lt;/key&gt;
&lt;string&gt;<font color = blue>1</font>&lt;/string&gt;
</font>[/code]
Beware that this will make it so the only way to quit the script is through AppleEvents, the Terminal, or ProcessViewer.

Still need proof that AppleScript totally kicks ass? Well, it wouldn't be too difficult to extend this script so that it grabs new pics off the Internet at regular intervals... say, weather maps, webcam pics, comic strips, or the Astonomy Picture of the Day. With OS X's Image Capture Scripting, you could even have it process the images first.

[ 10-15-2001: Message edited by: Rickster ]
Rick Roe
icons.cx | weblog
     
zerologic
Dedicated MacNNer
Join Date: Sep 2000
Location: Dallas, Texas
Status: Offline
Reply With Quote
Oct 15, 2001, 08:23 AM
 
Hey Rick thanks for the script! For some reason in my machine it dies instantly... unexpectedly quits. Any ideas? :-D

[FONT="Trebuchet MS"]Fully dynamic web site Starting Points.[/FONT]
     
Gee4orce  (op)
Professional Poster
Join Date: Dec 2000
Location: Staffs, UK
Status: Offline
Reply With Quote
Oct 15, 2001, 09:09 AM
 
Rickster - we are not worthy of your Applescript coolness ! Thanks.

What references do you recommend for Applescript ? I have 'Apple Script for the Intnernet' (or somesuch) and a dusty old copy of 'The Tao of Applescript' - both of which are useless as a decent reference book.

I'm a programmer, and I think that's why I have problems with Applescript ! I'm just used to terse syntax.
     
Gee4orce  (op)
Professional Poster
Join Date: Dec 2000
Location: Staffs, UK
Status: Offline
Reply With Quote
Oct 15, 2001, 09:38 AM
 


This is too cool. Applescript is brill'.

Just a quick question - what does the 'on idle' bit do ? Does it wait until the machine is idle before the action occurs ? Cancel the action if the machine is not idle ? Something else ?
     
Millennium
Clinically Insane
Join Date: Nov 1999
Status: Offline
Reply With Quote
Oct 15, 2001, 10:00 AM
 
I'd recommend you not do the time stuff in the AppleScript. Not the most efficient way of doing things.

Better to put in in a cron script, and set it to run every hour. Granted, just leaving the script open doesn't incur much overhead, but it does take up a few resources, and every little bit helps when you're running RC5 or SETI

It also makes for a little simpler script.
You are in Soviet Russia. It is dark. Grue is likely to be eaten by YOU!
     
Gee4orce  (op)
Professional Poster
Join Date: Dec 2000
Location: Staffs, UK
Status: Offline
Reply With Quote
Oct 15, 2001, 10:12 AM
 
Originally posted by Millennium:
<STRONG>I'd recommend you not do the time stuff in the AppleScript. Not the most efficient way of doing things.

Better to put in in a cron script, and set it to run every hour. Granted, just leaving the script open doesn't incur much overhead, but it does take up a few resources, and every little bit helps when you're running RC5 or SETI

It also makes for a little simpler script.</STRONG>
OK - try it. When you're not logged in and your script tries to run - boom. Locks up the system.

...unless that was an extremely unlikely coincidence.

So you have to put conditional code in your cron job to check if you're logged on. Which makes it more complex than 'on idle'

I've got Rickster's script running on my iBook right now and it's taking 0.0% CPU and about 1Meg of RAM.
     
acur128
Junior Member
Join Date: May 2001
Status: Offline
Reply With Quote
Oct 15, 2001, 11:17 AM
 
Just a thought on the unexpected quits mentioned... if you happen to be using Toast Titanium in 10.1, & if the file "ToastVideoCDSupport.component" is in /Library/Quicktime, all AppleScripts launched from the Finder will likely "unexpectedly quit". There seems to be a conflict with that file & AppleScript apps in 10.1.

BTW, I had set up a script for random desktop picture changes using cron in 10.1 & it doesn't appear to freeze up the system when logged out (set it up for 1 minute changes). The script's here if anyone might be interested in giving it a go.
     
Rickster
Mac Elite
Join Date: Feb 2001
Location: Vancouver, WA
Status: Offline
Reply With Quote
Oct 15, 2001, 05:30 PM
 
What references do you recommend for Applescript ?
I learned from The Tao of AppleScript way back in '95 or so... never had much problem with the syntax since I had learned HyperTalk and Apple // BASIC first, and didn't get to be a "real programmer" till later. Nowadays when I need a language reference I usually go to the online version of the AppleScirpt Langauge guide, somewhere under http://deve.oper.apple.com/techpubs/.

Just a quick question - what does the 'on idle' bit do ?
An idle handler is called when the process executing the script gets the opportunity o handle events, and no event is presented. Basically, it's called whenever your script isn't busy executing. If you launch a script applet set to Stay Open, it will run its run handler, then immediately run its idle handler. If you return a value from the idle handler, the system will wait that many seconds before calling it again -- it lets your script idle for x seconds, it doesn't wait for the user to be idle. Looks like AppleScript is well-behaved on X -- if it's waiting to call the idle handler again, it uses absolutely no CPU time.
Rick Roe
icons.cx | weblog
     
zerologic
Dedicated MacNNer
Join Date: Sep 2000
Location: Dallas, Texas
Status: Offline
Reply With Quote
Oct 15, 2001, 09:34 PM
 
Originally posted by acur128:
<STRONG>Just a thought on the unexpected quits mentioned... if you happen to be using Toast Titanium in 10.1, & if the file "ToastVideoCDSupport.component" is in /Library/Quicktime, all AppleScripts launched from the Finder will likely "unexpectedly quit". There seems to be a conflict with that file & AppleScript apps in 10.1.</STRONG>
I tried it with cron and it still quit I copied / pasted the text exactly as it is above... need I change something?

zerologic

[FONT="Trebuchet MS"]Fully dynamic web site Starting Points.[/FONT]
     
acur128
Junior Member
Join Date: May 2001
Status: Offline
Reply With Quote
Oct 15, 2001, 10:03 PM
 
Originally posted by zerologic:
<STRONG>

I tried it with cron and it still quit I copied / pasted the text exactly as it is above... need I change something?

zerologic</STRONG>
Any mail from cron? If the script failed with an error, there should be an output from it, unless user/root mail from cron is suppressed.
To run as a cron job, only the "tell app "Finder" to set desktop picture to some file..." line would be needed (I guess the idle handler wouldn't work with cron). It seems like the best way to get cron to like a crontab line involving running a script is the form "open path/to/script"... osascript doesn't appear to allow any user interaction or app-specific events through cron - although it works beautifully from a terminal window.
     
nonhuman
Posting Junkie
Join Date: Jun 2001
Location: Baltimore, MD
Status: Offline
Reply With Quote
Oct 15, 2001, 11:13 PM
 
Rickster, your script works like a dream. Just one question. How would one get rid of the dock icon if one didn't have OS 9 in which to run ResEdit?
     
nonhuman
Posting Junkie
Join Date: Jun 2001
Location: Baltimore, MD
Status: Offline
Reply With Quote
Oct 15, 2001, 11:46 PM
 
Ok, I hit a snag with the AppleScript. It successfully changed my desktop two times (I set it to 15 mins instead of an hour), but just now I got an error message that the "Apple Event timed out." I don't know if the script is still running or what, but I'm going to leave it open and find out.
     
Rickster
Mac Elite
Join Date: Feb 2001
Location: Vancouver, WA
Status: Offline
Reply With Quote
Oct 16, 2001, 02:40 AM
 
How would one get rid of the dock icon if one didn't have OS 9 in which to run ResEdit?
Good question. As far as I know, the only Carbonized resource editor that's finished enough to be worthwhile is Resorceror. Of course, you could also use /Developer/Tools/Derez and /Developer/Tools/Rez to convert the resource fork to and from an editable "source code" format.
Rick Roe
icons.cx | weblog
     
lgerbarg
Mac Enthusiast
Join Date: Oct 2000
Location: Cupertino, CA
Status: Offline
Reply With Quote
Oct 16, 2001, 03:12 AM
 
Originally posted by Millennium:
<STRONG>I'd recommend you not do the time stuff in the AppleScript. Not the most efficient way of doing things.

Better to put in in a cron script, and set it to run every hour. Granted, just leaving the script open doesn't incur much overhead, but it does take up a few resources, and every little bit helps when you're running RC5 or SETI

It also makes for a little simpler script.</STRONG>
Here is a quick dirty thing I wrote to do this a couple of months ago. It is mostly perl, with a small ObjC tool to trigger the switch:

The Perl part:

<BLOCKQUOTE><font size="1"face="Geneva, Verdana, Arial">code:</font><HR><pre><font size=1 face=courier>
#!/usr/bin/perl -w

$finished = <font color = blue>0</font>;

sub signal_handler
{
$finished = <font color = blue>1</font>;
}

$SIG{INT} = $SIG{TERM} = $SIG{HUP} = \&signal_handler;

$user = $ENV{<font color = red>"USER"</font>};

@switchers = `ps auxww | grep $user | grep DesktopSwitch.pl`;

foreach $switcher (@switchers)
{
if($switcher =~ m/^.+?\s(\d+)\s/)
{
if($<font color = blue>1</font> != $$)
{
`kill <font color = blue>-9</font> $<font color = blue>1</font> <font color = blue>2</font>&gt; /dev/null`;
}
}
}

$frequency = $ARGV[<font color = blue>0</font>]*<font color = blue>60</font>;
$picture_path = $ARGV[<font color = blue>1</font>];;
$next = <font color = blue>0</font>;

if($frequency == <font color = blue>0</font>)
{
$finished = <font color = blue>1</font>;
}

while(!$finished)
{
open(DEFAULTS, $ENV{<font color = red>"HOME"</font>}.<font color = red>"/Library/Preferences/com.apple.desktop.plist"</font>);
opendir(DIR, $picture_path);
open(NEWDEFAULTS,<font color = red>"&gt;/tmp/com.apple.desktop.plist"</font>);
@picts = readdir(DIR);
closedir(DIR);
#for($x=<font color = blue>0</font>; $x&lt;=$#defaults; $x++)
while(&lt;DEFAULTS&gt; )
{
if(m/ImageFilePath/)
{
$next = <font color = blue>1</font>;
print NEWDEFAULTS $_;
}
elsif($next)
{
$next=<font color = blue>0</font>;
$done = <font color = blue>0</font>;
while(!$done)
{
m/&lt;key&gt;(.+)&lt;\/key&gt;/;
$old = $<font color = blue>1</font>;
$random = int(rand($#picts+<font color = blue>1</font>));
print <font color = red>"$random $picts[$random]\n"</font>;
if(!($picts[$random] =~ m/^\./) && ($old ne <font color = red>"$picture_path/$picts[$random]"</font>))
{
print NEWDEFAULTS <font color = red>"\t\t\t&lt;key&gt;$picture_path/$picts[$random]&lt;/key&gt;\n"</font>;
$done = <font color = blue>1</font>;

}
}
}
else
{
print NEWDEFAULTS $_;
}
}
close(NEWDEFAULTS);
close(DEFAULTS);
`mv /tmp/com.apple.desktop.plist $ENV{<font color = red>"HOME"</font>}/Library/Preferences/com.apple.desktop.plist`;
`$ENV{<font color = red>"HOME"</font>}/notify`;
sleep $frequency
}
</font>[/code]

The ObjC part (notify.m):

<BLOCKQUOTE><font size="1"face="Geneva, Verdana, Arial">code:</font><HR><pre><font size=1 face=courier>
#import &lt;Cocoa/Cocoa.h&gt;
#import &lt;CoreFoundation/CoreFoundation.h&gt;

static NSString *kIdentifier = <font color = orange>@"com.apple.desktop"</font>;
static NSString *kBackgroundChange = <font color = orange>@"BackgroundChanged"</font>;

int main (void)
{
CFNotificationCenterPostNotification(
CFNotificationCenterGetDistributedCenter(),
(CFStringRef)kIdentifier,
(void *)kBackgroundChange,
NULL,
YES );
}
</font>[/code]

I actually picked up the details by writing a little app that listens for system notifications, you can find out a lot interesting little things that way.

The perl code is particularly nasty, it walks through the CFXML itself, and I make no garantees it does not mangle it. It is not commented, because I really did not intend for anyone to ever use it. You run it like this: "./DesktopSwitch.pl [minutes between switches] [Image-Dir]"

I hope you guys find this useful, even if you don't actually use it ;-)

Enjoy.

Louis
Louis Gerbarg
Darwin Developer
These are my views, and not the views of my employer.
     
Gee4orce  (op)
Professional Poster
Join Date: Dec 2000
Location: Staffs, UK
Status: Offline
Reply With Quote
Oct 16, 2001, 04:20 AM
 
I also considered writing a preference-munging Perl script in pre 10.1 days, but the addition of the 'desktop picture' property in the Finder dictionary means that it's not necessary now. And if you change it with Applescript it works immediately (i assume your notifier told the Finder to re-read it's preferences or something ?)
     
eevyl
Grizzled Veteran
Join Date: Dec 2000
Location: Málaga, Spain, Europe, Earth, Solar System
Status: Offline
Reply With Quote
Oct 16, 2001, 03:52 PM
 
Cool to see AppleScript movement in Mac OS X 10.1.

Rickster's script works perfect, and I made a little addition, so the first time it runs it ask you to locate the pictures folder you want. Can't wait till AS Studio and I can add a GUI to it!

<BLOCKQUOTE><font size="1"face="Geneva, Verdana, Arial">code:</font><HR><pre><font size=1 face=courier>
property picturesFolder : alias
property firstRun : true

on run
if firstRun then
set picturesFolder to choose folder
set firstRun to false
end if
end run

on idle
tell application <font color = red>"Finder"</font> to set desktop picture to �
(some file of entire contents of picturesFolder) as alias
return <font color = blue>3600</font> -- <font color = blue>1</font> hour = <font color = blue>60</font> * <font color = blue>60</font> seconds
end idle
</font>[/code]

[ 10-16-2001: Message edited by: eevyl ]
     
eevyl
Grizzled Veteran
Join Date: Dec 2000
Location: Málaga, Spain, Europe, Earth, Solar System
Status: Offline
Reply With Quote
Oct 16, 2001, 06:01 PM
 
Mmm, one question. One time I needed to specify a "timeout" limit for an AppleScript that could wait a long time for user feedback.

Is it needed in this script? Also I cannot remember how the "timeout" thing was... anyone? Rickster?
     
theolein
Addicted to MacNN
Join Date: Feb 2001
Location: zurich, switzerland
Status: Offline
Reply With Quote
Oct 16, 2001, 06:37 PM
 
Originally posted by Rickster:
<STRONG>

An idle handler is called when the process executing the script gets the opportunity o handle events, and no event is presented. Basically, it's called whenever your script isn't busy executing. If you launch a script applet set to Stay Open, it will run its run handler, then immediately run its idle handler. If you return a value from the idle handler, the system will wait that many seconds before calling it again -- it lets your script idle for x seconds, it doesn't wait for the user to be idle. Looks like AppleScript is well-behaved on X -- if it's waiting to call the idle handler again, it uses absolutely no CPU time.</STRONG>
Rickster, I have a question: I started off programming in Macromedia Director's Lingo and Applescript seems very similar. Do you know if there is a significant jump from Lingo to Applescript?
weird wabbit
     
rw
Mac Enthusiast
Join Date: Dec 2000
Location: Kirkland, WA, USA
Status: Offline
Reply With Quote
Oct 17, 2001, 01:46 AM
 
Originally posted by lgerbarg:
<STRONG>

Here is a quick dirty thing I wrote to do this a couple of months ago. It is mostly perl, with a small ObjC tool to trigger the switch:

</STRONG>
Let's see ... this Perl/ObjC code would be an example of the "terse syntax" that Gee4orce prefers to the more verbose Applescript?

[ 10-17-2001: Message edited by: rw ]
Dang! I forgot to uncheck the "Show Signature" button again!
     
Gee4orce  (op)
Professional Poster
Join Date: Dec 2000
Location: Staffs, UK
Status: Offline
Reply With Quote
Oct 17, 2001, 04:04 AM
 
Originally posted by rw:
<STRONG>

Let's see ... this Perl/ObjC code would be an example of the "terse syntax" that Gee4orce prefers to the more verbose Applescript?

[ 10-17-2001: Message edited by: rw ]</STRONG>

Weeelll... that is a whole Unix daemon program there - but I see your point.

This line is a good example of what I mean though:

<BLOCKQUOTE><font size="1"face="Geneva, Verdana, Arial">code:</font><HR><pre><font size=1 face=courier> if($switcher =~ m/^.+?\s(\d+)\s/) </font>[/code]

That says "if contents of the variable $switcher match one or more characters, a whitespace and then one or more digits and a whitespace then..." if also 'collects' the "one or more digits" so that you can later easily refer to them.
     
Rickster
Mac Elite
Join Date: Feb 2001
Location: Vancouver, WA
Status: Offline
Reply With Quote
Oct 17, 2001, 05:02 AM
 
Here is a quick dirty thing I wrote to do this a couple of months ago. It is mostly perl, with a small ObjC tool to trigger the switch:
Sorry, man, but YUCK! That's masochism right there. You don't need to write your own XML parser unless you're a glutton for punishment... if you're doing it through perl or shell scripting, have it talk to /usr/bin/defaults. If you're doing it in Cocoa, use NSUserDefaults or CFPreferences.

That notification listening stuff is pretty cool though. Oughta fool around with that myself sometime.

Also I cannot remember how the "timeout" thing was... anyone?
for a long fixed timeout:
<BLOCKQUOTE><font size="1"face="Geneva, Verdana, Arial">code:</font><HR><pre><font size=1 face=courier>
with timeout of <font color = blue>1000</font> seconds
-- do stuff
end with timeout
</font>[/code]
for no timeout (i.e. don't wait for any results before proceeding with the script):
<BLOCKQUOTE><font size="1"face="Geneva, Verdana, Arial">code:</font><HR><pre><font size=1 face=courier>
ignoring application responses
-- do stuff
end ignoring
</font>[/code]

Yeah, an ignoring application responses might be good for the tell finder part of this script. Then if it fails, it'd fail silently and try again in an hour.

Do you know if there is a significant jump from Lingo to Applescript?
Dunno. Never tried Lingo.
Rick Roe
icons.cx | weblog
     
kidtexas
Grizzled Veteran
Join Date: Jan 2001
Location: usa
Status: Offline
Reply With Quote
Oct 17, 2001, 05:17 PM
 
Came back from the lab today, and noticed my load averages were high. I ran top and was surprised to find my Random Desktop script (copied directly from Rick's script example except it switches once a day) was eating up 95% of my processing power (out of 200% ). And it wasn't doing anything. So i switched to Random Desktop, and as soon as I did, the image changed, and everything went back to normal. Yes it had been stuck in this loop for some time, because my load averages for the las 5, 10, 15 mins were all the same high value. Is there anyway to patch the script so it doesn't get stuck in a loop?
     
Gee4orce  (op)
Professional Poster
Join Date: Dec 2000
Location: Staffs, UK
Status: Offline
Reply With Quote
Oct 18, 2001, 04:57 AM
 
I changed the 'return' line of the script to this:

return (random number from 5 to 120) * 60

- this will randomise the delay between changing the desktop picture, from 5 minutes to 2 hours.
     
lgerbarg
Mac Enthusiast
Join Date: Oct 2000
Location: Cupertino, CA
Status: Offline
Reply With Quote
Oct 18, 2001, 05:14 AM
 
Originally posted by Rickster:
<STRONG>Sorry, man, but YUCK! That's masochism right there. You don't need to write your own XML parser unless you're a glutton for punishment... if you're doing it through perl or shell scripting, have it talk to /usr/bin/defaults. If you're doing it in Cocoa, use NSUserDefaults or CFPreferences.</STRONG>
I apologize for not copying your smilies properly, UBB does not like me ;-)

I actually did need to write my own XML parser. /usr/bin/defaults is not adequete for writing certain kinds of deep structures. Not sure if I would really consider it a full fledged parser. I have something a lot more sophiscated I use for parsing Info.plists for some internal tools I work on. There is also a hack in it to cope with ._ files, since my homedir is on NFS, and a lot of images have resource forks. If it was using a higher level API I could go through Carbon File Manager, and avoid all of it ;-)

That it is certainly not the sort of code I would submit to a build, it was something I did at 2AM one night. Quick, dirty, around 30 minutes to write, and it served me well during the end of the OS X 10.1 dev cycle ;-)

Louis
Louis Gerbarg
Darwin Developer
These are my views, and not the views of my employer.
     
   
 
Forum Links
Forum Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Top
Privacy Policy
All times are GMT -4. The time now is 11:03 PM.
All contents of these forums © 1995-2017 MacNN. All rights reserved.
Branding + Design: www.gesamtbild.com
vBulletin v.3.8.8 © 2000-2017, Jelsoft Enterprises Ltd.,