Problem saving inserted Check Boxes in table to Array Controller

G'day scripters


I've got an 8 column Outline View Table, each column of which has a Check Box installed. I need to add more rows, and each Check Box needs a unique Title, and the ability to alter the State. A total of 276 unique Check Boxes.


I just cannot get the code right, and Shane Stanley's Explored 5 doesn't help. In interface builder I have defined the value of each Check Box to the key 'state', and the title to the key 'title'.


'Saving errors with (the last part), ', {Extensions1CB:{|title|:"X-Face", state:true}, Extensions2CB:{|title|:"XPM", state:true}, Extensions3CB:{|title|:"XWD", state:true}, Extensions4CB:{|title|:"YUV", state:true}, Extensions5CB:{|title|:"", state:false}, Extensions6CB:{|title|:"", state:false}, Extensions7CB:{|title|:"", state:false}, Extensions8CB:{|title|:"", state:false}}} doesn’t understand the “writeToFile_atomically_” message'.


Columns are defined as "Extensions1CB", "Extensions2CB", "Extensions3CB", "Extensions4CB", "Extensions5CB", "Extensions6CB", "Extensions7CB", "Extensions8CB"


Any advice appreciated. I've Googled for hours, to no real avail.


Regards


Santa



My code is...


NOTE, this is obviously wrong...


set anObj to (current application's NSMutableDictionary's dictionaryWithObjects:{item1CB, item2CB, item3CB, item4CB, item5CB, item6CB, item7CB, item8CB} forKeys:{"Extensions1CB", "Extensions2CB", "Extensions3CB", "Extensions4CB", "Extensions5CB", "Extensions6CB", "Extensions7CB", "Extensions8CB"})



--

-- AppDelegate.applescript

-- GC Name Extension lister

--

-- Created by Brian Christmas on 6/7/17.

-- Copyright © 2017 MeSelf Software. All rights reserved.

--

script AppDelegate

# property parent : class "NSObject"

property parent : class "ObjectWithFords"


-- IBOutlets

property ListWindow : missing value

property box1 : missing value

property ExtensionsArrayController : missing value

property listValues : ""

property firstCheckBox : missing value

property ListWindowSetUp : false

property ExtValueDict : {}

property mailManagerDesktopFolderPath : ((path to desktop as text) & "Mail Manager Folder:")

property setUpExtension : false

property extensionsToIgnore : {".D", "8BIM", "AAI", "Acorn Sprite", "AFP", "ALIAS", "AMBER ARR", "AMC", "Analyze", "ANI", "ANPA", "Apple File Icon", "Apple Preferred", "ART", "ARW", "ASCII", "Atari Portfolio", "B3D", "Bio", "BioRad", "BLD", "BMP", "BSB", ¬

"BSP", "BUF", "BUM", "Byte-Array Hea- der File (.H)", "CALS", "c4", "CAM", "CALS", "CEL", "CGM", "Chyron", "cicn", "CINEON", "CISCOIpPhoneI mages", "CLP", "cri", "CRW", "CR2", "csource", "CT", "CUR", "CVG", "CWK", "DCS", "DCR", "DCX", "DDS", "DeltaVision", ¬

"DESR VFF", "DICoM", "Direct icns", "Diskus YUV", "DJ1000", "DL", "dm2/dm3", "DNG", "Doodle", "DPX", "Dr. Halo", "DrawIT", "ECW", "ElectronicImage", "EPSF", "ESM", "Facesaver", "Favicon ICO", "FAX", "FaxSTF", "fep", "fig", "First Publisher art", "FireViewer PDB", ¬

"FITS", "FLH/FLI/FLC", "FPX", "Freehand 10", "FUJI", "GATAN", "GEM", "GFX", "GIF", "GrayPaint", "GRP", "HAM", "HD Photo (wdp)", "HDR", "HP-GL/2", "HGT", "HMR", "HTC splashscreens", "IBL", "IBM PIC", "IC ? Imagic", "lcd5", "ICo/ICN", "IFF/LBM", "IM", "Image ->Finder", ¬

"ImageLab/PrintTechnic", "IMG/XIMG", "IMQ", "IPLab", "ithmb", "IRIS", "ISS", "j6i", "JBI", "JEDMICS C4", "JIF", "JNG", "JPEG/JFIF", "JPEG 2000", "JPF", "JPX", "KDC", "Keynote PICT", "KISS CEL", "Koala", "Kodak DCS", "KoNTRoN", "LDF", "Liberty IM", "LIFF", "LOGO", ¬

"Lotus-PIC", "LuraDocument", "LWF (LuraWave)", "MacDraw I", "MacPaint", "MAG", "MAYA-IFF", "MBM (Psion 5)", "Meteosat 5", "MDC", "Meteosat 5", "MHT", "MonkeyLogo", "MonkeyCard", "Mov", "MPO", "MP2", "MRC", "MrSID", "MRW", "MSP", "MSX MSX2, MSX+ - MSX2+", "NAA/IPTC", ¬

"NASA Raster Metafile", "NEF", "NEO", "NGG/NCG", "NIF", "NIST PCT", "Nokia .pict", "NoL", "NV12", "ODF", "oNCoR", "ORF", "OTA", "P ? ? Degas", "Palette", "Palm image stream", "PAM", "PAC STAD", "PaperPort (MAX)", "PBM/PGM/PPM", "PCD", "PCX", "PIC (32K)", "PIC", ¬

"PIC", "PIC", "PICS", "PICT", "PICT resource", "PDB", "PDF", "PDS3", "PEF", "PFM", "PGC/PGF", "Photo PDB", "Photostudio", "PGPF", "PGC/PGF", "Photo Raw", "PIX", "PM", "PNG", "PoRST", "PowerPoint", "Ppat", "PSD", "PSP", "PTG", "PWP", "Pxx - Degas", "QDV", "QNT", "QTIF", ¬

"QTL", "RAF", "RAW", "RDC", "RIFF", "RLA", "RLE", "RSB", "RTF", "RW2", "SCR", "SCR", "Scrap", "ScreenShot Hack PDB", "SCX", "SFF", "SFW", "SGI", "SHP", "SHS", "SIGMA SD10 raw", "Sinclair QL", "SIXEL", "SKETCH", "SMV", "SNX", "SoFTIMAGE", "SPC", "SRF", "ST X SBIG", "StartupScreen s", ¬

"STV", "SUN", "Super-Hi-Res 3200", "SVG", "SWF", "System 7 clip", "TBC", "TCL", "TealPaint PDB", "TEX", "TGA", "TIFF", "TIM PSX", "Tiny Viewer PDB", "TN ?", "TRS-80", "VBM", "VFF", "VGS-8", "VITRoNIC", "VoXEL", "VPB", "VPM", "WBIN", "WBMP", "wbz", "wdb", "Webp", "Winfax (FXM)", "Winmail.dat", ¬

"WMF", "WPG", "X11", "X3F", "XBM", "XCF", "XFIG", "X-Face", "XPM", "XWD", "YUV"} -- "asc" is signature


on applicationWillFinishLaunching:aNotification

-- Insert code here to initialize your application before any files are opened

tell me to activate

my displayExtensionsWindow()

end applicationWillFinishLaunching:


on displayExtensionsWindow()

try

set p to 2

set (my setUpExtension) to true

set p to 3

set theflag to true

tell application "Finder"

if not (exists file ((my mailManagerDesktopFolderPath as text) & "Extension Data.plist")) then

set theflag to false

end if

end tell

if not theflag then

set p to 3.1

set tempList to {}

set p to 3.2

ExtensionsArrayController's removeObjects:(ExtensionsArrayController's arrangedObjects())

set p to 3.3

repeat with i from 1 to (((((count of (my extensionsToIgnore)) + 7) div 8) * 8) - 1) by 8

try

set p to 3.31

set item1CB to (current application's NSDictionary's dictionaryWithObjects:{(item i of (my extensionsToIgnore) as text), true} forKeys:{"title", "state"}) # {title:(item i of (my extensionsToIgnore) as text), value:true}

on error

beep

set item1CB to (current application's NSDictionary's dictionaryWithObjects:{"", false} forKeys:{"title", "state"}) #{title:"", value:false}

end try

try

set p to 3.32

set item2CB to (current application's NSDictionary's dictionaryWithObjects:{(item (i + 1) of (my extensionsToIgnore) as text), true} forKeys:{"title", "state"}) #{title:(item (i + 1) of (my extensionsToIgnore) as text), value:true}

on error

set item2CB to (current application's NSDictionary's dictionaryWithObjects:{"", false} forKeys:{"title", "state"}) #{title:"", value:false}

end try

try

set item3CB to (current application's NSDictionary's dictionaryWithObjects:{(item (i + 2) of (my extensionsToIgnore) as text), true} forKeys:{"title", "state"}) #{title:(item (i + 2) of (my extensionsToIgnore) as text), value:true}

on error

set item3CB to (current application's NSDictionary's dictionaryWithObjects:{"", false} forKeys:{"title", "state"}) #{title:"", value:false}

end try

try

set item4CB to (current application's NSDictionary's dictionaryWithObjects:{(item (i + 3) of (my extensionsToIgnore) as text), true} forKeys:{"title", "state"}) #{title:(item (i + 3) of (my extensionsToIgnore) as text), value:true}

on error

set item4CB to (current application's NSDictionary's dictionaryWithObjects:{"", false} forKeys:{"title", "state"}) #{title:"", value:false}

end try

try

set item5CB to (current application's NSDictionary's dictionaryWithObjects:{(item (i + 4) of (my extensionsToIgnore) as text), true} forKeys:{"title", "state"}) #{title:(item (i + 4) of (my extensionsToIgnore) as text), value:true}

on error

set item5CB to (current application's NSDictionary's dictionaryWithObjects:{"", false} forKeys:{"title", "state"}) #{title:"", value:false}

end try

try

set item6CB to (current application's NSDictionary's dictionaryWithObjects:{(item (i + 5) of (my extensionsToIgnore) as text), true} forKeys:{"title", "state"}) #{title:(item (i + 5) of (my extensionsToIgnore) as text), value:true}

on error

set item6CB to (current application's NSDictionary's dictionaryWithObjects:{"", false} forKeys:{"title", "state"}) #{title:"", value:false}

end try

try

set item7CB to (current application's NSDictionary's dictionaryWithObjects:{(item (i + 6) of (my extensionsToIgnore) as text), true} forKeys:{"title", "state"}) #{title:(item (i + 6) of (my extensionsToIgnore) as text), value:true}

on error

set item7CB to (current application's NSDictionary's dictionaryWithObjects:{"", false} forKeys:{"title", "state"}) #{title:"", value:false}

end try

try

set item8CB to (current application's NSDictionary's dictionaryWithObjects:{(item (i + 7) of (my extensionsToIgnore) as text), true} forKeys:{"title", "state"}) #{title:(item (i + 7) of (my extensionsToIgnore) as text), value:true}

on error

set item8CB to (current application's NSDictionary's dictionaryWithObjects:{"", false} forKeys:{"title", "state"}) #{title:"", value:false}

end try

set p to 3.4

set anObj to (current application's NSMutableDictionary's dictionaryWithObjects:{item1CB, item2CB, item3CB, item4CB, item5CB, item6CB, item7CB, item8CB} forKeys:{"Extensions1CB", "Extensions2CB", "Extensions3CB", "Extensions4CB", "Extensions5CB", "Extensions6CB", "Extensions7CB", "Extensions8CB"})

set p to 2

my (ExtensionsArrayController's addObject:anObj)

#set temp to {Extensions1:item1CB, Extensions2:item2CB, Extensions3:item3CB, Extensions4:item4CB, Extensions5:item5CB, Extensions6:item6CB, Extensions7:item7CB, Extensions8:item8CB} #(current application's NSArray's arrayWithArray:

set p to 3.5

#set tempArray to (current application's NSArray's arrayWithArray:temp)

set p to 3.51

end repeat

set p to 3.6

set (my ExtValueDict) to tempList

#set (my ExtValueDict) to current application's NSArray's arrayWithArray:tempList

my fordEvent()

set p to 3.7

my SaveExtensionData()

else

set (my setUpExtension) to false

end if

set p to 4

try

tell ListWindow to display()

end try

my fordEvent()

set p to 5

try

tell me to activate

end try

ListWindow's makeKeyAndOrderFront:me

set p to 6

if not (my setUpExtension) then my clickBoxesToSetUp()

on error errmsg number errnum

tell application "System Events" to display dialog ("AppDelegate's displayExtensionsWindow " & " p = " & p & " " & errmsg as text)

end try

end displayExtensionsWindow



on setUpTitleValue:sender

set tempSender to sender

try

set p to 1

set tempTitle to tempSender's title() as text

say tempTitle -- < Works OK!

set p to 2

if (my setUpExtension) then

set p to 2.1

tell application "System Events" to tell process "GC Name Extension lister"

set p to 2.2

tell window "Extensions active setter"

set p to 2.3

set tempV to value of checkbox tempTitle of group 1 as boolean

end tell

end tell

say tempV as text

set temp of (my ExtValueDict) to tempV

my SaveExtensionData()

else

set p to 3

tell application "System Events"

set value of sender to temp of (my ExtValueDict)

end tell

end if

on error errmsg number errnum

tell application "System Events" to display dialog ("AppDelegate's setUpTitleValue " & " p = " & p & " " & errmsg as text)

end try

end setUpTitleValue:


on SaveExtensionData()

try

set thePPath to POSIX path of ((my mailManagerDesktopFolderPath as text) & "Extension Data.plist") as text

end try

try

set ExtValueDict to ExtensionsArrayController's arrangedObjects() as list

on error errmsg number errnum

say "Extension Array controller"

set ExtValueDict to {}

tell application "System Events" to display dialog ("SaveExtensionData " & errmsg as text) giving up after 20

end try

try

say 2000

tell application id "com.apple.systemevents"

ExtValueDict's writeToFile:thePPath atomically:true

end tell

on error errmsg number errnum

tell application "System Events" to display dialog ("AppDelegate's SaveExtensionData " & errmsg as text)

end try

end SaveExtensionData


on clickBoxesToSetUp()

say 100

set thePPath to POSIX path of (((my mailManagerDesktopFolderPath) & "Extension Data.plist") as text)

say 101

set theflag to true

tell application "Finder"

if (not (exists file (my mailManagerDesktopFolderPath & "Extension Data.plist" as text))) then set theflag to false

end tell

say 102

if theflag then

try

set (my ExtValueDict) to current application's NSDictionary's dictionaryWithContentsOfFile:(thePPath) # POsIX path

end try

end if

say 103

try

say 0

repeat with i from 1 to (((((count of (my ExtValueDict)) + 7) div 8) * 8) - 1) by 8

say i

set item1 to item i of (my ExtValueDict)

say 1

set item1Key to title of key of item 1 as text

say 2

set item1Value to item1Key of (my ExtValueDict)

say 3

tell application "System Events" to display dialog item1Key & " " & item1Value as text

set item2 to item (i + 1) of (my ExtValueDict)

set item3 to item (i + 2) of (my ExtValueDict)

set item4 to item (i + 3) of (my ExtValueDict)

set item5 to item (i + 4) of (my ExtValueDict)

set item6 to item (i + 5) of (my ExtValueDict)

set item7 to item (i + 6) of (my ExtValueDict)

set item8 to item (i + 7) of (my ExtValueDict)

end repeat

on error errmsg number errnum

tell application "System Events" to display dialog ("AppDelegate's SaveExtensionData " & errmsg as text)

end try

set (my setUpExtension) to true

end clickBoxesToSetUp


on applicationShouldTerminate:sender

-- Insert code here to do any housekeeping before your application quits

return current application's NSTerminateNow

end applicationShouldTerminate:


end script

Problem saving inserted Check Boxes in table to Array Controller
 
 
Q