From 3d2a33ec278c9a10335f9c59d0556876c9bb4f2f Mon Sep 17 00:00:00 2001 From: aglv Date: Wed, 8 May 2013 16:18:23 +0200 Subject: [PATCH] Reporter 1.2 --- .../project.pbxproj | 4 +- HipArthroplastyTemplating/Versions.txt | 2 +- .../project.pbxproj | 12 +- .../Resources/Plugin-Info.plist | 2 +- .../Sources/KeyObjectSelectionFilter.mm | 14 +- Reporter/Reporter.xcodeproj/project.pbxproj | 23 +- Reporter/Resources/Info.plist | 2 +- Reporter/Resources/Reporter.applescript | 155 +++++----- Reporter/Sources/KBPopUpToolbarItem.h | 24 -- Reporter/Sources/KBPopUpToolbarItem.m | 283 ------------------ Reporter/html/Reporter.osirixplugin.zip | Bin 77822 -> 68309 bytes Reporter/html/index.html | 4 + Reporter/html/style.css | 5 + Worklists/Resources/Info.plist | 8 +- Worklists/Sources/Worklist.mm | 8 +- Worklists/Sources/WorklistsPlugin.h | 4 + Worklists/Sources/WorklistsPlugin.mm | 92 +++++- 17 files changed, 212 insertions(+), 430 deletions(-) delete mode 100644 Reporter/Sources/KBPopUpToolbarItem.h delete mode 100644 Reporter/Sources/KBPopUpToolbarItem.m diff --git a/HipArthroplastyTemplating/HipArthroplastyTemplating.xcodeproj/project.pbxproj b/HipArthroplastyTemplating/HipArthroplastyTemplating.xcodeproj/project.pbxproj index 02a8ec2..f47f8d7 100644 --- a/HipArthroplastyTemplating/HipArthroplastyTemplating.xcodeproj/project.pbxproj +++ b/HipArthroplastyTemplating/HipArthroplastyTemplating.xcodeproj/project.pbxproj @@ -106,7 +106,7 @@ 59F6A17010564067008585F5 /* ArthroplastyTemplatingWindowController+OsiriX.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "ArthroplastyTemplatingWindowController+OsiriX.mm"; sourceTree = ""; }; 59F6A17410564159008585F5 /* ArthroplastyTemplatingWindowController+Templates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ArthroplastyTemplatingWindowController+Templates.h"; sourceTree = ""; }; 59F6A17510564159008585F5 /* ArthroplastyTemplatingWindowController+Templates.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "ArthroplastyTemplatingWindowController+Templates.mm"; sourceTree = ""; }; - 712BC55D15871807005460E6 /* OsiriXAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OsiriXAPI.framework; path = "../../osirix-trunk/build/Development/OsiriXAPI.framework"; sourceTree = ""; }; + 712BC55D15871807005460E6 /* OsiriXAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OsiriXAPI.framework; path = ../../osirix/build/Development/OsiriXAPI.framework; sourceTree = ""; }; 713D45E115AD861000B392E0 /* Versions.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Versions.txt; sourceTree = ""; }; 718D0AE8159C8E9A00F27CE9 /* HipAT2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HipAT2D.h; sourceTree = ""; }; 718D0AE9159C8E9A00F27CE9 /* HipAT2D.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = HipAT2D.mm; sourceTree = ""; }; @@ -419,7 +419,7 @@ FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "\"$(SRCROOT)/../../osirix-trunk/build/Development\"", + "\"$(SRCROOT)/../../osirix/build/Development\"", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SYSTEM_LIBRARY_DIR)/Frameworks/Accelerate.framework/Versions/A/Frameworks\""; GCC_C_LANGUAGE_STANDARD = gnu99; diff --git a/HipArthroplastyTemplating/Versions.txt b/HipArthroplastyTemplating/Versions.txt index 2bfb32e..fceb6f8 100644 --- a/HipArthroplastyTemplating/Versions.txt +++ b/HipArthroplastyTemplating/Versions.txt @@ -6,7 +6,7 @@ - fixed bug: if /Library/Application Support/OsiriX doesn't exist, don't try to create it 2.4.1 -- 1-click calibration also possible with non-think reference objects thanks to better flood threshold computation +- 1-click calibration also possible with non-thick reference objects thanks to better flood threshold computation 2.4 - Added Medacta miniMAX stems diff --git a/KeyObjectSelection/KeyObjectSelection.xcodeproj/project.pbxproj b/KeyObjectSelection/KeyObjectSelection.xcodeproj/project.pbxproj index 0b4f3d2..b184b6b 100644 --- a/KeyObjectSelection/KeyObjectSelection.xcodeproj/project.pbxproj +++ b/KeyObjectSelection/KeyObjectSelection.xcodeproj/project.pbxproj @@ -40,7 +40,7 @@ 089C167FFE841241C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 32DBCF630370AF2F00C91783 /* KeyObjectSelection_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KeyObjectSelection_Prefix.pch; path = Sources/KeyObjectSelection_Prefix.pch; sourceTree = ""; }; - 7116D7391574A91300FA293A /* OsiriX.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OsiriX.framework; path = "../../osirix-trunk/build/Development/OsiriX.framework"; sourceTree = ""; }; + 7116D7391574A91300FA293A /* OsiriX.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OsiriX.framework; path = ../../osirix/build/Development/OsiriX.framework; sourceTree = ""; }; 7116D74515751B9A00FA293A /* KeyObjectSelectionPrefs.prefPane */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = KeyObjectSelectionPrefs.prefPane; sourceTree = BUILT_PRODUCTS_DIR; }; 7116D74715751B9A00FA293A /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 7116D74915751B9A00FA293A /* PreferencePanes.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PreferencePanes.framework; path = System/Library/Frameworks/PreferencePanes.framework; sourceTree = SDKROOT; }; @@ -53,7 +53,7 @@ 7116D76615751C5800FA293A /* KeyObjectSelectionPrefs.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = KeyObjectSelectionPrefs.xib; path = Resources/KeyObjectSelectionPrefs.xib; sourceTree = ""; }; 71E2C42E1576657800EB8B95 /* NSUserDefaults+KOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSUserDefaults+KOS.h"; path = "Sources/NSUserDefaults+KOS.h"; sourceTree = ""; }; 71E2C42F1576657800EB8B95 /* NSUserDefaults+KOS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSUserDefaults+KOS.m"; path = "Sources/NSUserDefaults+KOS.m"; sourceTree = ""; }; - 8420023112E829A200E1E9CE /* OsiriXAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OsiriXAPI.framework; path = "../../osirix-trunk/build/Development/OsiriXAPI.framework"; sourceTree = ""; }; + 8420023112E829A200E1E9CE /* OsiriXAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OsiriXAPI.framework; path = ../../osirix/build/Development/OsiriXAPI.framework; sourceTree = ""; }; 8D5B49B7048680CD000E48DA /* Plugin-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "Plugin-Info.plist"; path = "Resources/Plugin-Info.plist"; sourceTree = ""; }; AB5D36050680E57E00F4007A /* KeyObjectSelection.osirixplugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = KeyObjectSelection.osirixplugin; sourceTree = BUILT_PRODUCTS_DIR; }; ABA48A640680BB600089EB4F /* KeyObjectSelectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = KeyObjectSelectionFilter.h; path = Sources/KeyObjectSelectionFilter.h; sourceTree = ""; }; @@ -412,7 +412,7 @@ FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)\"", - "\"../../osirix-trunk/build/Development\"", + "\"../../osirix/build/Development\"", ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_TRIGRAPHS = NO; @@ -434,7 +434,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = KeyObjectSelection; SECTORDER_FLAGS = ""; - USER_HEADER_SEARCH_PATHS = "\"../../osirix-trunk/build/Development/OsiriXAPI.framework/Versions/A/Headers\""; + USER_HEADER_SEARCH_PATHS = "\"../../osirix/build/Development/OsiriXAPI.framework/Versions/A/Headers\""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", @@ -452,7 +452,7 @@ FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)\"", - "\"../../osirix-trunk/build/Development\"", + "\"../../osirix/build/Development\"", ); GCC_ENABLE_TRIGRAPHS = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -471,7 +471,7 @@ OTHER_REZFLAGS = ""; PRODUCT_NAME = KeyObjectSelection; SECTORDER_FLAGS = ""; - USER_HEADER_SEARCH_PATHS = "\"../../osirix-trunk/build/Development/OsiriXAPI.framework/Versions/A/Headers\""; + USER_HEADER_SEARCH_PATHS = "\"../../osirix/build/Development/OsiriXAPI.framework/Versions/A/Headers\""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", diff --git a/KeyObjectSelection/Resources/Plugin-Info.plist b/KeyObjectSelection/Resources/Plugin-Info.plist index 7086e6a..f007f1b 100644 --- a/KeyObjectSelection/Resources/Plugin-Info.plist +++ b/KeyObjectSelection/Resources/Plugin-Info.plist @@ -15,7 +15,7 @@ CFBundleSignature ???? CFBundleShortVersionString - 1.0.2 + 1.0.3 NSPrincipalClass KeyObjectSelectionFilter diff --git a/KeyObjectSelection/Sources/KeyObjectSelectionFilter.mm b/KeyObjectSelection/Sources/KeyObjectSelectionFilter.mm index 45c17ce..f0e5b46 100644 --- a/KeyObjectSelection/Sources/KeyObjectSelectionFilter.mm +++ b/KeyObjectSelection/Sources/KeyObjectSelectionFilter.mm @@ -656,11 +656,11 @@ -(void)_ViewerController_setKeyImage:(id)sender { // import the file into our DB DicomDatabase* database = [DicomDatabase databaseForContext:study.managedObjectContext]; - NSArray* images = [database addFilesAtPaths:[NSArray arrayWithObject:path] - postNotifications:YES - dicomOnly:YES - rereadExistingItems:YES - generatedByOsiriX:YES]; + NSArray* imageIDs = [database addFilesAtPaths:[NSArray arrayWithObject:path] + postNotifications:YES + dicomOnly:YES + rereadExistingItems:YES + generatedByOsiriX:YES]; // upload the new file to the DICOM node if ([NSUserDefaults.standardUserDefaults boolForKey:KOSSynchronizeKey]) // plugin is active @@ -687,8 +687,8 @@ -(void)_ViewerController_setKeyImage:(id)sender { }]; // set the new images as key images - for (DicomImage* image in images) - [image setIsKeyImage:[NSNumber numberWithBool:YES]]; + for (DicomImage* imageID in imageIDs) + [[database objectWithID:imageID] setIsKeyImage:[NSNumber numberWithBool:YES]]; } else [self _ViewerController_setKeyImage:sender]; diff --git a/Reporter/Reporter.xcodeproj/project.pbxproj b/Reporter/Reporter.xcodeproj/project.pbxproj index 2b552d9..2ed66cc 100644 --- a/Reporter/Reporter.xcodeproj/project.pbxproj +++ b/Reporter/Reporter.xcodeproj/project.pbxproj @@ -13,8 +13,6 @@ 717FD97716C4E69900CE8222 /* ReporterPrefsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 717FD97616C4E69900CE8222 /* ReporterPrefsController.m */; }; 717FD97916C4E71200CE8222 /* PreferencePanes.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 717FD97816C4E71200CE8222 /* PreferencePanes.framework */; }; 717FD97A16C4EA4800CE8222 /* ReporterPrefs.prefPane in Resources */ = {isa = PBXBuildFile; fileRef = 717FD95F16C4E06B00CE8222 /* ReporterPrefs.prefPane */; }; - 71CD3888151B7657008B5E86 /* KBPopUpToolbarItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 71CD3886151B7657008B5E86 /* KBPopUpToolbarItem.h */; }; - 71CD3889151B7657008B5E86 /* KBPopUpToolbarItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 71CD3887151B7657008B5E86 /* KBPopUpToolbarItem.m */; }; 71FD07B8151B5FA5001DA7FE /* Reporter.png in Resources */ = {isa = PBXBuildFile; fileRef = 71FD07B7151B5FA5001DA7FE /* Reporter.png */; }; 8420023212E829A200E1E9CE /* OsiriXAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8420023112E829A200E1E9CE /* OsiriXAPI.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 8D5B49AE048680CD000E48DA /* Reporter_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = 32DBCF630370AF2F00C91783 /* Reporter_Prefix.pch */; }; @@ -49,10 +47,8 @@ 717FD97516C4E69900CE8222 /* ReporterPrefsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ReporterPrefsController.h; path = Sources/ReporterPrefsController.h; sourceTree = SOURCE_ROOT; }; 717FD97616C4E69900CE8222 /* ReporterPrefsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ReporterPrefsController.m; path = Sources/ReporterPrefsController.m; sourceTree = SOURCE_ROOT; }; 717FD97816C4E71200CE8222 /* PreferencePanes.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PreferencePanes.framework; path = ../../../../../../System/Library/Frameworks/PreferencePanes.framework; sourceTree = ""; }; - 71CD3886151B7657008B5E86 /* KBPopUpToolbarItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KBPopUpToolbarItem.h; path = Sources/KBPopUpToolbarItem.h; sourceTree = ""; }; - 71CD3887151B7657008B5E86 /* KBPopUpToolbarItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = KBPopUpToolbarItem.m; path = Sources/KBPopUpToolbarItem.m; sourceTree = ""; }; 71FD07B7151B5FA5001DA7FE /* Reporter.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Reporter.png; path = Resources/Reporter.png; sourceTree = ""; }; - 8420023112E829A200E1E9CE /* OsiriXAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OsiriXAPI.framework; path = "../../osirix-trunk/build/Development/OsiriXAPI.framework"; sourceTree = ""; }; + 8420023112E829A200E1E9CE /* OsiriXAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OsiriXAPI.framework; path = ../../osirix/build/Development/OsiriXAPI.framework; sourceTree = ""; }; 8D5B49B7048680CD000E48DA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Resources/Info.plist; sourceTree = ""; }; AB5D36050680E57E00F4007A /* Reporter.osirixplugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Reporter.osirixplugin; sourceTree = BUILT_PRODUCTS_DIR; }; ABA48A640680BB600089EB4F /* ReporterFilter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ReporterFilter.h; path = Sources/ReporterFilter.h; sourceTree = ""; }; @@ -154,8 +150,6 @@ isa = PBXGroup; children = ( 32DBCF630370AF2F00C91783 /* Reporter_Prefix.pch */, - 71CD3886151B7657008B5E86 /* KBPopUpToolbarItem.h */, - 71CD3887151B7657008B5E86 /* KBPopUpToolbarItem.m */, ); name = "Other Sources"; sourceTree = ""; @@ -200,7 +194,6 @@ files = ( 8D5B49AE048680CD000E48DA /* Reporter_Prefix.pch in Headers */, ABA48A650680BB600089EB4F /* ReporterFilter.h in Headers */, - 71CD3888151B7657008B5E86 /* KBPopUpToolbarItem.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -319,7 +312,6 @@ files = ( ABA48A670680BB690089EB4F /* ReporterFilter.mm in Sources */, 7170F8F6151A010100DC48DF /* Reporter.applescript in Sources */, - 71CD3889151B7657008B5E86 /* KBPopUpToolbarItem.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -411,11 +403,6 @@ buildSettings = { COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - "../../osirix-trunk/build/Development/", - ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_TRIGRAPHS = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -452,11 +439,6 @@ isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - "../../osirix-trunk/build/Development/", - ); GCC_ENABLE_TRIGRAPHS = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Sources/Reporter_Prefix.pch; @@ -490,6 +472,7 @@ isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + FRAMEWORK_SEARCH_PATHS = ../../osirix/build/Development/; MACOSX_DEPLOYMENT_TARGET = 10.7; SDKROOT = macosx10.7; }; @@ -499,6 +482,7 @@ isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + FRAMEWORK_SEARCH_PATHS = ../../osirix/build/Development/; MACOSX_DEPLOYMENT_TARGET = 10.7; SDKROOT = macosx10.7; }; @@ -514,6 +498,7 @@ 717FD97016C4E06B00CE8222 /* Deployment */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Development; }; CE6A9A9008AC841300D0C1EE /* Build configuration list for PBXNativeTarget "Reporter" */ = { isa = XCConfigurationList; diff --git a/Reporter/Resources/Info.plist b/Reporter/Resources/Info.plist index 50ba9bd..67b5a60 100644 --- a/Reporter/Resources/Info.plist +++ b/Reporter/Resources/Info.plist @@ -15,7 +15,7 @@ CFBundleSignature ???? CFBundleShortVersionString - 1.1.0 + 1.2.0 NSPrincipalClass ReporterFilter MenuTitles diff --git a/Reporter/Resources/Reporter.applescript b/Reporter/Resources/Reporter.applescript index bf26292..50f1cc6 100644 --- a/Reporter/Resources/Reporter.applescript +++ b/Reporter/Resources/Reporter.applescript @@ -25,76 +25,95 @@ on run argv -- insert the image as a text box in a paragraph with style Caption tell front document - -- make sure the Caption style exists -- yes, in english... - try - set sc to paragraph style "Caption" - -- the Caption style often has 0 spacing when unused… fix this, or our insertions will be confusing - if space before of sc is 0 and space after of sc is 0 then - set space before of sc to 5 - set space after of sc to 5 - end if - on error errmsg number errnbr - make new paragraph style with properties {name:"Caption", alignment:center, space before:5, space after:5, keep lines together:true, keep with next paragraph:false, font name:"Helvetica", font size:11, italic:true} - end try - - (* - -- is there already a text box with the current uid for name? - set tb to 0 - if replaceFlag is equal to 1 then - repeat with itb in text boxes - if name of itb as Unicode text is equal to uid as Unicode text then - set tb to itb - exit repeat - end if - end repeat - end if - - if tb is not equal to 0 then - set image data of tb to imageFilePath - else - *) - - -- append a new paragraph that will represent image's caption - set p to make new paragraph at after last paragraph - set text of p to (text of p & caption as Unicode text) -- TODO: it would be great to insert a shift-newline: (text of p & shift-newline & caption as Unicode text) - returns are captured as "next paragraph", we just want a newline - -- insert a text box to include the image. this is the only way Pages.app officially allows us to insert images - make new text box at after p with properties {fill type:plain image, image data:imageFilePath, stroke type:none, extra space:1, placement:moving, name:uid, width:iwidth, height:iheight} - -- apply some styling to the newly created text box (the image) and paragraph - set paragraph style of last paragraph to paragraph style "Caption" + -- is there a replaceable image? + set replaceIndex to 0 + set counter to 0 + repeat with theImage in images + set counter to counter + 1 + if replaceable of theImage is true then + set replaceIndex to counter + exit repeat + end if + end repeat - -- set the text box to take the whole width of teh page, or the caption will show at its right - set width of last text box to "100%" - set nwidth to width of last text box - -- if the image width won't fit, adapt the height - if nwidth < iwidth then - set height of last text box to iheight / iwidth * nwidth - end if - - -- if the image is very vertical, it'll cover an entire page.. leave at least the space for the caption - set nheight to height of last text box - set mheight to height of containing page of last text box - top margin - bottom margin - 0.035277778*2 -- 2 points --- display dialog the "ssfsf " & nheight & " " & mheight - if nheight > mheight then - set pc to page count - repeat while (page count) is equal to pc - set height of last text box to height of last text box - 0.2 - end repeat - --set height of last text box to mheight - end if - - -- if the image is much smaller than the page width, force the caption text to be centered - --if nwidth - iwidth > nwidth / 3 then - set alignment of last paragraph to center -- TODO: do we want to modify the Caption style instead? - --end if + if replaceIndex is not 0 then -- there is a replaceable image object, replace it + + set image data of image replaceIndex to imageFilePath + set replaceable of image replaceIndex to false + + else -- there are no replaceable image objects + + -- make sure the Caption style exists -- yes, in english... + try + set sc to paragraph style "Caption" + -- the Caption style often has 0 spacing when unused… fix this, or our insertions will be confusing + if space before of sc is 0 and space after of sc is 0 then + set space before of sc to 5 + set space after of sc to 5 + end if + on error errmsg number errnbr + make new paragraph style with properties {name:"Caption", alignment:center, space before:5, space after:5, keep lines together:true, keep with next paragraph:false, font name:"Helvetica", font size:11, italic:true} + end try + + (* + -- is there already a text box with the current uid for name? + set tb to 0 + if replaceFlag is equal to 1 then + repeat with itb in text boxes + if name of itb as Unicode text is equal to uid as Unicode text then + set tb to itb + exit repeat + end if + end repeat + end if + + if tb is not equal to 0 then + set image data of tb to imageFilePath + else + *) + + -- append a new paragraph that will represent image's caption + set p to make new paragraph at after last paragraph + set text of p to (text of p & caption as Unicode text) -- TODO: it would be great to insert a shift-newline: (text of p & shift-newline & caption as Unicode text) - returns are captured as "next paragraph", we just want a newline + -- insert a text box to include the image. this is the only way Pages.app officially allows us to insert images + make new text box at after p with properties {fill type:plain image, image data:imageFilePath, stroke type:none, extra space:1, placement:moving, name:uid, width:iwidth, height:iheight} + -- apply some styling to the newly created text box (the image) and paragraph + set paragraph style of last paragraph to paragraph style "Caption" + + -- set the text box to take the whole width of teh page, or the caption will show at its right + set width of last text box to "100%" + set nwidth to width of last text box + -- if the image width won't fit, adapt the height + if nwidth < iwidth then + set height of last text box to iheight / iwidth * nwidth + end if + + -- if the image is very vertical, it'll cover an entire page.. leave at least the space for the caption + set nheight to height of last text box + set mheight to height of containing page of last text box - top margin - bottom margin - 0.035277778*2 -- 2 points + -- display dialog the "ssfsf " & nheight & " " & mheight + if nheight > mheight then + set pc to page count + repeat while (page count) is equal to pc + set height of last text box to height of last text box - 0.2 + end repeat + --set height of last text box to mheight + end if + + -- if the image is much smaller than the page width, force the caption text to be centered + --if nwidth - iwidth > nwidth / 3 then + set alignment of last paragraph to center -- TODO: do we want to modify the Caption style instead? + --end if - -- because of a bug in Pages, we need to re-enter the text box height, or the text box size won't be properly saved - set nheight to height of last text box - set height of last text box to 1 - set height of last text box to nheight - - (* - end if - *) + -- because of a bug in Pages, we need to re-enter the text box height, or the text box size won't be properly saved + set nheight to height of last text box + set height of last text box to 1 + set height of last text box to nheight + + (* + end if + *) + end if end tell end tell end run \ No newline at end of file diff --git a/Reporter/Sources/KBPopUpToolbarItem.h b/Reporter/Sources/KBPopUpToolbarItem.h deleted file mode 100644 index 9d4d733..0000000 --- a/Reporter/Sources/KBPopUpToolbarItem.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// KBPopUpToolbarItem.h -// -------------------- -// -// Created by Keith Blount on 14/05/2006. -// Copyright 2006 Keith Blount. All rights reserved. -// -// Provides a toolbar item that performs its given action if clicked, or displays a pop-up menu -// (if it has one) if held down for over half a second. -// - -#import -@class KBDelayedPopUpButton; - - -@interface ReporterKBPopUpToolbarItem : NSToolbarItem -{ - KBDelayedPopUpButton *button; - NSImage *smallImage; - NSImage *regularImage; -} -- (void)setMenu:(NSMenu *)menu; -- (NSMenu *)menu; -@end diff --git a/Reporter/Sources/KBPopUpToolbarItem.m b/Reporter/Sources/KBPopUpToolbarItem.m deleted file mode 100644 index 46817bf..0000000 --- a/Reporter/Sources/KBPopUpToolbarItem.m +++ /dev/null @@ -1,283 +0,0 @@ -// -// KBPopUpToolbarItem.m -// -------------------- -// -// Created by Keith Blount on 14/05/2006. -// Copyright 2006 Keith Blount. All rights reserved. -// - -#import "KBPopUpToolbarItem.h" - -@interface KBDelayedPopUpButtonCell : NSButtonCell -@end - -@implementation KBDelayedPopUpButtonCell - -- (NSPoint)menuPositionForFrame:(NSRect)cellFrame inView:(NSView *)controlView -{ - NSPoint result = [controlView convertPoint:cellFrame.origin toView:nil]; - result.x += 1.0; - result.y -= cellFrame.size.height + 5.5; - return result; -} - -- (void)showMenuForEvent:(NSEvent *)theEvent controlView:(NSView *)controlView cellFrame:(NSRect)cellFrame -{ - NSPoint menuPosition = [self menuPositionForFrame:cellFrame inView:controlView]; - - // Create event for pop up menu with adjusted mouse position - NSEvent *menuEvent = [NSEvent mouseEventWithType:[theEvent type] - location:menuPosition - modifierFlags:[theEvent modifierFlags] - timestamp:[theEvent timestamp] - windowNumber:[theEvent windowNumber] - context:[theEvent context] - eventNumber:[theEvent eventNumber] - clickCount:[theEvent clickCount] - pressure:[theEvent pressure]]; - - [NSMenu popUpContextMenu:[self menu] withEvent:menuEvent forView:controlView]; -} - -- (BOOL)trackMouse:(NSEvent *)theEvent inRect:(NSRect)cellFrame ofView:(NSView *)controlView untilMouseUp:(BOOL)untilMouseUp -{ - - BOOL result = NO; - NSDate *endDate; - NSPoint currentPoint = [theEvent locationInWindow]; - BOOL done = NO; - BOOL trackContinously = [self startTrackingAt:currentPoint inView:controlView]; - - // Catch next mouse-dragged or mouse-up event until timeout - BOOL mouseIsUp = NO; - NSEvent *event; - while (!done) - { - NSPoint lastPoint = currentPoint; - - // Set up timer for pop-up menu if we have one - if ([self menu]) - endDate = [NSDate dateWithTimeIntervalSinceNow:0.5]; - else - endDate = [NSDate distantFuture]; - - event = [NSApp nextEventMatchingMask:(NSLeftMouseUpMask|NSLeftMouseDraggedMask) - untilDate:endDate - inMode:NSEventTrackingRunLoopMode - dequeue:YES]; - - if (event) // Mouse event - { - currentPoint = [event locationInWindow]; - - // Send continueTracking.../stopTracking... - if (trackContinously) - { - if (![self continueTracking:lastPoint at:currentPoint inView:controlView]) - { - done = YES; - [self stopTracking:lastPoint at:currentPoint inView:controlView mouseIsUp:mouseIsUp]; - } - if ([self isContinuous]) - { - [NSApp sendAction:[self action] to:[self target] from:controlView]; - } - } - - mouseIsUp = ([event type] == NSLeftMouseUp); - done = done || mouseIsUp; - - if (untilMouseUp) - { - result = mouseIsUp; - } - else - { - // Check if the mouse left our cell rect - result = NSPointInRect([controlView convertPoint:currentPoint fromView:nil], cellFrame); - if (!result) - done = YES; - } - - if (done && result && ![self isContinuous]) - [NSApp sendAction:[self action] to:[self target] from:controlView]; - - } - else // Show menu - { - done = YES; - result = YES; - [self showMenuForEvent:theEvent controlView:controlView cellFrame:cellFrame]; - } - } - return result; -} - -@end - -@interface KBDelayedPopUpButton : NSButton -@end - -@implementation KBDelayedPopUpButton - -- (id)initWithFrame:(NSRect)frameRect -{ - if (self = [super initWithFrame:frameRect]) - { - if (![[self cell] isKindOfClass:[KBDelayedPopUpButtonCell class]]) - { - NSString *title = [self title]; - if (title == nil) title = @""; - [self setCell:[[[KBDelayedPopUpButtonCell alloc] initTextCell:title] autorelease]]; - [[self cell] setControlSize:NSRegularControlSize]; - } - } - return self; -} - -@end - - -@implementation ReporterKBPopUpToolbarItem - -- (id)initWithItemIdentifier:(NSString *)ident -{ - if (self = [super initWithItemIdentifier:ident]) - { - button = [[KBDelayedPopUpButton alloc] initWithFrame:NSMakeRect(0,0,32,32)]; - [button setButtonType:NSMomentaryChangeButton]; - [button setBordered:NO]; - [self setView:button]; - [self setMinSize:NSMakeSize(32,32)]; - [self setMaxSize:NSMakeSize(32,32)]; - } - return self; -} - -// Note that we make no assumptions about the retain/release of the toolbar item's view, just to be sure - -// we therefore retain our button view until we are dealloc'd. -- (void)dealloc -{ - [button release]; - [regularImage release]; - [smallImage release]; - [super dealloc]; -} - -- (KBDelayedPopUpButtonCell *)popupCell -{ - return [(KBDelayedPopUpButton *)[self view] cell]; -} - -- (void)setMenu:(NSMenu *)menu -{ - [[self popupCell] setMenu:menu]; - - // Also set menu form representation - this is used in the toolbar overflow menu but also, more importantly, to display - // a menu in text-only mode. - NSMenuItem *menuFormRep = [[NSMenuItem alloc] initWithTitle:[self label] action:nil keyEquivalent:@""]; - [menuFormRep setSubmenu:menu]; - [self setMenuFormRepresentation:menuFormRep]; - [menuFormRep release]; -} - -- (NSMenu *)menu -{ - return [[self popupCell] menu]; -} - -- (void)setAction:(SEL)aSelector -{ - [[self popupCell] setAction:aSelector]; -} - -- (SEL)action -{ - return [[self popupCell] action]; -} - -- (void)setTarget:(id)anObject -{ - [[self popupCell] setTarget:anObject]; -} - -- (id)target -{ - return [[self popupCell] target]; -} - -- (void)setImage:(NSImage *)anImage -{ - [regularImage autorelease]; - [smallImage autorelease]; - - regularImage = [anImage retain]; - smallImage = [anImage copy]; - [smallImage setScalesWhenResized:YES]; - [smallImage setSize:NSMakeSize(24,24)]; - - if ([[self toolbar] sizeMode] == NSToolbarSizeModeSmall) anImage = smallImage; - - [[self popupCell] setImage:anImage]; -} - -- (NSImage *)image -{ - return [[self popupCell] image]; -} - -- (void)setToolTip:(NSString *)theToolTip -{ - [[self view] setToolTip:theToolTip]; -} - -- (NSString *)toolTip -{ - return [[self view] toolTip]; -} - -- (void)validate -{ - // First, make sure the toolbar image size fits the toolbar size mode; there must be a better place to do this! - NSToolbarSizeMode sizeMode = [[self toolbar] sizeMode]; - float imgWidth = [[self image] size].width; - - if (sizeMode == NSToolbarSizeModeSmall && imgWidth != 24) - { - [[self popupCell] setImage:smallImage]; - } - else if (sizeMode == NSToolbarSizeModeRegular && imgWidth == 24) - { - [[self popupCell] setImage:regularImage]; - } - - if ([self action]) - { - if (![self target]) - [self setEnabled:[[[[self view] window] firstResponder] respondsToSelector:[self action]]]; - - else { - if ([[self target] respondsToSelector:@selector(validateToolbarItem:)]) - [self setEnabled:[[self target] validateToolbarItem:self]]; - else - [self setEnabled:[[self target] respondsToSelector:[self action]]]; - } - } - else - if ([[self toolbar] delegate]) - { - BOOL enabled = YES; - - if ([[[self toolbar] delegate] respondsToSelector:@selector(validateToolbarItem:)]) - enabled = [(id)[[self toolbar] delegate] validateToolbarItem:self]; - - else if ([[[self toolbar] delegate] respondsToSelector:@selector(validateUserInterfaceItem:)]) - enabled = [(id)[[self toolbar] delegate] validateUserInterfaceItem:self]; - - [self setEnabled:enabled]; - } - else - [super validate]; -} - -@end diff --git a/Reporter/html/Reporter.osirixplugin.zip b/Reporter/html/Reporter.osirixplugin.zip index 50d37b1a1e3be8e7e6ce213e603f28b82e8db6b2..9161e437b98453b77fd870a47371d9c9ce02a987 100644 GIT binary patch delta 45695 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 delta 55368 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 Mzs}BtaEXrhf40J(4gdfE diff --git a/Reporter/html/index.html b/Reporter/html/index.html index 672f6a3..0a16e39 100644 --- a/Reporter/html/index.html +++ b/Reporter/html/index.html @@ -19,6 +19,10 @@

Reporter

Hold the toolbar button to list all the available features. +
+

Version History

+
+ Versions 1.2 inserts images in existing replaceable image objects (available in the template) before adding them at the end of the document, the old way.
Versions 1.1 allows you to include the study date in the images' captions. diff --git a/Reporter/html/style.css b/Reporter/html/style.css index 0b546ad..8d357d8 100644 --- a/Reporter/html/style.css +++ b/Reporter/html/style.css @@ -34,6 +34,11 @@ h1 { margin-top: 40px; } +h2 { + margin-left: 20px; + margin-top: 20px; +} + .text { margin: 5px 20px 5px 20px; } diff --git a/Worklists/Resources/Info.plist b/Worklists/Resources/Info.plist index 568cc03..d43aa51 100644 --- a/Worklists/Resources/Info.plist +++ b/Worklists/Resources/Info.plist @@ -15,10 +15,14 @@ CFBundleSignature ???? CFBundleShortVersionString - 1.0.5 + 1.1.0 NSPrincipalClass WorklistsPlugin pluginType - Other + Database + MenuTitles + + Temporarily disable Worklists refresh + diff --git a/Worklists/Sources/Worklist.mm b/Worklists/Sources/Worklist.mm index 45f7d3c..8190c74 100644 --- a/Worklists/Sources/Worklist.mm +++ b/Worklists/Sources/Worklist.mm @@ -180,7 +180,7 @@ - (void)setProperties:(NSDictionary*)properties { if (ti != -1) { if (!self.refreshTimer || _refreshTimer.timeInterval != ti) - self.refreshTimer = [NSTimer scheduledTimerWithTimeInterval:ti target:[WorklistsNonretainingTimerInvoker invokerWithTarget:self selector:@selector(initiateRefresh)] selector:@selector(fire:) userInfo:nil repeats:YES]; + self.refreshTimer = [NSTimer scheduledTimerWithTimeInterval:ti target:[WorklistsNonretainingTimerInvoker invokerWithTarget:self selector:@selector(_timedInitiateRefresh:)] selector:@selector(fire:) userInfo:nil repeats:YES]; [_refreshTimer fire]; } else { self.refreshTimer = nil; @@ -541,6 +541,12 @@ - (void)_threadRefresh { } } +- (void)_timedInitiateRefresh:(NSTimer*)timer { + if ([[WorklistsPlugin instance] refreshDisabled]) + return; + [self initiateRefresh]; +} + - (void)initiateRefresh { [self performSelectorInBackground:@selector(_threadRefresh) withObject:nil]; } diff --git a/Worklists/Sources/WorklistsPlugin.h b/Worklists/Sources/WorklistsPlugin.h index d627e87..00a52df 100644 --- a/Worklists/Sources/WorklistsPlugin.h +++ b/Worklists/Sources/WorklistsPlugin.h @@ -23,10 +23,14 @@ extern NSString* const WorklistAlbumIDsDefaultsKey; NSMutableDictionary* _worklistObjs; NSMutableDictionary* _errors; NSTimer* _urlSyncTimer; + NSMenuItem* _pluginMenuItem; + BOOL _refreshDisabled; + NSTimer* _refreshReenableTimer; } @property(readonly,retain) NSArrayController* worklists; @property(readonly,retain) NSTimer* urlSyncTimer; +@property(readonly) BOOL refreshDisabled; + (WorklistsPlugin*)instance; diff --git a/Worklists/Sources/WorklistsPlugin.mm b/Worklists/Sources/WorklistsPlugin.mm index ccc4bf4..8c82ffc 100644 --- a/Worklists/Sources/WorklistsPlugin.mm +++ b/Worklists/Sources/WorklistsPlugin.mm @@ -20,6 +20,7 @@ #import #import #import +#import @interface WorklistsArrayController : NSArrayController @@ -36,6 +37,7 @@ @implementation WorklistsPlugin @synthesize worklists = _worklists; @synthesize urlSyncTimer = _urlSyncTimer; +@synthesize refreshDisabled = _refreshDisabled; static WorklistsPlugin* WorklistsPluginInstance = nil; static NSString* const Worklists = @"Worklists"; @@ -83,7 +85,9 @@ - (void)dealloc { [NSUserDefaultsController.sharedUserDefaultsController removeObserver:self]; [NSNotificationCenter.defaultCenter removeObserver:self]; + self.urlSyncTimer = nil; + [_refreshReenableTimer release]; [_cachePath release]; [_worklistObjs release]; @@ -99,43 +103,42 @@ - (void)initPlugin { [PreferencesWindowController addPluginPaneWithResourceNamed:@"WorklistsPreferences" inBundle:[NSBundle bundleForClass:[self class]] withTitle:Worklists image:image]; Method method; - IMP imp; + //IMP imp; Class BrowserControllerClass = [BrowserController class]; method = class_getInstanceMethod(BrowserControllerClass, @selector(tableView:willDisplayCell:forTableColumn:row:)); if (!method) [NSException raise:NSGenericException format:@"bad OsiriX version"]; - imp = method_getImplementation(method); - class_addMethod(BrowserControllerClass, @selector(_Worklists_BrowserController_tableView:willDisplayCell:forTableColumn:row:), imp, method_getTypeEncoding(method)); + class_addMethod(BrowserControllerClass, @selector(_Worklists_BrowserController_tableView:willDisplayCell:forTableColumn:row:), method_getImplementation(method), method_getTypeEncoding(method)); method_setImplementation(method, class_getMethodImplementation([self class], @selector(_Worklists_BrowserController_tableView:willDisplayCell:forTableColumn:row:))); method = class_getInstanceMethod(BrowserControllerClass, @selector(tableView:validateDrop:proposedRow:proposedDropOperation:)); if (!method) [NSException raise:NSGenericException format:@"bad OsiriX version"]; - imp = method_getImplementation(method); - class_addMethod(BrowserControllerClass, @selector(_Worklists_BrowserController_tableView:validateDrop:proposedRow:proposedDropOperation:), imp, method_getTypeEncoding(method)); + class_addMethod(BrowserControllerClass, @selector(_Worklists_BrowserController_tableView:validateDrop:proposedRow:proposedDropOperation:), method_getImplementation(method), method_getTypeEncoding(method)); method_setImplementation(method, class_getMethodImplementation([self class], @selector(_Worklists_BrowserController_tableView:validateDrop:proposedRow:proposedDropOperation:))); method = class_getInstanceMethod(BrowserControllerClass, @selector(tableView:toolTipForCell:rect:tableColumn:row:mouseLocation:)); if (!method) [NSException raise:NSGenericException format:@"bad OsiriX version"]; - imp = method_getImplementation(method); - class_addMethod(BrowserControllerClass, @selector(_Worklists_BrowserController_tableView:toolTipForCell:rect:tableColumn:row:mouseLocation:), imp, method_getTypeEncoding(method)); + class_addMethod(BrowserControllerClass, @selector(_Worklists_BrowserController_tableView:toolTipForCell:rect:tableColumn:row:mouseLocation:), method_getImplementation(method), method_getTypeEncoding(method)); method_setImplementation(method, class_getMethodImplementation([self class], @selector(_Worklists_BrowserController_tableView:toolTipForCell:rect:tableColumn:row:mouseLocation:))); method = class_getInstanceMethod(BrowserControllerClass, @selector(menuWillOpen:)); if (!method) [NSException raise:NSGenericException format:@"bad OsiriX version"]; - imp = method_getImplementation(method); - class_addMethod(BrowserControllerClass, @selector(_Worklists_BrowserController_menuWillOpen:), imp, method_getTypeEncoding(method)); + class_addMethod(BrowserControllerClass, @selector(_Worklists_BrowserController_menuWillOpen:), method_getImplementation(method), method_getTypeEncoding(method)); method_setImplementation(method, class_getMethodImplementation([self class], @selector(_Worklists_BrowserController_menuWillOpen:))); method = class_getInstanceMethod(BrowserControllerClass, @selector(outlineView:willDisplayCell:forTableColumn:item:)); if (!method) [NSException raise:NSGenericException format:@"bad OsiriX version"]; - imp = method_getImplementation(method); - class_addMethod(BrowserControllerClass, @selector(_Worklists_BrowserController_outlineView:willDisplayCell:forTableColumn:item:), imp, method_getTypeEncoding(method)); + class_addMethod(BrowserControllerClass, @selector(_Worklists_BrowserController_outlineView:willDisplayCell:forTableColumn:item:), method_getImplementation(method), method_getTypeEncoding(method)); method_setImplementation(method, class_getMethodImplementation([self class], @selector(_Worklists_BrowserController_outlineView:willDisplayCell:forTableColumn:item:))); -} - -- (long)filterImage:(NSString*)menuName { - return 0; + + Class PluginManagerClass = [PluginManager class]; + + method = class_getClassMethod(PluginManagerClass, @selector(setMenus::::)); + if (!method) [NSException raise:NSGenericException format:@"bad OsiriX version"]; + class_addMethod(object_getClass(PluginManagerClass), @selector(_Worklists_PluginManager_setMenus::::), method_getImplementation(method), method_getTypeEncoding(method)); + method_setImplementation(method, method_getImplementation(class_getClassMethod([self class], @selector(_Worklists_PluginManager_setMenus::::)))); + } - (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context { @@ -285,6 +288,38 @@ + (void)refreshAlbumsForDatabase:(DicomDatabase*)db { [BrowserController.currentBrowser refreshAlbums]; } +- (void)updateMenuItem { + [_pluginMenuItem setState:(_refreshDisabled? NSOnState : NSOffState)]; +} + +- (long)filterImage:(NSString*)menuName { + if (_refreshDisabled) { + [_refreshReenableTimer invalidate]; + _refreshReenableTimer = nil; + _refreshDisabled = NO; + [self updateMenuItem]; + } else { + NSAlert* alert = [NSAlert alertWithMessageText:NSLocalizedString(@"Worklists won't be refreshed for the next 60 minutes.", nil) defaultButton:nil alternateButton:NSLocalizedString(@"Cancel", nil) otherButton:nil informativeTextWithFormat:NSLocalizedString(@"After 60 minutes, worklists will automatically start refreshing again, but you can use this menu item to re-enable worklists when you're done.", nil)]; + [alert beginSheetModalForWindow:nil modalDelegate:self didEndSelector:@selector(_disableRefreshSheetDidEnd:returnCode:contextInfo:) contextInfo:nil]; + } + + return 0; +} + +- (void)_disableRefreshSheetDidEnd:(NSAlert*)alert returnCode:(NSInteger)returnCode contextInfo:(void*)contextInfo { + if (returnCode == NSOKButton) { + _refreshDisabled = YES; + [self updateMenuItem]; + _refreshReenableTimer = [NSTimer scheduledTimerWithTimeInterval:3600 target:[WorklistsNonretainingTimerInvoker invokerWithTarget:self selector:@selector(_timedReenableRefresh:)] selector:@selector(fire:) userInfo:nil repeats:NO]; + } +} + +- (void)_timedReenableRefresh:(NSTimer*)timer { + _refreshReenableTimer = nil; + _refreshDisabled = NO; + [self updateMenuItem]; +} + #pragma mark BrowserController - (void)_BrowserController:(BrowserController*)bc tableView:(NSTableView*)table willDisplayCell:(PrettyCell*)cell forTableColumn:(NSTableColumn*)column row:(NSInteger)row { @@ -456,6 +491,33 @@ - (void)_Worklists_BrowserController_outlineView:(NSOutlineView*)outlineView wil [WorklistsPluginInstance _BrowserController:(id)self outlineView:outlineView willDisplayCell:cell forTableColumn:column item:item]; } +- (void)_PluginManager_setMenus:(NSMenu*)filtersMenu :(NSMenu*)roisMenu :(NSMenu*)othersMenu :(NSMenu*)dbMenu { + NSBundle* bundle = [NSBundle bundleForClass:[self class]]; + + _pluginMenuItem = nil; + + for (NSMenuItem* mi in dbMenu.itemArray) { + if (mi.representedObject) { // we recently started setting the NSMenuItem's representedObject to the plugin's NSBundle instance + if (mi.representedObject != bundle) + continue; + } else // previously, the only way to identify the menus was by their title + if (![mi.title isEqualToString:@"Temporarily disable Worklists refresh"]) + continue; + + // mi is our menu item + _pluginMenuItem = mi; + + break; // we don't have other menu items + } + + [self updateMenuItem]; +} + ++ (void)_Worklists_PluginManager_setMenus:(NSMenu*)filtersMenu :(NSMenu*)roisMenu :(NSMenu*)othersMenu :(NSMenu*)dbMenu { + [self _Worklists_PluginManager_setMenus:filtersMenu :roisMenu :othersMenu :dbMenu]; + [WorklistsPluginInstance _PluginManager_setMenus:filtersMenu :roisMenu :othersMenu :dbMenu]; +} + @end