|
From: <cre...@us...> - 2006-04-24 21:40:18
|
Revision: 1329 Author: creecode Date: 2006-04-24 14:40:07 -0700 (Mon, 24 Apr 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1329&view=rev Log Message: ----------- fixed file.getLabel, setLabel to work with Mac OS X added new verbs: file.getLabelIndex, setLabelIndex, getLabelNames Modified Paths: -------------- Frontier/trunk/Common/headers/file.h Frontier/trunk/Common/resources/Mac/kernelverbs.r Frontier/trunk/Common/resources/Win32/kernelverbs.rc Frontier/trunk/Common/source/fileops.c Frontier/trunk/Common/source/fileverbs.c Modified: Frontier/trunk/Common/headers/file.h =================================================================== --- Frontier/trunk/Common/headers/file.h 2006-04-24 20:02:59 UTC (rev 1328) +++ Frontier/trunk/Common/headers/file.h 2006-04-24 21:40:07 UTC (rev 1329) @@ -424,7 +424,7 @@ extern boolean fifgetendoffile (const tyfilespec *fs, long *eof); - /* filepath.c */ +#pragma mark === filepath.c === extern boolean directorytopath (long, short, bigstring); @@ -449,7 +449,7 @@ extern void initfsdefault (void); /* 2005-07-18 creedon */ - /*fileverbs.c*/ +#pragma mark === fileverbs.c === //extern filecheckdefaultpath (bigstring); @@ -458,7 +458,7 @@ extern boolean filestart (void); /*6.1b15 AR*/ -// filedialog.c +#pragma mark === filedialog.c === extern boolean sfdialog (tysfverb, bigstring, ptrsftypelist, tyfilespec *, OSType); /* 2005-10-06 creedon - added OSType */ @@ -482,9 +482,14 @@ #endif -// filemp3.c +#pragma mark === filemp3.c === boolean getmp3info (const tyfilespec *, long *, long *, long *, long *, boolean *); +#pragma mark === fileops.c === +extern short getfilelabelindex (const tyfilespec *, short *); /* 2006-04-23 creedon */ + +extern boolean setfilelabelindex (const tyfilespec *, short, boolean); /* 2006-04-23 creedon */ + Modified: Frontier/trunk/Common/resources/Mac/kernelverbs.r =================================================================== --- Frontier/trunk/Common/resources/Mac/kernelverbs.r 2006-04-24 20:02:59 UTC (rev 1328) +++ Frontier/trunk/Common/resources/Mac/kernelverbs.r 2006-04-24 21:40:07 UTC (rev 1329) @@ -694,7 +694,10 @@ "freespaceonvolumedouble", "volumesizedouble", "getmp3info", - "readwholefile" /* 2006-04-11 aradke */ + "readwholefile", /* 2006-04-11 aradke */ + "getLabelIndex", /* 2006-04-23 creedon */ + "setLabelIndex", /* 2006-04-23 creedon */ + "getLabelNames" /* 2006-04-23 creedon */ } } }; @@ -720,7 +723,6 @@ "deletenamedresource", "getresourceattributes", "setresourceattributes" - } } }; @@ -761,7 +763,8 @@ "about", "quicktime", /*7.0b4 PBS: QuickTime Player window*/ "getfile", - "isreadonly" /*7.0b6 PBS: is a window read-only*/ + "isreadonly", /*7.0b6 PBS: is a window read-only*/ + "quickscriptsetscript" // 2006-04-04 creedon } } }; @@ -1133,7 +1136,8 @@ "hmacMD5", "MD5", "SHA1", - "hmacSHA1" + "hmacSHA1", + "RIPEMD160" } } }; Modified: Frontier/trunk/Common/resources/Win32/kernelverbs.rc =================================================================== --- Frontier/trunk/Common/resources/Win32/kernelverbs.rc 2006-04-24 20:02:59 UTC (rev 1328) +++ Frontier/trunk/Common/resources/Win32/kernelverbs.rc 2006-04-24 21:40:07 UTC (rev 1329) @@ -583,7 +583,7 @@ 1, //Number of "blocks" in this resource "file\0", //Function Processor Name false, //Window required - 82, //Count of verbs + 86, //Count of verbs "created\0", "modified\0", "type\0", @@ -664,8 +664,11 @@ "getpathchar\0", "freespaceonvolumedouble\0", "volumesizedouble\0", - "getmp3info\0", /*7.0b12 PBS: Andr\xE9's file.getMp3Info verb*/ - "readwholefile\0" /* 2006-04-11 aradke */ + "getmp3info\0", /*7.0b12 PBS: Andr\xE9's file.getMp3Info verb*/ + "readwholefile\0", /* 2006-04-11 aradke */ + "getLabelIndex\0", /* 2006-04-23 creedon */ + "setLabelIndex\0", /* 2006-04-23 creedon */ + "getLabelNames" /* 2006-04-23 creedon */ END 1008 /*idrezverbs*/ EFP DISCARDABLE @@ -692,12 +695,12 @@ END -1009 /*idwindowverbs*/ EFP DISCARDABLE +1009 /* idwindowverbs */ EFP DISCARDABLE BEGIN - 1, //Number of "blocks" in this resource - "window\0", //Function Processor Name - true, //Window required - 30, //Count of verbs + 1, // Number of "blocks" in this resource + "window\0", // Function Processor Name + true, // Window required + 31, // Count of verbs "isopen\0", "open\0", "isfront\0", @@ -727,7 +730,8 @@ "settitle\0", "about\0", "getfile\0", - "isreadonly\0" + "isreadonly\0", + "quickscriptsetscript\0" // 2006-04-04 creedon END @@ -1066,11 +1070,12 @@ 1, // Number of "blocks" in this resource "crypt\0", // Function Processor name false, // Window required - 5, // Count of verbs + 6, // Count of verbs "whirlpool\0", "hmacMD5\0", "MD5\0", "SHA1\0", - "hmacSHA1\0" + "hmacSHA1\0", + "RIPEMD160\0" END Modified: Frontier/trunk/Common/source/fileops.c =================================================================== --- Frontier/trunk/Common/source/fileops.c 2006-04-24 20:02:59 UTC (rev 1328) +++ Frontier/trunk/Common/source/fileops.c 2006-04-24 21:40:07 UTC (rev 1329) @@ -2313,7 +2313,9 @@ #endif } /*lockvolume*/ + #ifdef MACVERSION + boolean unmountvolume (const tyfilespec *fs) { /* @@ -2461,42 +2463,41 @@ static boolean index2label (short ixlabel, bigstring bslabel) { /* - new: pascal OSErr GetLabel(short labelNumber, RGBColor *labelColor, Str255 labelString) - = {0x303c, 0x050B, 0xABC9}; + 2006-04-24 creedon: use GetLabel instead of looking for resources that don't exists on Mac OS X + deleted old code see revision 1268 */ - Handle hlabel; - - setemptystring (bslabel); - if ((ixlabel < 0) || (ixlabel > 7)) return (false); - hlabel = GetResource ('lstr', -16392 + ixlabel); + RGBColor labelcolor; // we don't use the value we put into here - if (hlabel == nil) - return (false); - - copyheapstring ((hdlstring) hlabel, bslabel); - + if (GetLabel (ixlabel, &labelcolor, bslabel) != noErr) + return (false); + return (true); - } /*index2label*/ + } /* index2label */ static boolean label2index (bigstring bslabel, short *ixlabel) { + /* + 2006-04-24 creedon: use GetLabel instead of looking for resources that don't exists on Mac OS X + deleted old code see revision 1268 + */ + register short ix; - Handle hlabel; + RGBColor labelcolor; // we don't use the value we put into here + bigstring bs; for (ix = 0; ix < 8; ++ix) { - hlabel = GetResource ('lstr', -16392 + ix); + if (GetLabel (ix, &labelcolor, bs) != noErr) - if (hlabel == nil) - continue; - - if (RelString ((ptrstring) *hlabel, bslabel, false, false) == 0) { + return (false); + if (RelString (bslabel, bs, false, false) == 0) { + *ixlabel = ix; return (true); @@ -2504,7 +2505,7 @@ } return (false); - } /*label2index*/ + } /* label2index */ boolean getfilelabel (const tyfilespec *fs, bigstring bslabel) { @@ -2520,26 +2521,18 @@ boolean setfilelabel (const tyfilespec *fs, bigstring bslabel) { - CInfoPBRec pb; - register short flags; + /* + 2006-04-24 creedon: factored most of the code into setfilelabelindex function + code deleted see revision 1268 + */ + short ixlabel; if (!label2index (bslabel, &ixlabel)) return (false); - if (!getmacfileinfo (fs, &pb)) - return (false); - - flags = pb.hFileInfo.ioFlFndrInfo.fdFlags; - - flags &= 0xFFF1; /*clear out old index*/ - - flags |= ixlabel << 1; /*slam in new index*/ - - pb.hFileInfo.ioFlFndrInfo.fdFlags = flags; - - return (setmacfileinfo (fs, &pb)); - } /*setfilelabel*/ + return (setfilelabelindex (fs, ixlabel, false)); + } /* setfilelabel */ boolean mountvolume (bigstring volumepath, bigstring username, bigstring password) { @@ -2627,6 +2620,58 @@ return (!oserror (errcode)); } /*mountvolume*/ + + +short getfilelabelindex (const tyfilespec *fs, short *ixlabel) { + + /* + 2006-04-23 creedon: created, cribbed from getfilelabel function + */ + + tyfileinfo info; + short maptouserinterfaceindex [8] = {0, 7, 4, 6, 5, 3, 1, 2}; + + if (!filegetinfo (fs, &info)) + return (false); + + *ixlabel = maptouserinterfaceindex [info.ixlabel]; + + return (true); + } /* getfilelabelindex */ + + +boolean setfilelabelindex (const tyfilespec *fs, short ixlabel, boolean flmapfromuserinterfaceindex) { + + /* + 2006-04-24 creedon: created, cribbed from setfilelabel function + */ + + CInfoPBRec pb; + register short flags; + + if ((ixlabel < 0) || (ixlabel > 7)) + return (false); + + if (!getmacfileinfo (fs, &pb)) + return (false); + + flags = pb.hFileInfo.ioFlFndrInfo.fdFlags; + + flags &= 0xFFF1; // clear out old index + + if (flmapfromuserinterfaceindex) { + short mapfromuserinterfaceindex [8] = {0, 6, 7, 5, 2, 4, 3, 1}; + + ixlabel = mapfromuserinterfaceindex [ixlabel]; + } + + flags |= ixlabel << 1; // slam in new index + + pb.hFileInfo.ioFlFndrInfo.fdFlags = flags; + + return (setmacfileinfo (fs, &pb)); + } /* setfilelabelindex */ + #endif Modified: Frontier/trunk/Common/source/fileverbs.c =================================================================== --- Frontier/trunk/Common/source/fileverbs.c 2006-04-24 20:02:59 UTC (rev 1328) +++ Frontier/trunk/Common/source/fileverbs.c 2006-04-24 21:40:07 UTC (rev 1329) @@ -46,6 +46,7 @@ #include "kernelverbdefs.h" #include "shell.rsrc.h" #include "byteorder.h" /* 2006-04-16 aradke: for SWAP_REZ_BYTE_ORDER */ +#include "oplist.h" /* 2006-04-23 creedon */ #ifdef MACVERSION @@ -250,8 +251,14 @@ getmp3infofunc, - readwholefilefunc, /* 2006-04-11 aradke */ + readwholefilefunc, /* 2006-04-11 aradke */ + getlabelindexfunc, /* 2006-04-23 creedon */ + + setlabelindexfunc, /* 2006-04-23 creedon */ + + getlabelnamesfunc, /* 2006-04-23 creedon */ + ctfileverbs } tyfiletoken; @@ -1914,6 +1921,87 @@ return (setbooleanvalue (setfilelabel (&fs, bslabel), v)); } /*setlabelverb*/ + +static boolean getlabelindexverb (hdltreenode hparam1, tyvaluerecord *v) { + + /* + 2006-04-24 creedon: created, cribbed from getlabelverb function + */ + + tyfilespec fs; + short ixlabel; + + flnextparamislast = true; + + if (!getpathvalue (hparam1, 1, &fs)) + return (false); + + if (!getfilelabelindex (&fs, &ixlabel)) + return (false); + + return (setintvalue (ixlabel, v)); + } /* getlabelindexverb */ + + +static boolean setlabelindexverb (hdltreenode hparam1, tyvaluerecord *v) { + + /* + 2006-04-24 creedon: created, cribbed from setlabelverb function + */ + + tyfilespec fs; + short index; + + if (!getpathvalue (hparam1, 1, &fs)) + return (false); + + flnextparamislast = true; + + if (!getintvalue (hparam1, 2, &index)) + return (false); + + return (setbooleanvalue (setfilelabelindex (&fs, index, true), v)); + } /* setlabelindexverb */ + + +static boolean getlabelnamesverb (hdltreenode hparam1, tyvaluerecord *v) { + #pragma unused (hparam1) + + /* + 2006-04-24 creedon: created, cribbed from statusbargetsectionsfunc case of langfunctionvalue function + */ + + bigstring bsarray [8]; + hdllistrecord hlist; + int ix; + RGBColor labelcolor; + short mapfromuserinterfaceindex [8] = {0, 6, 7, 5, 2, 4, 3, 1}; + + for (ix = 0; ix < 8; ++ix) + + if (GetLabel (ix, &labelcolor, bsarray [ix]) != noErr) + + return (false); + + if (!opnewlist (&hlist, false)) + return (false); + + for (ix = 0; ix < 8; ++ix) + + if (!langpushliststring (hlist, bsarray [mapfromuserinterfaceindex [ix]])) + + goto getlabelnamesverberror; + + return (setheapvalue ((Handle) hlist, listvaluetype, v)); + + getlabelnamesverberror: + + opdisposelist (hlist); + + return (false); + + } /* getlabelnamesverb */ + #endif @@ -3529,7 +3617,15 @@ return (true); } + + case getlabelindexfunc: /* 2006-04-24 creedon */ + return (getlabelindexverb (hp1, v)); + case setlabelindexfunc: /* 2006-04-24 creedon */ + return (setlabelindexverb (hp1, v)); + + case getlabelnamesfunc: /* 2006-04-24 creedon */ + return (getlabelnamesverb (hp1, v)); #endif case folderfrompathfunc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |