You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
(23) |
Apr
(254) |
May
(252) |
Jun
(209) |
Jul
(198) |
Aug
(192) |
Sep
(207) |
Oct
(120) |
Nov
(179) |
Dec
(52) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(48) |
Feb
(69) |
Mar
(129) |
Apr
(250) |
May
(113) |
Jun
(177) |
Jul
(228) |
Aug
(155) |
Sep
(218) |
Oct
(185) |
Nov
(109) |
Dec
(88) |
2009 |
Jan
(83) |
Feb
(39) |
Mar
(70) |
Apr
(47) |
May
(48) |
Jun
(67) |
Jul
(61) |
Aug
(97) |
Sep
(221) |
Oct
(141) |
Nov
(70) |
Dec
(61) |
2010 |
Jan
(45) |
Feb
(76) |
Mar
(178) |
Apr
(106) |
May
(57) |
Jun
(32) |
Jul
(64) |
Aug
(98) |
Sep
(96) |
Oct
(19) |
Nov
(34) |
Dec
(117) |
2011 |
Jan
(55) |
Feb
(48) |
Mar
(64) |
Apr
(21) |
May
(39) |
Jun
(53) |
Jul
(99) |
Aug
(56) |
Sep
(39) |
Oct
(26) |
Nov
(19) |
Dec
(69) |
2012 |
Jan
(17) |
Feb
(40) |
Mar
(17) |
Apr
|
May
(2) |
Jun
(8) |
Jul
(2) |
Aug
(10) |
Sep
(10) |
Oct
(38) |
Nov
(48) |
Dec
(70) |
2013 |
Jan
(43) |
Feb
(47) |
Mar
(39) |
Apr
(37) |
May
(25) |
Jun
(6) |
Jul
(20) |
Aug
(49) |
Sep
(33) |
Oct
(34) |
Nov
(75) |
Dec
(6) |
2014 |
Jan
(32) |
Feb
(10) |
Mar
(17) |
Apr
|
May
|
Jun
(26) |
Jul
(5) |
Aug
|
Sep
(4) |
Oct
(23) |
Nov
(80) |
Dec
(48) |
2015 |
Jan
(80) |
Feb
(50) |
Mar
(58) |
Apr
(20) |
May
(11) |
Jun
(16) |
Jul
(24) |
Aug
(27) |
Sep
(56) |
Oct
(30) |
Nov
(16) |
Dec
(6) |
2016 |
Jan
(31) |
Feb
(14) |
Mar
(23) |
Apr
(17) |
May
(40) |
Jun
(12) |
Jul
(17) |
Aug
(9) |
Sep
(32) |
Oct
(36) |
Nov
(23) |
Dec
(9) |
2017 |
Jan
(37) |
Feb
(23) |
Mar
(65) |
Apr
(22) |
May
(6) |
Jun
(3) |
Jul
|
Aug
|
Sep
(3) |
Oct
(22) |
Nov
(63) |
Dec
(71) |
2018 |
Jan
(83) |
Feb
(21) |
Mar
(35) |
Apr
(44) |
May
(14) |
Jun
(12) |
Jul
(8) |
Aug
(18) |
Sep
(10) |
Oct
(145) |
Nov
(144) |
Dec
(76) |
2019 |
Jan
(18) |
Feb
(28) |
Mar
(5) |
Apr
(208) |
May
(291) |
Jun
(158) |
Jul
(27) |
Aug
(8) |
Sep
(10) |
Oct
(83) |
Nov
(41) |
Dec
(31) |
2020 |
Jan
(16) |
Feb
(46) |
Mar
(100) |
Apr
(78) |
May
(69) |
Jun
(71) |
Jul
(28) |
Aug
(131) |
Sep
(176) |
Oct
(89) |
Nov
(147) |
Dec
(19) |
2021 |
Jan
(19) |
Feb
(25) |
Mar
(91) |
Apr
(98) |
May
(14) |
Jun
(44) |
Jul
(8) |
Aug
(3) |
Sep
(38) |
Oct
(57) |
Nov
(97) |
Dec
(74) |
2022 |
Jan
(89) |
Feb
(47) |
Mar
(15) |
Apr
(50) |
May
(54) |
Jun
(56) |
Jul
(80) |
Aug
(12) |
Sep
(11) |
Oct
(60) |
Nov
(48) |
Dec
(4) |
2023 |
Jan
(75) |
Feb
(49) |
Mar
(84) |
Apr
(24) |
May
(13) |
Jun
(74) |
Jul
(32) |
Aug
(66) |
Sep
(50) |
Oct
(38) |
Nov
(105) |
Dec
(181) |
2024 |
Jan
(21) |
Feb
(49) |
Mar
(77) |
Apr
(84) |
May
(20) |
Jun
(71) |
Jul
(53) |
Aug
(33) |
Sep
(54) |
Oct
(124) |
Nov
(151) |
Dec
(73) |
2025 |
Jan
(61) |
Feb
(17) |
Mar
(136) |
Apr
(72) |
May
(200) |
Jun
(238) |
Jul
(91) |
Aug
(8) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <ho...@us...> - 2007-07-11 20:42:30
|
Revision: 2482 http://skim-app.svn.sourceforge.net/skim-app/?rev=2482&view=rev Author: hofman Date: 2007-07-11 13:41:54 -0700 (Wed, 11 Jul 2007) Log Message: ----------- Rotate through tool modes using Shift-RightArrow/LeftArrow keys. Modified Paths: -------------- trunk/SKPDFView.m Modified: trunk/SKPDFView.m =================================================================== --- trunk/SKPDFView.m 2007-07-11 17:10:58 UTC (rev 2481) +++ trunk/SKPDFView.m 2007-07-11 20:41:54 UTC (rev 2482) @@ -796,6 +796,10 @@ [self moveActiveAnnotationForKey:eventChar byAmount:(modifiers & NSShiftKeyMask) ? 10.0 : 1.0]; } else if (isPresentation == NO && [activeAnnotation isNoteAnnotation] && [activeAnnotation isResizable] && (eventChar == NSRightArrowFunctionKey || eventChar == NSLeftArrowFunctionKey || eventChar == NSUpArrowFunctionKey || eventChar == NSDownArrowFunctionKey) && (modifiers == NSControlKeyMask || modifiers == NSControlKeyMask | NSShiftKeyMask)) { [self resizeActiveAnnotationForKey:eventChar byAmount:(modifiers & NSShiftKeyMask) ? 10.0 : 1.0]; + } else if (isPresentation == NO && (eventChar == NSRightArrowFunctionKey) && (modifiers == NSShiftKeyMask)) { + [self setToolMode:(toolMode + 1) % 5]; + } else if (isPresentation == NO && (eventChar == NSLeftArrowFunctionKey) && (modifiers == NSShiftKeyMask)) { + [self setToolMode:(toolMode + 4) % 5]; } else if (readingBar && (eventChar == NSRightArrowFunctionKey || eventChar == NSLeftArrowFunctionKey || eventChar == NSUpArrowFunctionKey || eventChar == NSDownArrowFunctionKey) && (modifiers == NSAlternateKeyMask)) { [self moveReadingBarForKey:eventChar]; } else if (isPresentation == NO && [self toolMode] == SKNoteToolMode && modifiers == 0 && eventChar == 't') { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-11 17:11:02
|
Revision: 2481 http://skim-app.svn.sourceforge.net/skim-app/?rev=2481&view=rev Author: hofman Date: 2007-07-11 10:10:58 -0700 (Wed, 11 Jul 2007) Log Message: ----------- Pass the true application class for the container class description in the scriptObjectSpecifier. Modified Paths: -------------- trunk/SKLine.m Modified: trunk/SKLine.m =================================================================== --- trunk/SKLine.m 2007-07-11 17:05:31 UTC (rev 2480) +++ trunk/SKLine.m 2007-07-11 17:10:58 UTC (rev 2481) @@ -51,7 +51,7 @@ - (NSScriptObjectSpecifier *)objectSpecifier { NSScriptObjectSpecifier *containerRef = [container objectSpecifier]; - NSScriptClassDescription *containerClassDescription = container ? [containerRef keyClassDescription] : (NSScriptClassDescription *)[NSClassDescription classDescriptionForClass:[NSApplication class]]; + NSScriptClassDescription *containerClassDescription = container ? [containerRef keyClassDescription] : (NSScriptClassDescription *)[NSClassDescription classDescriptionForClass:[NSApp class]]; return [[[NSIndexSpecifier allocWithZone:[self zone]] initWithContainerClassDescription:containerClassDescription containerSpecifier:containerRef key:@"lines" index:line] autorelease]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-11 17:05:32
|
Revision: 2480 http://skim-app.svn.sourceforge.net/skim-app/?rev=2480&view=rev Author: hofman Date: 2007-07-11 10:05:31 -0700 (Wed, 11 Jul 2007) Log Message: ----------- Add new files for line wrapper for applescript. Added Paths: ----------- trunk/SKLine.h trunk/SKLine.m Added: trunk/SKLine.h =================================================================== --- trunk/SKLine.h (rev 0) +++ trunk/SKLine.h 2007-07-11 17:05:31 UTC (rev 2480) @@ -0,0 +1,48 @@ +// +// SKLine.h +// Skim +// +// Created by Christiaan Hofman on 7/11/07. +/* + This software is Copyright (c) 2007 + Christiaan Hofman. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + - Neither the name of Christiaan Hofman nor the names of any + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import <Cocoa/Cocoa.h> + + +@interface SKLine : NSObject { + id container; + int line; +} +- (id)initWithContainer:(id)aContainer line:(int)aLine; +- (int)line; +@end Added: trunk/SKLine.m =================================================================== --- trunk/SKLine.m (rev 0) +++ trunk/SKLine.m 2007-07-11 17:05:31 UTC (rev 2480) @@ -0,0 +1,62 @@ +// +// SKLine.m +// Skim +// +// Created by Christiaan Hofman on 7/11/07. +/* + This software is Copyright (c) 2007 + Christiaan Hofman. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + - Neither the name of Christiaan Hofman nor the names of any + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import "SKLine.h" + + +@implementation SKLine + +- (id)initWithContainer:(id)aContainer line:(int)aLine { + if (self = [super init]) { + container = aContainer; + line = aLine; + } + return self; +} + +- (NSScriptObjectSpecifier *)objectSpecifier { + NSScriptObjectSpecifier *containerRef = [container objectSpecifier]; + NSScriptClassDescription *containerClassDescription = container ? [containerRef keyClassDescription] : (NSScriptClassDescription *)[NSClassDescription classDescriptionForClass:[NSApplication class]]; + return [[[NSIndexSpecifier allocWithZone:[self zone]] initWithContainerClassDescription:containerClassDescription containerSpecifier:containerRef key:@"lines" index:line] autorelease]; +} + +- (int)line { + return line; +} + +@end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-11 17:02:27
|
Revision: 2479 http://skim-app.svn.sourceforge.net/skim-app/?rev=2479&view=rev Author: hofman Date: 2007-07-11 10:02:23 -0700 (Wed, 11 Jul 2007) Log Message: ----------- Move line wrapper for AppleScript to separate file. Also make it a hidden element of the application, so it can be called outside a tell block for the document. Modified Paths: -------------- trunk/ReleaseNotes.rtf trunk/SKApplicationController.h trunk/SKApplicationController.m trunk/SKDocument.h trunk/SKDocument.m trunk/Skim.sdef trunk/Skim.xcodeproj/project.pbxproj Modified: trunk/ReleaseNotes.rtf =================================================================== --- trunk/ReleaseNotes.rtf 2007-07-11 15:52:57 UTC (rev 2478) +++ trunk/ReleaseNotes.rtf 2007-07-11 17:02:23 UTC (rev 2479) @@ -92,8 +92,9 @@ {\list\listtemplateid88\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid88} {\list\listtemplateid89\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid89} {\list\listtemplateid90\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid90} -{\list\listtemplateid91\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid91}} -{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}{\listoverride\listid5\listoverridecount0\ls5}{\listoverride\listid6\listoverridecount0\ls6}{\listoverride\listid7\listoverridecount0\ls7}{\listoverride\listid8\listoverridecount0\ls8}{\listoverride\listid9\listoverridecount0\ls9}{\listoverride\listid10\listoverridecount0\ls10}{\listoverride\listid11\listoverridecount0\ls11}{\listoverride\listid12\listoverridecount0\ls12}{\listoverride\listid13\listoverridecount0\ls13}{\listoverride\listid14\listoverridecount0\ls14}{\listoverride\listid15\listoverridecount0\ls15}{\listoverride\listid16\listoverridecount0\ls16}{\listoverride\listid17\listoverridecount0\ls17}{\listoverride\listid18\listoverridecount0\ls18}{\listoverride\listid19\listoverridecount0\ls19}{\listoverride\listid20\listoverridecount0\ls20}{\listoverride\listid21\listoverridecount0\ls21}{\listoverride\listid22\listoverridecount0\ls22}{\listoverride\listid23\listoverridecount0\ls23}{\listoverride\listid24\listoverridecount0\ls24}{\listoverride\listid25\listoverridecount0\ls25}{\listoverride\listid26\listoverridecount0\ls26}{\listoverride\listid27\listoverridecount0\ls27}{\listoverride\listid28\listoverridecount0\ls28}{\listoverride\listid29\listoverridecount0\ls29}{\listoverride\listid30\listoverridecount0\ls30}{\listoverride\listid31\listoverridecount0\ls31}{\listoverride\listid32\listoverridecount0\ls32}{\listoverride\listid33\listoverridecount0\ls33}{\listoverride\listid34\listoverridecount0\ls34}{\listoverride\listid35\listoverridecount0\ls35}{\listoverride\listid36\listoverridecount0\ls36}{\listoverride\listid37\listoverridecount0\ls37}{\listoverride\listid38\listoverridecount0\ls38}{\listoverride\listid39\listoverridecount0\ls39}{\listoverride\listid40\listoverridecount0\ls40}{\listoverride\listid41\listoverridecount0\ls41}{\listoverride\listid42\listoverridecount0\ls42}{\listoverride\listid43\listoverridecount0\ls43}{\listoverride\listid44\listoverridecount0\ls44}{\listoverride\listid45\listoverridecount0\ls45}{\listoverride\listid46\listoverridecount0\ls46}{\listoverride\listid47\listoverridecount0\ls47}{\listoverride\listid48\listoverridecount0\ls48}{\listoverride\listid49\listoverridecount0\ls49}{\listoverride\listid50\listoverridecount0\ls50}{\listoverride\listid51\listoverridecount0\ls51}{\listoverride\listid52\listoverridecount0\ls52}{\listoverride\listid53\listoverridecount0\ls53}{\listoverride\listid54\listoverridecount0\ls54}{\listoverride\listid55\listoverridecount0\ls55}{\listoverride\listid56\listoverridecount0\ls56}{\listoverride\listid57\listoverridecount0\ls57}{\listoverride\listid58\listoverridecount0\ls58}{\listoverride\listid59\listoverridecount0\ls59}{\listoverride\listid60\listoverridecount0\ls60}{\listoverride\listid61\listoverridecount0\ls61}{\listoverride\listid62\listoverridecount0\ls62}{\listoverride\listid63\listoverridecount0\ls63}{\listoverride\listid64\listoverridecount0\ls64}{\listoverride\listid65\listoverridecount0\ls65}{\listoverride\listid66\listoverridecount0\ls66}{\listoverride\listid67\listoverridecount0\ls67}{\listoverride\listid68\listoverridecount0\ls68}{\listoverride\listid69\listoverridecount0\ls69}{\listoverride\listid70\listoverridecount0\ls70}{\listoverride\listid71\listoverridecount0\ls71}{\listoverride\listid72\listoverridecount0\ls72}{\listoverride\listid73\listoverridecount0\ls73}{\listoverride\listid74\listoverridecount0\ls74}{\listoverride\listid75\listoverridecount0\ls75}{\listoverride\listid76\listoverridecount0\ls76}{\listoverride\listid77\listoverridecount0\ls77}{\listoverride\listid78\listoverridecount0\ls78}{\listoverride\listid79\listoverridecount0\ls79}{\listoverride\listid80\listoverridecount0\ls80}{\listoverride\listid81\listoverridecount0\ls81}{\listoverride\listid82\listoverridecount0\ls82}{\listoverride\listid83\listoverridecount0\ls83}{\listoverride\listid84\listoverridecount0\ls84}{\listoverride\listid85\listoverridecount0\ls85}{\listoverride\listid86\listoverridecount0\ls86}{\listoverride\listid87\listoverridecount0\ls87}{\listoverride\listid88\listoverridecount0\ls88}{\listoverride\listid89\listoverridecount0\ls89}{\listoverride\listid90\listoverridecount0\ls90}{\listoverride\listid91\listoverridecount0\ls91}} +{\list\listtemplateid91\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid91} +{\list\listtemplateid92\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid92}} +{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}{\listoverride\listid5\listoverridecount0\ls5}{\listoverride\listid6\listoverridecount0\ls6}{\listoverride\listid7\listoverridecount0\ls7}{\listoverride\listid8\listoverridecount0\ls8}{\listoverride\listid9\listoverridecount0\ls9}{\listoverride\listid10\listoverridecount0\ls10}{\listoverride\listid11\listoverridecount0\ls11}{\listoverride\listid12\listoverridecount0\ls12}{\listoverride\listid13\listoverridecount0\ls13}{\listoverride\listid14\listoverridecount0\ls14}{\listoverride\listid15\listoverridecount0\ls15}{\listoverride\listid16\listoverridecount0\ls16}{\listoverride\listid17\listoverridecount0\ls17}{\listoverride\listid18\listoverridecount0\ls18}{\listoverride\listid19\listoverridecount0\ls19}{\listoverride\listid20\listoverridecount0\ls20}{\listoverride\listid21\listoverridecount0\ls21}{\listoverride\listid22\listoverridecount0\ls22}{\listoverride\listid23\listoverridecount0\ls23}{\listoverride\listid24\listoverridecount0\ls24}{\listoverride\listid25\listoverridecount0\ls25}{\listoverride\listid26\listoverridecount0\ls26}{\listoverride\listid27\listoverridecount0\ls27}{\listoverride\listid28\listoverridecount0\ls28}{\listoverride\listid29\listoverridecount0\ls29}{\listoverride\listid30\listoverridecount0\ls30}{\listoverride\listid31\listoverridecount0\ls31}{\listoverride\listid32\listoverridecount0\ls32}{\listoverride\listid33\listoverridecount0\ls33}{\listoverride\listid34\listoverridecount0\ls34}{\listoverride\listid35\listoverridecount0\ls35}{\listoverride\listid36\listoverridecount0\ls36}{\listoverride\listid37\listoverridecount0\ls37}{\listoverride\listid38\listoverridecount0\ls38}{\listoverride\listid39\listoverridecount0\ls39}{\listoverride\listid40\listoverridecount0\ls40}{\listoverride\listid41\listoverridecount0\ls41}{\listoverride\listid42\listoverridecount0\ls42}{\listoverride\listid43\listoverridecount0\ls43}{\listoverride\listid44\listoverridecount0\ls44}{\listoverride\listid45\listoverridecount0\ls45}{\listoverride\listid46\listoverridecount0\ls46}{\listoverride\listid47\listoverridecount0\ls47}{\listoverride\listid48\listoverridecount0\ls48}{\listoverride\listid49\listoverridecount0\ls49}{\listoverride\listid50\listoverridecount0\ls50}{\listoverride\listid51\listoverridecount0\ls51}{\listoverride\listid52\listoverridecount0\ls52}{\listoverride\listid53\listoverridecount0\ls53}{\listoverride\listid54\listoverridecount0\ls54}{\listoverride\listid55\listoverridecount0\ls55}{\listoverride\listid56\listoverridecount0\ls56}{\listoverride\listid57\listoverridecount0\ls57}{\listoverride\listid58\listoverridecount0\ls58}{\listoverride\listid59\listoverridecount0\ls59}{\listoverride\listid60\listoverridecount0\ls60}{\listoverride\listid61\listoverridecount0\ls61}{\listoverride\listid62\listoverridecount0\ls62}{\listoverride\listid63\listoverridecount0\ls63}{\listoverride\listid64\listoverridecount0\ls64}{\listoverride\listid65\listoverridecount0\ls65}{\listoverride\listid66\listoverridecount0\ls66}{\listoverride\listid67\listoverridecount0\ls67}{\listoverride\listid68\listoverridecount0\ls68}{\listoverride\listid69\listoverridecount0\ls69}{\listoverride\listid70\listoverridecount0\ls70}{\listoverride\listid71\listoverridecount0\ls71}{\listoverride\listid72\listoverridecount0\ls72}{\listoverride\listid73\listoverridecount0\ls73}{\listoverride\listid74\listoverridecount0\ls74}{\listoverride\listid75\listoverridecount0\ls75}{\listoverride\listid76\listoverridecount0\ls76}{\listoverride\listid77\listoverridecount0\ls77}{\listoverride\listid78\listoverridecount0\ls78}{\listoverride\listid79\listoverridecount0\ls79}{\listoverride\listid80\listoverridecount0\ls80}{\listoverride\listid81\listoverridecount0\ls81}{\listoverride\listid82\listoverridecount0\ls82}{\listoverride\listid83\listoverridecount0\ls83}{\listoverride\listid84\listoverridecount0\ls84}{\listoverride\listid85\listoverridecount0\ls85}{\listoverride\listid86\listoverridecount0\ls86}{\listoverride\listid87\listoverridecount0\ls87}{\listoverride\listid88\listoverridecount0\ls88}{\listoverride\listid89\listoverridecount0\ls89}{\listoverride\listid90\listoverridecount0\ls90}{\listoverride\listid91\listoverridecount0\ls91}{\listoverride\listid92\listoverridecount0\ls92}} \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural \f0\fs60 \cf0 Skim Release Notes\ @@ -117,13 +118,15 @@ {\listtext \'a5 }Added an optional status bar, displaying the page number, number and pages, as well as informatino about the tool mode, if it applies.\ {\listtext \'a5 }You can now print documents from AppleScript.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural +\ls2\ilvl0\cf0 {\listtext \'a5 }Separated AppleScript support for pdfsync from the open command.\ +\pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural \f2\b\fs28 \cf0 \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \f3\i\fs26 \cf0 Bugs Fixed\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls2\ilvl0 +\ls3\ilvl0 \f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Prevent chaching of update info for updater.\ {\listtext \'a5 }Fix the default text export templates.\ {\listtext \'a5 }Allow other active application windows in front of Skim in presentation mode.\ @@ -146,7 +149,7 @@ \f3\i\fs26 \cf0 New Features\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls3\ilvl0 +\ls4\ilvl0 \f1\i0\b0\fs22 \cf0 {\listtext \'a5 }You can now hide all notes and highlights.\ {\listtext \'a5 }Remember last exported type.\ {\listtext \'a5 }Keyboard shortcut for Export.\ @@ -164,13 +167,13 @@ {\listtext \'a5 }You can now change the icon type of anchored notes from the note's window to some standard proofreader marks.\ {\listtext \'a5 }Hidden default for icon type of anchored notes (SKAnchoredNoteiconType).\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls4\ilvl0\cf0 {\listtext \'a5 }Skim now saves the file type and creator code.\ +\ls5\ilvl0\cf0 {\listtext \'a5 }Skim now saves the file type and creator code.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls5\ilvl0\cf0 {\listtext \'a5 }The reading bar is now shown on the thumbnails.\ +\ls6\ilvl0\cf0 {\listtext \'a5 }The reading bar is now shown on the thumbnails.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls6\ilvl0\cf0 {\listtext \'a5 }Add border/line properties to circle, box, text and line notes. Accessible through a new inspector panel and AppleScript.\ +\ls7\ilvl0\cf0 {\listtext \'a5 }Add border/line properties to circle, box, text and line notes. Accessible through a new inspector panel and AppleScript.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls7\ilvl0\cf0 {\listtext \'a5 }Allow setting the interior (fill) color for circles and boxes. Select the check button at the bottom of the color panel.\ +\ls8\ilvl0\cf0 {\listtext \'a5 }Allow setting the interior (fill) color for circles and boxes. Select the check button at the bottom of the color panel.\ {\listtext \'a5 }Add a TeX editor perset for LyX.\ {\listtext \'a5 }You can now reopen snapshots from a previous run.\ {\listtext \'a5 }New preferences for line styles and interior colors.\ @@ -185,7 +188,7 @@ \f3\i\fs26 \cf0 Bugs Fixed\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls8\ilvl0 +\ls9\ilvl0 \f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Use old-style check for network availability for the updater, as the newer API is not reliable for dial-up connections.\ {\listtext \'a5 }Never add a new note on a click in note tool mode, because undoing such an addition can also remove a text edit in progress.\ {\listtext \'a5 }Update the window title when the document is reloaded; the number of pages can change. \ @@ -195,7 +198,7 @@ {\listtext \'a5 }Add help about cropping pages.\ {\listtext \'a5 }Start and end points for arrow notes in AppleScript are now relative to the page, and changing them automatically changes the bounds.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls9\ilvl0\cf0 {\listtext \'a5 }The side panels in full screen mode are now hidden when you switch to another application.\ +\ls10\ilvl0\cf0 {\listtext \'a5 }The side panels in full screen mode are now hidden when you switch to another application.\ {\listtext \'a5 }Renamed "Arrow" to "Line", as it now allows more general line styles. Also change some keyboard shortcuts.\ {\listtext \'a5 }Enable Password menu item for encrypted files that are flagged as unlocked, as the latter is unreliable in PDFKit.\ {\listtext \'a5 }Fix tab-loop for PDFs with fiallable forms. Also add some help about fillable forms.\ @@ -218,7 +221,7 @@ \f3\i\fs26 \cf0 Bugs Fixed\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls10\ilvl0 +\ls11\ilvl0 \f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Fixed installation of new versions by updater.\ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural @@ -230,50 +233,50 @@ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \cf0 New Features\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls11\ilvl0 +\ls12\ilvl0 \f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Add a menu item in the Help menu to visit the web site.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls12\ilvl0\cf0 {\listtext \'a5 }Add single-character shortcuts to change the note style in note mode (t, n, c, b, h, u, s, a).\ +\ls13\ilvl0\cf0 {\listtext \'a5 }Add single-character shortcuts to change the note style in note mode (t, n, c, b, h, u, s, a).\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls13\ilvl0\cf0 {\listtext \'a5 }Fix PDFSync support to work with file names containing spaces.\ +\ls14\ilvl0\cf0 {\listtext \'a5 }Fix PDFSync support to work with file names containing spaces.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls14\ilvl0\cf0 {\listtext \'a5 }Add hidden default for activation of navigation buttons in presentation mode (SKActivatePresentationNavigationAtBottom).\ +\ls15\ilvl0\cf0 {\listtext \'a5 }Add hidden default for activation of navigation buttons in presentation mode (SKActivatePresentationNavigationAtBottom).\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls15\ilvl0\cf0 {\listtext \'a5 }Start search using the find panel at the current page when there is no selection.\ +\ls16\ilvl0\cf0 {\listtext \'a5 }Start search using the find panel at the current page when there is no selection.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls16\ilvl0\cf0 {\listtext \'a5 }Wrap selection using the find panel.\ +\ls17\ilvl0\cf0 {\listtext \'a5 }Wrap selection using the find panel.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls17\ilvl0\cf0 {\listtext \'a5 }Add support for apple remote control. It can be disabled through the hidden default SKEnableAppleRemote.\ +\ls18\ilvl0\cf0 {\listtext \'a5 }Add support for apple remote control. It can be disabled through the hidden default SKEnableAppleRemote.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls18\ilvl0\cf0 {\listtext \'a5 }Hidden defaults for line ending style of arrows (SKLineNoteStartLineStyle, SKLineNoteEndLineStyle).\ +\ls19\ilvl0\cf0 {\listtext \'a5 }Hidden defaults for line ending style of arrows (SKLineNoteStartLineStyle, SKLineNoteEndLineStyle).\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls19\ilvl0\cf0 {\listtext \'a5 }Hidden pref option for reading missing notes from separate .skim file (SKReadMissingNotesFromSkimFileOption). \ +\ls20\ilvl0\cf0 {\listtext \'a5 }Hidden pref option for reading missing notes from separate .skim file (SKReadMissingNotesFromSkimFileOption). \ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls20\ilvl0\cf0 {\listtext \'a5 }You can now open the corresponding PDF from a Skim Notes document.\ +\ls21\ilvl0\cf0 {\listtext \'a5 }You can now open the corresponding PDF from a Skim Notes document.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls21\ilvl0\cf0 {\listtext \'a5 }Skim can now read TIFF images from the clipboard.\ +\ls22\ilvl0\cf0 {\listtext \'a5 }Skim can now read TIFF images from the clipboard.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls22\ilvl0\cf0 {\listtext \'a5 }New select tool. Allows you to copy PDF and TIFF images from a section of a page.\ +\ls23\ilvl0\cf0 {\listtext \'a5 }New select tool. Allows you to copy PDF and TIFF images from a section of a page.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls23\ilvl0\cf0 {\listtext \'a5 }You can now search Skim note files from Spotlight.\ +\ls24\ilvl0\cf0 {\listtext \'a5 }You can now search Skim note files from Spotlight.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls24\ilvl0\cf0 {\listtext \'a5 }New Crop menu items and toolbar button.\ +\ls25\ilvl0\cf0 {\listtext \'a5 }New Crop menu items and toolbar button.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls25\ilvl0\cf0 {\listtext \'a5 }Cropping and page rotation are now undoable.\ +\ls26\ilvl0\cf0 {\listtext \'a5 }Cropping and page rotation are now undoable.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls26\ilvl0\cf0 {\listtext \'a5 }Allow reverting a document when it has changed on disk.\ +\ls27\ilvl0\cf0 {\listtext \'a5 }Allow reverting a document when it has changed on disk.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls27\ilvl0\cf0 {\listtext \'a5 }New menu item to set the selection from the content of the page.\ +\ls28\ilvl0\cf0 {\listtext \'a5 }New menu item to set the selection from the content of the page.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls28\ilvl0\cf0 {\listtext \'a5 }Hidden defaults for automatic crop box margins (SKAutoCropBoxMarginWidth, SKAutoCropBoxMarginHeight).\ +\ls29\ilvl0\cf0 {\listtext \'a5 }Hidden defaults for automatic crop box margins (SKAutoCropBoxMarginWidth, SKAutoCropBoxMarginHeight).\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls29\ilvl0\cf0 {\listtext \'a5 }New Zoom To Selection menu item and toolbar button.\ +\ls30\ilvl0\cf0 {\listtext \'a5 }New Zoom To Selection menu item and toolbar button.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls30\ilvl0\cf0 {\listtext \'a5 }New preference option to open files fit to the PDF.\ +\ls31\ilvl0\cf0 {\listtext \'a5 }New preference option to open files fit to the PDF.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls31\ilvl0\cf0 {\listtext \'a5 }You can now join markup highlights using shift-click, or by selecting a highlight before adding a new one.\ +\ls32\ilvl0\cf0 {\listtext \'a5 }You can now join markup highlights using shift-click, or by selecting a highlight before adding a new one.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls32\ilvl0\cf0 {\listtext \'a5 }You can now supply templates for text export of notes. See the wiki for more information.\ +\ls33\ilvl0\cf0 {\listtext \'a5 }You can now supply templates for text export of notes. See the wiki for more information.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural \f2\b\fs28 \cf0 \ @@ -281,26 +284,26 @@ \f3\i\fs26 \cf0 Bugs Fixed\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls33\ilvl0 +\ls34\ilvl0 \f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Fix links in help.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls34\ilvl0\cf0 {\listtext \'a5 }Don't create a new note in note tool mode on mousedown outside a page.\ +\ls35\ilvl0\cf0 {\listtext \'a5 }Don't create a new note in note tool mode on mousedown outside a page.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls35\ilvl0\cf0 {\listtext \'a5 }Don't add new resizable notes in note tool mode when just clicking.\ +\ls36\ilvl0\cf0 {\listtext \'a5 }Don't add new resizable notes in note tool mode when just clicking.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls36\ilvl0\cf0 {\listtext \'a5 }You can now access links that are "hidden" by transparent highlights and arrows.\ +\ls37\ilvl0\cf0 {\listtext \'a5 }You can now access links that are "hidden" by transparent highlights and arrows.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls37\ilvl0\cf0 {\listtext \'a5 }Scroll reading bar to visible when it is shown.\ +\ls38\ilvl0\cf0 {\listtext \'a5 }Scroll reading bar to visible when it is shown.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls38\ilvl0\cf0 {\listtext \'a5 }Scroll to previous position on page when reloading PDF.\ +\ls39\ilvl0\cf0 {\listtext \'a5 }Scroll to previous position on page when reloading PDF.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls39\ilvl0\cf0 {\listtext \'a5 }Escape spaces in TeX editor command.\ +\ls40\ilvl0\cf0 {\listtext \'a5 }Escape spaces in TeX editor command.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls40\ilvl0\cf0 {\listtext \'a5 }Thumbnails now use the current display box.\ +\ls41\ilvl0\cf0 {\listtext \'a5 }Thumbnails now use the current display box.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls41\ilvl0\cf0 {\listtext \'a5 }Retry automatic reloading of files changed on disk a few times.\ +\ls42\ilvl0\cf0 {\listtext \'a5 }Retry automatic reloading of files changed on disk a few times.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls41\ilvl0 +\ls42\ilvl0 \f2\b\fs28 \cf0 \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \cf0 Changes since 0.2\ @@ -310,74 +313,74 @@ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \cf0 New Features\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls42\ilvl0 +\ls43\ilvl0 \f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Add shortcuts for bigger/smaller font sizes.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls43\ilvl0\cf0 {\listtext \'a5 }Command-click a snapshot.\ +\ls44\ilvl0\cf0 {\listtext \'a5 }Command-click a snapshot.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls44\ilvl0\cf0 {\listtext \'a5 }We now print notes and highlights.\ +\ls45\ilvl0\cf0 {\listtext \'a5 }We now print notes and highlights.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls45\ilvl0\cf0 {\listtext \'a5 }Add copy/cut/paste items to the contextual menu, when they apply.\ +\ls46\ilvl0\cf0 {\listtext \'a5 }Add copy/cut/paste items to the contextual menu, when they apply.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls46\ilvl0\cf0 {\listtext \'a5 }You can now make a snapshot of a page by Command-clicking a thumbnail.\ +\ls47\ilvl0\cf0 {\listtext \'a5 }You can now make a snapshot of a page by Command-clicking a thumbnail.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls47\ilvl0\cf0 {\listtext \'a5 }Added Dutch localization.\ +\ls48\ilvl0\cf0 {\listtext \'a5 }Added Dutch localization.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls48\ilvl0\cf0 {\listtext \'a5 }We now do not leave Full Screen when switching to another application.\ +\ls49\ilvl0\cf0 {\listtext \'a5 }We now do not leave Full Screen when switching to another application.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls49\ilvl0\cf0 {\listtext \'a5 }Export notes as RTF.\ +\ls50\ilvl0\cf0 {\listtext \'a5 }Export notes as RTF.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls50\ilvl0\cf0 {\listtext \'a5 }Add preference options for default note/highlight colors and text note font.\ +\ls51\ilvl0\cf0 {\listtext \'a5 }Add preference options for default note/highlight colors and text note font.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls51\ilvl0\cf0 {\listtext \'a5 }Add menu item to save the current PDF display settings to be used for new documents.\ +\ls52\ilvl0\cf0 {\listtext \'a5 }Add menu item to save the current PDF display settings to be used for new documents.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls52\ilvl0\cf0 {\listtext \'a5 }Search results from the Find Panel are now also highlighted with a red oval.\ +\ls53\ilvl0\cf0 {\listtext \'a5 }Search results from the Find Panel are now also highlighted with a red oval.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls53\ilvl0\cf0 {\listtext \'a5 }Select search field when opening the Contents pane in full screen mode.\ +\ls54\ilvl0\cf0 {\listtext \'a5 }Select search field when opening the Contents pane in full screen mode.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls54\ilvl0\cf0 {\listtext \'a5 }You can now reset all preferences or all preferences in a pane.\ +\ls55\ilvl0\cf0 {\listtext \'a5 }You can now reset all preferences or all preferences in a pane.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls55\ilvl0\cf0 {\listtext \'a5 }Added Italian localization. (Thanks Andrea Bergia!)\ +\ls56\ilvl0\cf0 {\listtext \'a5 }Added Italian localization. (Thanks Andrea Bergia!)\ {\listtext \'a5 }Screensaver and sleep are now disabled in Presentation mode.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls56\ilvl0\cf0 {\listtext \'a5 }Skim can now return to the last page viewed in a document.\ +\ls57\ilvl0\cf0 {\listtext \'a5 }Skim can now return to the last page viewed in a document.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls57\ilvl0\cf0 {\listtext \'a5 }Link tool tips now show the top of the text when the link refers to the (empty) top of a page. \ +\ls58\ilvl0\cf0 {\listtext \'a5 }Link tool tips now show the top of the text when the link refers to the (empty) top of a page. \ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls58\ilvl0\cf0 {\listtext \'a5 }Skim can now also view separate Skim notes (.skim) files.\ +\ls59\ilvl0\cf0 {\listtext \'a5 }Skim can now also view separate Skim notes (.skim) files.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls59\ilvl0\cf0 {\listtext \'a5 }Using Sparkle for automatic updating. (Thanks Andy Matuschak!)\ +\ls60\ilvl0\cf0 {\listtext \'a5 }Using Sparkle for automatic updating. (Thanks Andy Matuschak!)\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls60\ilvl0\cf0 {\listtext \'a5 }Display the number of pages in the title bar.\ +\ls61\ilvl0\cf0 {\listtext \'a5 }Display the number of pages in the title bar.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls61\ilvl0\cf0 {\listtext \'a5 }Skim can now automatically backup a skim notes file whenever it saves a PDF file.\ +\ls62\ilvl0\cf0 {\listtext \'a5 }Skim can now automatically backup a skim notes file whenever it saves a PDF file.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls62\ilvl0\cf0 {\listtext \'a5 }You can now resize the current note using the arrow keys, when you hold down the Control key.\ +\ls63\ilvl0\cf0 {\listtext \'a5 }You can now resize the current note using the arrow keys, when you hold down the Control key.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls63\ilvl0\cf0 {\listtext \'a5 }Notes are now ordered according to page and location in page.\ +\ls64\ilvl0\cf0 {\listtext \'a5 }Notes are now ordered according to page and location in page.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls64\ilvl0\cf0 {\listtext \'a5 }Several improvements of Skim's custom tool-tips.\ +\ls65\ilvl0\cf0 {\listtext \'a5 }Several improvements of Skim's custom tool-tips.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls65\ilvl0\cf0 {\listtext \'a5 }Add a menu item to select the search field.\ +\ls66\ilvl0\cf0 {\listtext \'a5 }Add a menu item to select the search field.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls66\ilvl0\cf0 {\listtext \'a5 }You can now add arrows to a PDF document.\ +\ls67\ilvl0\cf0 {\listtext \'a5 }You can now add arrows to a PDF document.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls67\ilvl0\cf0 {\listtext \'a5 }You can now add notes from external .skim files rather than just overwriting them.\ +\ls68\ilvl0\cf0 {\listtext \'a5 }You can now add notes from external .skim files rather than just overwriting them.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls68\ilvl0\cf0 {\listtext \'a5 }PDFSync support. See the Wiki for more information.\ +\ls69\ilvl0\cf0 {\listtext \'a5 }PDFSync support. See the Wiki for more information.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls69\ilvl0\cf0 {\listtext \'a5 }You can now set transparent colors from the color panel. \ +\ls70\ilvl0\cf0 {\listtext \'a5 }You can now set transparent colors from the color panel. \ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls70\ilvl0\cf0 {\listtext \'a5 }You can now set separate PDF view settings for full screen mode. \ +\ls71\ilvl0\cf0 {\listtext \'a5 }You can now set separate PDF view settings for full screen mode. \ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls71\ilvl0\cf0 {\listtext \'a5 }Add a Look Up in Dictionary item to the contextual menu.\ +\ls72\ilvl0\cf0 {\listtext \'a5 }Add a Look Up in Dictionary item to the contextual menu.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls72\ilvl0\cf0 {\listtext \'a5 }You can now undo edits of notes and highlights.\ +\ls73\ilvl0\cf0 {\listtext \'a5 }You can now undo edits of notes and highlights.\ {\listtext \'a5 }Add a hidden preference (SKActivateFullScreenNavigationAtBottom) to show the navigation buttons in full screen mode only when moving the mouse at the bottom of the screen. \ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls73\ilvl0\cf0 {\listtext \'a5 }Add hidden preferences for the line widths of circles and boxes (SKCircleNoteLineWidth and SKSquareNoteLineWidth).\ +\ls74\ilvl0\cf0 {\listtext \'a5 }Add hidden preferences for the line widths of circles and boxes (SKCircleNoteLineWidth and SKSquareNoteLineWidth).\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls74\ilvl0\cf0 {\listtext \'a5 }New tool modes for ading notes or highlights.\ +\ls75\ilvl0\cf0 {\listtext \'a5 }New tool modes for ading notes or highlights.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural \f2\b\fs28 \cf0 \ @@ -385,40 +388,40 @@ \f3\i\fs26 \cf0 Bugs Fixed\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls75\ilvl0 +\ls76\ilvl0 \f1\i0\b0\fs22 \cf0 {\listtext \'a5 }We now don't edit new text notes, so they can be moved, resized or deleted.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls76\ilvl0\cf0 {\listtext \'a5 }We now make sure new notes are added to a visible page.\ +\ls77\ilvl0\cf0 {\listtext \'a5 }We now make sure new notes are added to a visible page.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls77\ilvl0\cf0 {\listtext \'a5 }Disable the TOC menu item when there is no TOC.\ +\ls78\ilvl0\cf0 {\listtext \'a5 }Disable the TOC menu item when there is no TOC.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls78\ilvl0\cf0 {\listtext \'a5 }Return to the location that was viewed when reloading a document.\ +\ls79\ilvl0\cf0 {\listtext \'a5 }Return to the location that was viewed when reloading a document.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls79\ilvl0\cf0 {\listtext \'a5 }Search text in a PDf file asynchronously, so it does not block Skim.\ +\ls80\ilvl0\cf0 {\listtext \'a5 }Search text in a PDf file asynchronously, so it does not block Skim.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls80\ilvl0\cf0 {\listtext \'a5 }Fix crashes that can appear for links with missing URLs.\ +\ls81\ilvl0\cf0 {\listtext \'a5 }Fix crashes that can appear for links with missing URLs.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls81\ilvl0\cf0 {\listtext \'a5 }Add separators in the Notes menu for categories.\ +\ls82\ilvl0\cf0 {\listtext \'a5 }Add separators in the Notes menu for categories.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls82\ilvl0\cf0 {\listtext \'a5 }Fix a crasher when reverting a PDF-document.\ +\ls83\ilvl0\cf0 {\listtext \'a5 }Fix a crasher when reverting a PDF-document.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls83\ilvl0\cf0 {\listtext \'a5 }Fix typos in the Help and update for new features.\ +\ls84\ilvl0\cf0 {\listtext \'a5 }Fix typos in the Help and update for new features.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls84\ilvl0\cf0 {\listtext \'a5 }Fix a crasher when reverting the document. Unfortunately this disabled tool tips.\ +\ls85\ilvl0\cf0 {\listtext \'a5 }Fix a crasher when reverting the document. Unfortunately this disabled tool tips.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls85\ilvl0\cf0 {\listtext \'a5 }Open the contents pane to display the search term when opening from Spotlight.\ +\ls86\ilvl0\cf0 {\listtext \'a5 }Open the contents pane to display the search term when opening from Spotlight.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls86\ilvl0\cf0 {\listtext \'a5 }Save notes when auto-saving and exporting as PDF.\ +\ls87\ilvl0\cf0 {\listtext \'a5 }Save notes when auto-saving and exporting as PDF.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls87\ilvl0\cf0 {\listtext \'a5 }Remember the width of notes pane.\ +\ls88\ilvl0\cf0 {\listtext \'a5 }Remember the width of notes pane.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls88\ilvl0\cf0 {\listtext \'a5 }Fix leaks leading to excessive memory use.\ +\ls89\ilvl0\cf0 {\listtext \'a5 }Fix leaks leading to excessive memory use.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls89\ilvl0\cf0 {\listtext \'a5 }Fix back-tabbing through notes and links.\ +\ls90\ilvl0\cf0 {\listtext \'a5 }Fix back-tabbing through notes and links.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls90\ilvl0\cf0 {\listtext \'a5 }Zooming using the scroll-wheel now only affects the current window.\ +\ls91\ilvl0\cf0 {\listtext \'a5 }Zooming using the scroll-wheel now only affects the current window.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls91\ilvl0\cf0 {\listtext \'a5 }Lazy updating of page thumbnails to avoid slowdown when opening a file.\ +\ls92\ilvl0\cf0 {\listtext \'a5 }Lazy updating of page thumbnails to avoid slowdown when opening a file.\ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \f2\b\fs28 \cf0 \ Modified: trunk/SKApplicationController.h =================================================================== --- trunk/SKApplicationController.h 2007-07-11 15:52:57 UTC (rev 2478) +++ trunk/SKApplicationController.h 2007-07-11 17:02:23 UTC (rev 2479) @@ -38,7 +38,7 @@ #import <Cocoa/Cocoa.h> -@class SUUpdater; +@class SUUpdater, SKLine; @interface SKApplicationController : NSObject { BOOL remoteScrolling; @@ -69,6 +69,8 @@ - (void)setFullScreenBackgroundColor:(NSColor *)color; - (NSDictionary *)defaultNoteColors; - (void)setDefaultNoteColors:(NSDictionary *)colorDict; +- (unsigned int)countOfLines; +- (SKLine *)objectInLinesAtIndex:(unsigned int)index; @end Modified: trunk/SKApplicationController.m =================================================================== --- trunk/SKApplicationController.m 2007-07-11 15:52:57 UTC (rev 2478) +++ trunk/SKApplicationController.m 2007-07-11 17:02:23 UTC (rev 2479) @@ -50,6 +50,7 @@ #import <Sparkle/Sparkle.h> #import "AppleRemote.h" #import "NSBezierPath_BDSKExtensions.h" +#import "SKLine.h" @implementation SKApplicationController @@ -422,7 +423,7 @@ static NSSet *applicationScriptingKeys = nil; if (applicationScriptingKeys == nil) applicationScriptingKeys = [[NSSet alloc] initWithObjects:@"defaultPdfViewSettings", @"defaultFullScreenPdfViewSettings", @"backgroundColor", @"fullScreenBackgroundColor", - @"defaultNoteColors",nil]; + @"defaultNoteColors", @"lines", nil]; return [applicationScriptingKeys containsObject:key]; } @@ -511,6 +512,14 @@ [sud setObject:[NSArchiver archivedDataWithRootObject:color] forKey:SKSquareNoteInteriorColorKey]; } +- (unsigned int)countOfLines { + return 0; +} + +- (SKLine *)objectInLinesAtIndex:(unsigned int)index { + return [[[SKLine alloc] initWithContainer:nil line:index] autorelease]; +} + @end #pragma mark - Modified: trunk/SKDocument.h =================================================================== --- trunk/SKDocument.h 2007-07-11 15:52:57 UTC (rev 2478) +++ trunk/SKDocument.h 2007-07-11 17:02:23 UTC (rev 2479) @@ -55,7 +55,7 @@ }; -@class PDFDocument, SKMainWindowController, SKPDFView, SKPDFSynchronizer; +@class PDFDocument, SKMainWindowController, SKPDFView, SKPDFSynchronizer, SKLine; @interface SKDocument : NSDocument { @@ -104,6 +104,8 @@ - (void)insertInNotes:(id)newNote; - (void)insertInNotes:(id)newNote atIndex:(unsigned int)index; - (void)removeFromNotesAtIndex:(unsigned int)index; +- (unsigned int)countOfLines; +- (SKLine *)objectInLinesAtIndex:(unsigned int)index; - (PDFPage *)currentPage; - (void)setCurrentPage:(PDFPage *)page; - (id)activeNote; @@ -128,12 +130,3 @@ - (NSDictionary *)AppleScriptPDFViewSettingsFromPDFViewSettings; - (NSDictionary *)PDFViewSettingsFromAppleScriptPDFViewSettings; @end - - -@interface SKLine : NSObject { - id container; - int line; -} -- (id)initWithContainer:(id)aContainer line:(int)aLine; -- (int)line; -@end Modified: trunk/SKDocument.m =================================================================== --- trunk/SKDocument.m 2007-07-11 15:52:57 UTC (rev 2478) +++ trunk/SKDocument.m 2007-07-11 17:02:23 UTC (rev 2479) @@ -56,6 +56,7 @@ #import "UKKQueue.h" #import "PDFSelection_SKExtensions.h" #import "SKInfoWindowController.h" +#import "SKLine.h" // maximum length of xattr value recommended by Apple #define MAX_XATTR_LENGTH 2048 @@ -1271,26 +1272,3 @@ } @end - -#pragma mark - - -@implementation SKLine - -- (id)initWithContainer:(id)aContainer line:(int)aLine { - if (self = [super init]) { - container = aContainer; - line = aLine; - } - return self; -} - -- (NSScriptObjectSpecifier *)objectSpecifier { - NSScriptObjectSpecifier *containerRef = [container objectSpecifier]; - return [[[NSIndexSpecifier allocWithZone:[self zone]] initWithContainerClassDescription:[containerRef keyClassDescription] containerSpecifier:containerRef key:@"lines" index:line] autorelease]; -} - -- (int)line { - return line; -} - -@end Modified: trunk/Skim.sdef =================================================================== --- trunk/Skim.sdef 2007-07-11 15:52:57 UTC (rev 2478) +++ trunk/Skim.sdef 2007-07-11 17:02:23 UTC (rev 2479) @@ -18,6 +18,10 @@ <element type="window" access="r"> <cocoa key="orderedWindows"/> </element> + <element type="TeX line" access="r" hidden="yes" + description="Lines in a TeX source file."> + <cocoa key="lines"/> + </element> <property name="name" code="pnam" type="text" access="r" description="The name of the application."/> <property name="frontmost" code="pisf" type="boolean" access="r" Modified: trunk/Skim.xcodeproj/project.pbxproj =================================================================== --- trunk/Skim.xcodeproj/project.pbxproj 2007-07-11 15:52:57 UTC (rev 2478) +++ trunk/Skim.xcodeproj/project.pbxproj 2007-07-11 17:02:23 UTC (rev 2479) @@ -166,6 +166,7 @@ CEA575E50B9207B80003D2E7 /* SKThumbnailTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA575E40B9207B80003D2E7 /* SKThumbnailTableView.m */; }; CEA575FD0B9208B60003D2E7 /* SKOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA575FC0B9208B60003D2E7 /* SKOutlineView.m */; }; CEAF079D0C4139EB00C3ECBB /* SKStatusBar.m in Sources */ = {isa = PBXBuildFile; fileRef = CEAF079B0C4139EB00C3ECBB /* SKStatusBar.m */; }; + CEAF2E5A0C45414100C3ECBB /* SKLine.m in Sources */ = {isa = PBXBuildFile; fileRef = CEAF2E580C45414100C3ECBB /* SKLine.m */; }; CEAFFD7C0C40ED5400C3ECBB /* ToolbarColors.tiff in Resources */ = {isa = PBXBuildFile; fileRef = CEAFFD7A0C40ED5400C3ECBB /* ToolbarColors.tiff */; }; CEAFFD7D0C40ED5400C3ECBB /* ToolbarFonts.tiff in Resources */ = {isa = PBXBuildFile; fileRef = CEAFFD7B0C40ED5400C3ECBB /* ToolbarFonts.tiff */; }; CEAFFD9D0C40F2A800C3ECBB /* ToolbarLines.tiff in Resources */ = {isa = PBXBuildFile; fileRef = CEAFFD9C0C40F2A800C3ECBB /* ToolbarLines.tiff */; }; @@ -535,6 +536,8 @@ CEA575FC0B9208B60003D2E7 /* SKOutlineView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SKOutlineView.m; sourceTree = "<group>"; }; CEAF079A0C4139EB00C3ECBB /* SKStatusBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SKStatusBar.h; sourceTree = "<group>"; }; CEAF079B0C4139EB00C3ECBB /* SKStatusBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SKStatusBar.m; sourceTree = "<group>"; }; + CEAF2E570C45414100C3ECBB /* SKLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SKLine.h; sourceTree = "<group>"; }; + CEAF2E580C45414100C3ECBB /* SKLine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SKLine.m; sourceTree = "<group>"; }; CEAFFD7A0C40ED5400C3ECBB /* ToolbarColors.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = ToolbarColors.tiff; path = Images/ToolbarColors.tiff; sourceTree = "<group>"; }; CEAFFD7B0C40ED5400C3ECBB /* ToolbarFonts.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = ToolbarFonts.tiff; path = Images/ToolbarFonts.tiff; sourceTree = "<group>"; }; CEAFFD9C0C40F2A800C3ECBB /* ToolbarLines.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = ToolbarLines.tiff; path = Images/ToolbarLines.tiff; sourceTree = "<group>"; }; @@ -900,6 +903,8 @@ children = ( CE3A3D2A0B78C0A0006B64D3 /* SKPDFAnnotationNote.h */, CE3A3D2B0B78C0A0006B64D3 /* SKPDFAnnotationNote.m */, + CEAF2E570C45414100C3ECBB /* SKLine.h */, + CEAF2E580C45414100C3ECBB /* SKLine.m */, CE4294A10BBD29120016FDC2 /* SKReadingBar.h */, CE4294A20BBD29120016FDC2 /* SKReadingBar.m */, CE2DE4900B85D48F00D0DA12 /* SKThumbnail.h */, @@ -1387,6 +1392,7 @@ CE4BC1300C357A0300C2AF03 /* SKLineWell.m in Sources */, CE4D97FD0C3C2BFF002C20CB /* SKColorSwatch.m in Sources */, CEAF079D0C4139EB00C3ECBB /* SKStatusBar.m in Sources */, + CEAF2E5A0C45414100C3ECBB /* SKLine.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-11 15:53:00
|
Revision: 2478 http://skim-app.svn.sourceforge.net/skim-app/?rev=2478&view=rev Author: hofman Date: 2007-07-11 08:52:57 -0700 (Wed, 11 Jul 2007) Log Message: ----------- Implement PDFSync in AppleScript through the 'go' command. Deprecate the separate pdfsync arguments for the open command, but don't disable it yet. Modified Paths: -------------- trunk/ReleaseNotes.rtf trunk/SKDocument.h trunk/SKDocument.m trunk/Skim.sdef trunk/displayline Modified: trunk/ReleaseNotes.rtf =================================================================== --- trunk/ReleaseNotes.rtf 2007-07-11 14:48:38 UTC (rev 2477) +++ trunk/ReleaseNotes.rtf 2007-07-11 15:52:57 UTC (rev 2478) @@ -90,8 +90,10 @@ {\list\listtemplateid86\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid86} {\list\listtemplateid87\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid87} {\list\listtemplateid88\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid88} -{\list\listtemplateid89\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid89}} -{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}{\listoverride\listid5\listoverridecount0\ls5}{\listoverride\listid6\listoverridecount0\ls6}{\listoverride\listid7\listoverridecount0\ls7}{\listoverride\listid8\listoverridecount0\ls8}{\listoverride\listid9\listoverridecount0\ls9}{\listoverride\listid10\listoverridecount0\ls10}{\listoverride\listid11\listoverridecount0\ls11}{\listoverride\listid12\listoverridecount0\ls12}{\listoverride\listid13\listoverridecount0\ls13}{\listoverride\listid14\listoverridecount0\ls14}{\listoverride\listid15\listoverridecount0\ls15}{\listoverride\listid16\listoverridecount0\ls16}{\listoverride\listid17\listoverridecount0\ls17}{\listoverride\listid18\listoverridecount0\ls18}{\listoverride\listid19\listoverridecount0\ls19}{\listoverride\listid20\listoverridecount0\ls20}{\listoverride\listid21\listoverridecount0\ls21}{\listoverride\listid22\listoverridecount0\ls22}{\listoverride\listid23\listoverridecount0\ls23}{\listoverride\listid24\listoverridecount0\ls24}{\listoverride\listid25\listoverridecount0\ls25}{\listoverride\listid26\listoverridecount0\ls26}{\listoverride\listid27\listoverridecount0\ls27}{\listoverride\listid28\listoverridecount0\ls28}{\listoverride\listid29\listoverridecount0\ls29}{\listoverride\listid30\listoverridecount0\ls30}{\listoverride\listid31\listoverridecount0\ls31}{\listoverride\listid32\listoverridecount0\ls32}{\listoverride\listid33\listoverridecount0\ls33}{\listoverride\listid34\listoverridecount0\ls34}{\listoverride\listid35\listoverridecount0\ls35}{\listoverride\listid36\listoverridecount0\ls36}{\listoverride\listid37\listoverridecount0\ls37}{\listoverride\listid38\listoverridecount0\ls38}{\listoverride\listid39\listoverridecount0\ls39}{\listoverride\listid40\listoverridecount0\ls40}{\listoverride\listid41\listoverridecount0\ls41}{\listoverride\listid42\listoverridecount0\ls42}{\listoverride\listid43\listoverridecount0\ls43}{\listoverride\listid44\listoverridecount0\ls44}{\listoverride\listid45\listoverridecount0\ls45}{\listoverride\listid46\listoverridecount0\ls46}{\listoverride\listid47\listoverridecount0\ls47}{\listoverride\listid48\listoverridecount0\ls48}{\listoverride\listid49\listoverridecount0\ls49}{\listoverride\listid50\listoverridecount0\ls50}{\listoverride\listid51\listoverridecount0\ls51}{\listoverride\listid52\listoverridecount0\ls52}{\listoverride\listid53\listoverridecount0\ls53}{\listoverride\listid54\listoverridecount0\ls54}{\listoverride\listid55\listoverridecount0\ls55}{\listoverride\listid56\listoverridecount0\ls56}{\listoverride\listid57\listoverridecount0\ls57}{\listoverride\listid58\listoverridecount0\ls58}{\listoverride\listid59\listoverridecount0\ls59}{\listoverride\listid60\listoverridecount0\ls60}{\listoverride\listid61\listoverridecount0\ls61}{\listoverride\listid62\listoverridecount0\ls62}{\listoverride\listid63\listoverridecount0\ls63}{\listoverride\listid64\listoverridecount0\ls64}{\listoverride\listid65\listoverridecount0\ls65}{\listoverride\listid66\listoverridecount0\ls66}{\listoverride\listid67\listoverridecount0\ls67}{\listoverride\listid68\listoverridecount0\ls68}{\listoverride\listid69\listoverridecount0\ls69}{\listoverride\listid70\listoverridecount0\ls70}{\listoverride\listid71\listoverridecount0\ls71}{\listoverride\listid72\listoverridecount0\ls72}{\listoverride\listid73\listoverridecount0\ls73}{\listoverride\listid74\listoverridecount0\ls74}{\listoverride\listid75\listoverridecount0\ls75}{\listoverride\listid76\listoverridecount0\ls76}{\listoverride\listid77\listoverridecount0\ls77}{\listoverride\listid78\listoverridecount0\ls78}{\listoverride\listid79\listoverridecount0\ls79}{\listoverride\listid80\listoverridecount0\ls80}{\listoverride\listid81\listoverridecount0\ls81}{\listoverride\listid82\listoverridecount0\ls82}{\listoverride\listid83\listoverridecount0\ls83}{\listoverride\listid84\listoverridecount0\ls84}{\listoverride\listid85\listoverridecount0\ls85}{\listoverride\listid86\listoverridecount0\ls86}{\listoverride\listid87\listoverridecount0\ls87}{\listoverride\listid88\listoverridecount0\ls88}{\listoverride\listid89\listoverridecount0\ls89}} +{\list\listtemplateid89\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid89} +{\list\listtemplateid90\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid90} +{\list\listtemplateid91\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid91}} +{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}{\listoverride\listid5\listoverridecount0\ls5}{\listoverride\listid6\listoverridecount0\ls6}{\listoverride\listid7\listoverridecount0\ls7}{\listoverride\listid8\listoverridecount0\ls8}{\listoverride\listid9\listoverridecount0\ls9}{\listoverride\listid10\listoverridecount0\ls10}{\listoverride\listid11\listoverridecount0\ls11}{\listoverride\listid12\listoverridecount0\ls12}{\listoverride\listid13\listoverridecount0\ls13}{\listoverride\listid14\listoverridecount0\ls14}{\listoverride\listid15\listoverridecount0\ls15}{\listoverride\listid16\listoverridecount0\ls16}{\listoverride\listid17\listoverridecount0\ls17}{\listoverride\listid18\listoverridecount0\ls18}{\listoverride\listid19\listoverridecount0\ls19}{\listoverride\listid20\listoverridecount0\ls20}{\listoverride\listid21\listoverridecount0\ls21}{\listoverride\listid22\listoverridecount0\ls22}{\listoverride\listid23\listoverridecount0\ls23}{\listoverride\listid24\listoverridecount0\ls24}{\listoverride\listid25\listoverridecount0\ls25}{\listoverride\listid26\listoverridecount0\ls26}{\listoverride\listid27\listoverridecount0\ls27}{\listoverride\listid28\listoverridecount0\ls28}{\listoverride\listid29\listoverridecount0\ls29}{\listoverride\listid30\listoverridecount0\ls30}{\listoverride\listid31\listoverridecount0\ls31}{\listoverride\listid32\listoverridecount0\ls32}{\listoverride\listid33\listoverridecount0\ls33}{\listoverride\listid34\listoverridecount0\ls34}{\listoverride\listid35\listoverridecount0\ls35}{\listoverride\listid36\listoverridecount0\ls36}{\listoverride\listid37\listoverridecount0\ls37}{\listoverride\listid38\listoverridecount0\ls38}{\listoverride\listid39\listoverridecount0\ls39}{\listoverride\listid40\listoverridecount0\ls40}{\listoverride\listid41\listoverridecount0\ls41}{\listoverride\listid42\listoverridecount0\ls42}{\listoverride\listid43\listoverridecount0\ls43}{\listoverride\listid44\listoverridecount0\ls44}{\listoverride\listid45\listoverridecount0\ls45}{\listoverride\listid46\listoverridecount0\ls46}{\listoverride\listid47\listoverridecount0\ls47}{\listoverride\listid48\listoverridecount0\ls48}{\listoverride\listid49\listoverridecount0\ls49}{\listoverride\listid50\listoverridecount0\ls50}{\listoverride\listid51\listoverridecount0\ls51}{\listoverride\listid52\listoverridecount0\ls52}{\listoverride\listid53\listoverridecount0\ls53}{\listoverride\listid54\listoverridecount0\ls54}{\listoverride\listid55\listoverridecount0\ls55}{\listoverride\listid56\listoverridecount0\ls56}{\listoverride\listid57\listoverridecount0\ls57}{\listoverride\listid58\listoverridecount0\ls58}{\listoverride\listid59\listoverridecount0\ls59}{\listoverride\listid60\listoverridecount0\ls60}{\listoverride\listid61\listoverridecount0\ls61}{\listoverride\listid62\listoverridecount0\ls62}{\listoverride\listid63\listoverridecount0\ls63}{\listoverride\listid64\listoverridecount0\ls64}{\listoverride\listid65\listoverridecount0\ls65}{\listoverride\listid66\listoverridecount0\ls66}{\listoverride\listid67\listoverridecount0\ls67}{\listoverride\listid68\listoverridecount0\ls68}{\listoverride\listid69\listoverridecount0\ls69}{\listoverride\listid70\listoverridecount0\ls70}{\listoverride\listid71\listoverridecount0\ls71}{\listoverride\listid72\listoverridecount0\ls72}{\listoverride\listid73\listoverridecount0\ls73}{\listoverride\listid74\listoverridecount0\ls74}{\listoverride\listid75\listoverridecount0\ls75}{\listoverride\listid76\listoverridecount0\ls76}{\listoverride\listid77\listoverridecount0\ls77}{\listoverride\listid78\listoverridecount0\ls78}{\listoverride\listid79\listoverridecount0\ls79}{\listoverride\listid80\listoverridecount0\ls80}{\listoverride\listid81\listoverridecount0\ls81}{\listoverride\listid82\listoverridecount0\ls82}{\listoverride\listid83\listoverridecount0\ls83}{\listoverride\listid84\listoverridecount0\ls84}{\listoverride\listid85\listoverridecount0\ls85}{\listoverride\listid86\listoverridecount0\ls86}{\listoverride\listid87\listoverridecount0\ls87}{\listoverride\listid88\listoverridecount0\ls88}{\listoverride\listid89\listoverridecount0\ls89}{\listoverride\listid90\listoverridecount0\ls90}{\listoverride\listid91\listoverridecount0\ls91}} \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural \f0\fs60 \cf0 Skim Release Notes\ @@ -100,7 +102,7 @@ \f1\fs22 \cf0 \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f2\b\fs28 \cf0 Changes since 0.4.1\ +\f2\b\fs28 \cf0 Changes since 0.5\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural \cf0 \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural @@ -108,6 +110,43 @@ \f3\i\fs26 \cf0 New Features\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural \ls1\ilvl0 +\f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Added some more sorting keys for use in text export templates.\ +{\listtext \'a5 }Reorganized document info window, with some new properties.\ +{\listtext \'a5 }You can now navigate through a presentation using mouse clicks.\ +{\listtext \'a5 }New toolbar items to open color, font, and line panels.\ +{\listtext \'a5 }Added an optional status bar, displaying the page number, number and pages, as well as informatino about the tool mode, if it applies.\ +{\listtext \'a5 }You can now print documents from AppleScript.\ +\pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural + +\f2\b\fs28 \cf0 \ +\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural + +\f3\i\fs26 \cf0 Bugs Fixed\ +\pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural +\ls2\ilvl0 +\f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Prevent chaching of update info for updater.\ +{\listtext \'a5 }Fix the default text export templates.\ +{\listtext \'a5 }Allow other active application windows in front of Skim in presentation mode.\ +{\listtext \'a5 }Show the keywords in the document info window.\ +{\listtext \'a5 }Fix notification of file changes on disk.\ +{\listtext \'a5 }Fix a crasher that occured when reverting a document containing notes.\ +{\listtext \'a5 }Prevent setting negative sizes from AppleScript.\ +{\listtext \'a5 }Skim can now find text export templates also in the local or network domain.\ +{\listtext \'a5 }Move Skim windows to the background when switching to another application in full screen or presentation mode.\ +{\listtext \'a5 }Hitting tab while editing a text note now end the edit. This fixes text noite editing in PDFs with fillable forms.\ +{\listtext \'a5 }Make sure the document's print settings are used for printing.\ +{\listtext \'a5 }Fix full screen window layout when the full screen window moves to another screen.\ +\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural + +\f2\b\fs28 \cf0 \ +Changes since 0.4.1\ +\pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural +\cf0 \ +\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural + +\f3\i\fs26 \cf0 New Features\ +\pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural +\ls3\ilvl0 \f1\i0\b0\fs22 \cf0 {\listtext \'a5 }You can now hide all notes and highlights.\ {\listtext \'a5 }Remember last exported type.\ {\listtext \'a5 }Keyboard shortcut for Export.\ @@ -125,13 +164,13 @@ {\listtext \'a5 }You can now change the icon type of anchored notes from the note's window to some standard proofreader marks.\ {\listtext \'a5 }Hidden default for icon type of anchored notes (SKAnchoredNoteiconType).\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls2\ilvl0\cf0 {\listtext \'a5 }Skim now saves the file type and creator code.\ +\ls4\ilvl0\cf0 {\listtext \'a5 }Skim now saves the file type and creator code.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls3\ilvl0\cf0 {\listtext \'a5 }The reading bar is now shown on the thumbnails.\ +\ls5\ilvl0\cf0 {\listtext \'a5 }The reading bar is now shown on the thumbnails.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls4\ilvl0\cf0 {\listtext \'a5 }Add border/line properties to circle, box, text and line notes. Accessible through a new inspector panel and AppleScript.\ +\ls6\ilvl0\cf0 {\listtext \'a5 }Add border/line properties to circle, box, text and line notes. Accessible through a new inspector panel and AppleScript.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls5\ilvl0\cf0 {\listtext \'a5 }Allow setting the interior (fill) color for circles and boxes. Select the check button at the bottom of the color panel.\ +\ls7\ilvl0\cf0 {\listtext \'a5 }Allow setting the interior (fill) color for circles and boxes. Select the check button at the bottom of the color panel.\ {\listtext \'a5 }Add a TeX editor perset for LyX.\ {\listtext \'a5 }You can now reopen snapshots from a previous run.\ {\listtext \'a5 }New preferences for line styles and interior colors.\ @@ -146,7 +185,7 @@ \f3\i\fs26 \cf0 Bugs Fixed\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls6\ilvl0 +\ls8\ilvl0 \f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Use old-style check for network availability for the updater, as the newer API is not reliable for dial-up connections.\ {\listtext \'a5 }Never add a new note on a click in note tool mode, because undoing such an addition can also remove a text edit in progress.\ {\listtext \'a5 }Update the window title when the document is reloaded; the number of pages can change. \ @@ -156,7 +195,7 @@ {\listtext \'a5 }Add help about cropping pages.\ {\listtext \'a5 }Start and end points for arrow notes in AppleScript are now relative to the page, and changing them automatically changes the bounds.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls7\ilvl0\cf0 {\listtext \'a5 }The side panels in full screen mode are now hidden when you switch to another application.\ +\ls9\ilvl0\cf0 {\listtext \'a5 }The side panels in full screen mode are now hidden when you switch to another application.\ {\listtext \'a5 }Renamed "Arrow" to "Line", as it now allows more general line styles. Also change some keyboard shortcuts.\ {\listtext \'a5 }Enable Password menu item for encrypted files that are flagged as unlocked, as the latter is unreliable in PDFKit.\ {\listtext \'a5 }Fix tab-loop for PDFs with fiallable forms. Also add some help about fillable forms.\ @@ -179,7 +218,7 @@ \f3\i\fs26 \cf0 Bugs Fixed\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls8\ilvl0 +\ls10\ilvl0 \f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Fixed installation of new versions by updater.\ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural @@ -191,50 +230,50 @@ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \cf0 New Features\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls9\ilvl0 +\ls11\ilvl0 \f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Add a menu item in the Help menu to visit the web site.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls10\ilvl0\cf0 {\listtext \'a5 }Add single-character shortcuts to change the note style in note mode (t, n, c, b, h, u, s, a).\ +\ls12\ilvl0\cf0 {\listtext \'a5 }Add single-character shortcuts to change the note style in note mode (t, n, c, b, h, u, s, a).\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls11\ilvl0\cf0 {\listtext \'a5 }Fix PDFSync support to work with file names containing spaces.\ +\ls13\ilvl0\cf0 {\listtext \'a5 }Fix PDFSync support to work with file names containing spaces.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls12\ilvl0\cf0 {\listtext \'a5 }Add hidden default for activation of navigation buttons in presentation mode (SKActivatePresentationNavigationAtBottom).\ +\ls14\ilvl0\cf0 {\listtext \'a5 }Add hidden default for activation of navigation buttons in presentation mode (SKActivatePresentationNavigationAtBottom).\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls13\ilvl0\cf0 {\listtext \'a5 }Start search using the find panel at the current page when there is no selection.\ +\ls15\ilvl0\cf0 {\listtext \'a5 }Start search using the find panel at the current page when there is no selection.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls14\ilvl0\cf0 {\listtext \'a5 }Wrap selection using the find panel.\ +\ls16\ilvl0\cf0 {\listtext \'a5 }Wrap selection using the find panel.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls15\ilvl0\cf0 {\listtext \'a5 }Add support for apple remote control. It can be disabled through the hidden default SKEnableAppleRemote.\ +\ls17\ilvl0\cf0 {\listtext \'a5 }Add support for apple remote control. It can be disabled through the hidden default SKEnableAppleRemote.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls16\ilvl0\cf0 {\listtext \'a5 }Hidden defaults for line ending style of arrows (SKLineNoteStartLineStyle, SKLineNoteEndLineStyle).\ +\ls18\ilvl0\cf0 {\listtext \'a5 }Hidden defaults for line ending style of arrows (SKLineNoteStartLineStyle, SKLineNoteEndLineStyle).\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls17\ilvl0\cf0 {\listtext \'a5 }Hidden pref option for reading missing notes from separate .skim file (SKReadMissingNotesFromSkimFileOption). \ +\ls19\ilvl0\cf0 {\listtext \'a5 }Hidden pref option for reading missing notes from separate .skim file (SKReadMissingNotesFromSkimFileOption). \ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls18\ilvl0\cf0 {\listtext \'a5 }You can now open the corresponding PDF from a Skim Notes document.\ +\ls20\ilvl0\cf0 {\listtext \'a5 }You can now open the corresponding PDF from a Skim Notes document.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls19\ilvl0\cf0 {\listtext \'a5 }Skim can now read TIFF images from the clipboard.\ +\ls21\ilvl0\cf0 {\listtext \'a5 }Skim can now read TIFF images from the clipboard.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls20\ilvl0\cf0 {\listtext \'a5 }New select tool. Allows you to copy PDF and TIFF images from a section of a page.\ +\ls22\ilvl0\cf0 {\listtext \'a5 }New select tool. Allows you to copy PDF and TIFF images from a section of a page.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls21\ilvl0\cf0 {\listtext \'a5 }You can now search Skim note files from Spotlight.\ +\ls23\ilvl0\cf0 {\listtext \'a5 }You can now search Skim note files from Spotlight.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls22\ilvl0\cf0 {\listtext \'a5 }New Crop menu items and toolbar button.\ +\ls24\ilvl0\cf0 {\listtext \'a5 }New Crop menu items and toolbar button.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls23\ilvl0\cf0 {\listtext \'a5 }Cropping and page rotation are now undoable.\ +\ls25\ilvl0\cf0 {\listtext \'a5 }Cropping and page rotation are now undoable.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls24\ilvl0\cf0 {\listtext \'a5 }Allow reverting a document when it has changed on disk.\ +\ls26\ilvl0\cf0 {\listtext \'a5 }Allow reverting a document when it has changed on disk.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls25\ilvl0\cf0 {\listtext \'a5 }New menu item to set the selection from the content of the page.\ +\ls27\ilvl0\cf0 {\listtext \'a5 }New menu item to set the selection from the content of the page.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls26\ilvl0\cf0 {\listtext \'a5 }Hidden defaults for automatic crop box margins (SKAutoCropBoxMarginWidth, SKAutoCropBoxMarginHeight).\ +\ls28\ilvl0\cf0 {\listtext \'a5 }Hidden defaults for automatic crop box margins (SKAutoCropBoxMarginWidth, SKAutoCropBoxMarginHeight).\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls27\ilvl0\cf0 {\listtext \'a5 }New Zoom To Selection menu item and toolbar button.\ +\ls29\ilvl0\cf0 {\listtext \'a5 }New Zoom To Selection menu item and toolbar button.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls28\ilvl0\cf0 {\listtext \'a5 }New preference option to open files fit to the PDF.\ +\ls30\ilvl0\cf0 {\listtext \'a5 }New preference option to open files fit to the PDF.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls29\ilvl0\cf0 {\listtext \'a5 }You can now join markup highlights using shift-click, or by selecting a highlight before adding a new one.\ +\ls31\ilvl0\cf0 {\listtext \'a5 }You can now join markup highlights using shift-click, or by selecting a highlight before adding a new one.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls30\ilvl0\cf0 {\listtext \'a5 }You can now supply templates for text export of notes. See the wiki for more information.\ +\ls32\ilvl0\cf0 {\listtext \'a5 }You can now supply templates for text export of notes. See the wiki for more information.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural \f2\b\fs28 \cf0 \ @@ -242,26 +281,26 @@ \f3\i\fs26 \cf0 Bugs Fixed\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls31\ilvl0 +\ls33\ilvl0 \f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Fix links in help.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls32\ilvl0\cf0 {\listtext \'a5 }Don't create a new note in note tool mode on mousedown outside a page.\ +\ls34\ilvl0\cf0 {\listtext \'a5 }Don't create a new note in note tool mode on mousedown outside a page.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls33\ilvl0\cf0 {\listtext \'a5 }Don't add new resizable notes in note tool mode when just clicking.\ +\ls35\ilvl0\cf0 {\listtext \'a5 }Don't add new resizable notes in note tool mode when just clicking.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls34\ilvl0\cf0 {\listtext \'a5 }You can now access links that are "hidden" by transparent highlights and arrows.\ +\ls36\ilvl0\cf0 {\listtext \'a5 }You can now access links that are "hidden" by transparent highlights and arrows.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls35\ilvl0\cf0 {\listtext \'a5 }Scroll reading bar to visible when it is shown.\ +\ls37\ilvl0\cf0 {\listtext \'a5 }Scroll reading bar to visible when it is shown.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls36\ilvl0\cf0 {\listtext \'a5 }Scroll to previous position on page when reloading PDF.\ +\ls38\ilvl0\cf0 {\listtext \'a5 }Scroll to previous position on page when reloading PDF.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls37\ilvl0\cf0 {\listtext \'a5 }Escape spaces in TeX editor command.\ +\ls39\ilvl0\cf0 {\listtext \'a5 }Escape spaces in TeX editor command.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls38\ilvl0\cf0 {\listtext \'a5 }Thumbnails now use the current display box.\ +\ls40\ilvl0\cf0 {\listtext \'a5 }Thumbnails now use the current display box.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls39\ilvl0\cf0 {\listtext \'a5 }Retry automatic reloading of files changed on disk a few times.\ +\ls41\ilvl0\cf0 {\listtext \'a5 }Retry automatic reloading of files changed on disk a few times.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls39\ilvl0 +\ls41\ilvl0 \f2\b\fs28 \cf0 \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \cf0 Changes since 0.2\ @@ -271,74 +310,74 @@ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \cf0 New Features\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls40\ilvl0 +\ls42\ilvl0 \f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Add shortcuts for bigger/smaller font sizes.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls41\ilvl0\cf0 {\listtext \'a5 }Command-click a snapshot.\ +\ls43\ilvl0\cf0 {\listtext \'a5 }Command-click a snapshot.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls42\ilvl0\cf0 {\listtext \'a5 }We now print notes and highlights.\ +\ls44\ilvl0\cf0 {\listtext \'a5 }We now print notes and highlights.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls43\ilvl0\cf0 {\listtext \'a5 }Add copy/cut/paste items to the contextual menu, when they apply.\ +\ls45\ilvl0\cf0 {\listtext \'a5 }Add copy/cut/paste items to the contextual menu, when they apply.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls44\ilvl0\cf0 {\listtext \'a5 }You can now make a snapshot of a page by Command-clicking a thumbnail.\ +\ls46\ilvl0\cf0 {\listtext \'a5 }You can now make a snapshot of a page by Command-clicking a thumbnail.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls45\ilvl0\cf0 {\listtext \'a5 }Added Dutch localization.\ +\ls47\ilvl0\cf0 {\listtext \'a5 }Added Dutch localization.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls46\ilvl0\cf0 {\listtext \'a5 }We now do not leave Full Screen when switching to another application.\ +\ls48\ilvl0\cf0 {\listtext \'a5 }We now do not leave Full Screen when switching to another application.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls47\ilvl0\cf0 {\listtext \'a5 }Export notes as RTF.\ +\ls49\ilvl0\cf0 {\listtext \'a5 }Export notes as RTF.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls48\ilvl0\cf0 {\listtext \'a5 }Add preference options for default note/highlight colors and text note font.\ +\ls50\ilvl0\cf0 {\listtext \'a5 }Add preference options for default note/highlight colors and text note font.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls49\ilvl0\cf0 {\listtext \'a5 }Add menu item to save the current PDF display settings to be used for new documents.\ +\ls51\ilvl0\cf0 {\listtext \'a5 }Add menu item to save the current PDF display settings to be used for new documents.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls50\ilvl0\cf0 {\listtext \'a5 }Search results from the Find Panel are now also highlighted with a red oval.\ +\ls52\ilvl0\cf0 {\listtext \'a5 }Search results from the Find Panel are now also highlighted with a red oval.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls51\ilvl0\cf0 {\listtext \'a5 }Select search field when opening the Contents pane in full screen mode.\ +\ls53\ilvl0\cf0 {\listtext \'a5 }Select search field when opening the Contents pane in full screen mode.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls52\ilvl0\cf0 {\listtext \'a5 }You can now reset all preferences or all preferences in a pane.\ +\ls54\ilvl0\cf0 {\listtext \'a5 }You can now reset all preferences or all preferences in a pane.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls53\ilvl0\cf0 {\listtext \'a5 }Added Italian localization. (Thanks Andrea Bergia!)\ +\ls55\ilvl0\cf0 {\listtext \'a5 }Added Italian localization. (Thanks Andrea Bergia!)\ {\listtext \'a5 }Screensaver and sleep are now disabled in Presentation mode.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls54\ilvl0\cf0 {\listtext \'a5 }Skim can now return to the last page viewed in a document.\ +\ls56\ilvl0\cf0 {\listtext \'a5 }Skim can now return to the last page viewed in a document.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls55\ilvl0\cf0 {\listtext \'a5 }Link tool tips now show the top of the text when the link refers to the (empty) top of a page. \ +\ls57\ilvl0\cf0 {\listtext \'a5 }Link tool tips now show the top of the text when the link refers to the (empty) top of a page. \ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls56\ilvl0\cf0 {\listtext \'a5 }Skim can now also view separate Skim notes (.skim) files.\ +\ls58\ilvl0\cf0 {\listtext \'a5 }Skim can now also view separate Skim notes (.skim) files.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls57\ilvl0\cf0 {\listtext \'a5 }Using Sparkle for automatic updating. (Thanks Andy Matuschak!)\ +\ls59\ilvl0\cf0 {\listtext \'a5 }Using Sparkle for automatic updating. (Thanks Andy Matuschak!)\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls58\ilvl0\cf0 {\listtext \'a5 }Display the number of pages in the title bar.\ +\ls60\ilvl0\cf0 {\listtext \'a5 }Display the number of pages in the title bar.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls59\ilvl0\cf0 {\listtext \'a5 }Skim can now automatically backup a skim notes file whenever it saves a PDF file.\ +\ls61\ilvl0\cf0 {\listtext \'a5 }Skim can now automatically backup a skim notes file whenever it saves a PDF file.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls60\ilvl0\cf0 {\listtext \'a5 }You can now resize the current note using the arrow keys, when you hold down the Control key.\ +\ls62\ilvl0\cf0 {\listtext \'a5 }You can now resize the current note using the arrow keys, when you hold down the Control key.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls61\ilvl0\cf0 {\listtext \'a5 }Notes are now ordered according to page and location in page.\ +\ls63\ilvl0\cf0 {\listtext \'a5 }Notes are now ordered according to page and location in page.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls62\ilvl0\cf0 {\listtext \'a5 }Several improvements of Skim's custom tool-tips.\ +\ls64\ilvl0\cf0 {\listtext \'a5 }Several improvements of Skim's custom tool-tips.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls63\ilvl0\cf0 {\listtext \'a5 }Add a menu item to select the search field.\ +\ls65\ilvl0\cf0 {\listtext \'a5 }Add a menu item to select the search field.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls64\ilvl0\cf0 {\listtext \'a5 }You can now add arrows to a PDF document.\ +\ls66\ilvl0\cf0 {\listtext \'a5 }You can now add arrows to a PDF document.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls65\ilvl0\cf0 {\listtext \'a5 }You can now add notes from external .skim files rather than just overwriting them.\ +\ls67\ilvl0\cf0 {\listtext \'a5 }You can now add notes from external .skim files rather than just overwriting them.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls66\ilvl0\cf0 {\listtext \'a5 }PDFSync support. See the Wiki for more information.\ +\ls68\ilvl0\cf0 {\listtext \'a5 }PDFSync support. See the Wiki for more information.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls67\ilvl0\cf0 {\listtext \'a5 }You can now set transparent colors from the color panel. \ +\ls69\ilvl0\cf0 {\listtext \'a5 }You can now set transparent colors from the color panel. \ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls68\ilvl0\cf0 {\listtext \'a5 }You can now set separate PDF view settings for full screen mode. \ +\ls70\ilvl0\cf0 {\listtext \'a5 }You can now set separate PDF view settings for full screen mode. \ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls69\ilvl0\cf0 {\listtext \'a5 }Add a Look Up in Dictionary item to the contextual menu.\ +\ls71\ilvl0\cf0 {\listtext \'a5 }Add a Look Up in Dictionary item to the contextual menu.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls70\ilvl0\cf0 {\listtext \'a5 }You can now undo edits of notes and highlights.\ +\ls72\ilvl0\cf0 {\listtext \'a5 }You can now undo edits of notes and highlights.\ {\listtext \'a5 }Add a hidden preference (SKActivateFullScreenNavigationAtBottom) to show the navigation buttons in full screen mode only when moving the mouse at the bottom of the screen. \ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls71\ilvl0\cf0 {\listtext \'a5 }Add hidden preferences for the line widths of circles and boxes (SKCircleNoteLineWidth and SKSquareNoteLineWidth).\ +\ls73\ilvl0\cf0 {\listtext \'a5 }Add hidden preferences for the line widths of circles and boxes (SKCircleNoteLineWidth and SKSquareNoteLineWidth).\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls72\ilvl0\cf0 {\listtext \'a5 }New tool modes for ading notes or highlights.\ +\ls74\ilvl0\cf0 {\listtext \'a5 }New tool modes for ading notes or highlights.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural \f2\b\fs28 \cf0 \ @@ -346,40 +385,40 @@ \f3\i\fs26 \cf0 Bugs Fixed\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls73\ilvl0 +\ls75\ilvl0 \f1\i0\b0\fs22 \cf0 {\listtext \'a5 }We now don't edit new text notes, so they can be moved, resized or deleted.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls74\ilvl0\cf0 {\listtext \'a5 }We now make sure new notes are added to a visible page.\ +\ls76\ilvl0\cf0 {\listtext \'a5 }We now make sure new notes are added to a visible page.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls75\ilvl0\cf0 {\listtext \'a5 }Disable the TOC menu item when there is no TOC.\ +\ls77\ilvl0\cf0 {\listtext \'a5 }Disable the TOC menu item when there is no TOC.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls76\ilvl0\cf0 {\listtext \'a5 }Return to the location that was viewed when reloading a document.\ +\ls78\ilvl0\cf0 {\listtext \'a5 }Return to the location that was viewed when reloading a document.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls77\ilvl0\cf0 {\listtext \'a5 }Search text in a PDf file asynchronously, so it does not block Skim.\ +\ls79\ilvl0\cf0 {\listtext \'a5 }Search text in a PDf file asynchronously, so it does not block Skim.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls78\ilvl0\cf0 {\listtext \'a5 }Fix crashes that can appear for links with missing URLs.\ +\ls80\ilvl0\cf0 {\listtext \'a5 }Fix crashes that can appear for links with missing URLs.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls79\ilvl0\cf0 {\listtext \'a5 }Add separators in the Notes menu for categories.\ +\ls81\ilvl0\cf0 {\listtext \'a5 }Add separators in the Notes menu for categories.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls80\ilvl0\cf0 {\listtext \'a5 }Fix a crasher when reverting a PDF-document.\ +\ls82\ilvl0\cf0 {\listtext \'a5 }Fix a crasher when reverting a PDF-document.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls81\ilvl0\cf0 {\listtext \'a5 }Fix typos in the Help and update for new features.\ +\ls83\ilvl0\cf0 {\listtext \'a5 }Fix typos in the Help and update for new features.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls82\ilvl0\cf0 {\listtext \'a5 }Fix a crasher when reverting the document. Unfortunately this disabled tool tips.\ +\ls84\ilvl0\cf0 {\listtext \'a5 }Fix a crasher when reverting the document. Unfortunately this disabled tool tips.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls83\ilvl0\cf0 {\listtext \'a5 }Open the contents pane to display the search term when opening from Spotlight.\ +\ls85\ilvl0\cf0 {\listtext \'a5 }Open the contents pane to display the search term when opening from Spotlight.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls84\ilvl0\cf0 {\listtext \'a5 }Save notes when auto-saving and exporting as PDF.\ +\ls86\ilvl0\cf0 {\listtext \'a5 }Save notes when auto-saving and exporting as PDF.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls85\ilvl0\cf0 {\listtext \'a5 }Remember the width of notes pane.\ +\ls87\ilvl0\cf0 {\listtext \'a5 }Remember the width of notes pane.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls86\ilvl0\cf0 {\listtext \'a5 }Fix leaks leading to excessive memory use.\ +\ls88\ilvl0\cf0 {\listtext \'a5 }Fix leaks leading to excessive memory use.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls87\ilvl0\cf0 {\listtext \'a5 }Fix back-tabbing through notes and links.\ +\ls89\ilvl0\cf0 {\listtext \'a5 }Fix back-tabbing through notes and links.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls88\ilvl0\cf0 {\listtext \'a5 }Zooming using the scroll-wheel now only affects the current window.\ +\ls90\ilvl0\cf0 {\listtext \'a5 }Zooming using the scroll-wheel now only affects the current window.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls89\ilvl0\cf0 {\listtext \'a5 }Lazy updating of page thumbnails to avoid slowdown when opening a file.\ +\ls91\ilvl0\cf0 {\listtext \'a5 }Lazy updating of page thumbnails to avoid slowdown when opening a file.\ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \f2\b\fs28 \cf0 \ Modified: trunk/SKDocument.h =================================================================== --- trunk/SKDocument.h 2007-07-11 14:48:38 UTC (rev 2477) +++ trunk/SKDocument.h 2007-07-11 15:52:57 UTC (rev 2478) @@ -128,3 +128,12 @@ - (NSDictionary *)AppleScriptPDFViewSettingsFromPDFViewSettings; - (NSDictionary *)PDFViewSettingsFromAppleScriptPDFViewSettings; @end + + +@interface SKLine : NSObject { + id container; + int line; +} +- (id)initWithContainer:(id)aContainer line:(int)aLine; +- (int)line; +@end Modified: trunk/SKDocument.m =================================================================== --- trunk/SKDocument.m 2007-07-11 14:48:38 UTC (rev 2477) +++ trunk/SKDocument.m 2007-07-11 15:52:57 UTC (rev 2478) @@ -64,7 +64,6 @@ NSString *SKDocumentWillSaveNotification = @"SKDocumentWillSaveNotification"; - @interface SKDocument (Private) - (void)setPDFData:(NSData *)data; @@ -977,6 +976,14 @@ [[self undoManager] setActionName:NSLocalizedString(@"Remove Note", @"Undo action name")]; } +- (unsigned int)countOfLines { + return 0; +} + +- (SKLine *)objectInLinesAtIndex:(unsigned int)index { + return [[[SKLine alloc] initWithContainer:self line:index] autorelease]; +} + - (PDFPage *)currentPage { return [[self pdfView] currentPage]; } @@ -1119,6 +1126,13 @@ [[self pdfView] goToPage:(PDFPage *)location]; } else if ([location isKindOfClass:[PDFAnnotation class]]) { [[self pdfView] scrollAnnotationToVisible:(PDFAnnotation *)location]; + } else if ([location isKindOfClass:[SKLine class]]) { + id source = [args objectForKey:@"Source"]; + if ([source isKindOfClass:[NSString class]]) + source = [NSURL fileURLWithPath:source]; + if ([source isKindOfClass:[NSURL class]] == NO) + source = [self fileURL]; + [[self synchronizer] findPageLocationForLine:[location line] inFile:[[source path] stringByReplacingPathExtension:@"tex"]]; } else { PDFSelection *selection = [PDFSelection selectionWithSpecifier:location]; if ([[selection pages] count]) { @@ -1257,3 +1271,26 @@ } @end + +#pragma mark - + +@implementation SKLine + +- (id)initWithContainer:(id)aContainer line:(int)aLine { + if (self = [super init]) { + container = aContainer; + line = aLine; + } + return self; +} + +- (NSScriptObjectSpecifier *)objectSpecifier { + NSScriptObjectSpecifier *containerRef = [container objectSpecifier]; + return [[[NSIndexSpecifier allocWithZone:[self zone]] initWithContainerClassDescription:[containerRef keyClassDescription] containerSpecifier:containerRef key:@"lines" index:line] autorelease]; +} + +- (int)line { + return line; +} + +@end Modified: trunk/Skim.sdef =================================================================== --- trunk/Skim.sdef 2007-07-11 14:48:38 UTC (rev 2477) +++ trunk/Skim.sdef 2007-07-11 15:52:57 UTC (rev 2478) @@ -68,6 +68,10 @@ description="Notes in the PDF file"> <cocoa key="notes"/> </element> + <element type="TeX line" access="r" hidden="yes" + description="Lines in a TeX source file."> + <cocoa key="lines"/> + </element> <property name="name" code="pnam" type="text" access="r" description="The document's name."> <cocoa key="displayName"/> @@ -211,11 +215,11 @@ <direct-parameter description="The file(s) to be opened."> <type type="file" list="yes"/> </direct-parameter> - <parameter name="at TeX line" code="Line" type="integer" optional="yes" + <parameter name="at TeX line" code="Line" type="integer" optional="yes" hidden="yes" description="Go to a location in the PDF corresponding to the line in a TeX source file."> <cocoa key="line"/> </parameter> - <parameter name="from source" type="file" code="SrcF" optional="yes" + <parameter name="from source" type="file" code="SrcF" optional="yes" hidden="yes" description="The TeX source file. By default this is derived from the file."> <cocoa key="source"/> </parameter> @@ -700,6 +704,15 @@ </responds-to> </class> + <class name="TeX line" plural="TeX lines" code="Line" inherits="item" + description="A line in a TeX source document."> + <cocoa class="SKLine"/> + <property name="index" code="pidx" type="integer" access="r" + description="the line number."> + <cocoa key="line"/> + </property> + </class> + <record-type name="PDF view settings" code="VSet"> <property name="scale factor" code="SclF" type="real" description="The scale factor of the PDF."> @@ -1006,12 +1019,17 @@ <direct-parameter type="document" description="The document in which to scroll."/> <parameter name="to" code="to " - description="The page, note or selection to go to."> + description="The page, note, TeX line, or selection to go to."> <type type="page"/> <type type="note"/> + <type type="TeX line"/> <type type="specifier" list="yes"/> <cocoa key="To"/> </parameter> + <parameter name="from" code="from" type="file" optional="yes" + description="The TeX source file. By default this is derived from the file. Only applies for a TeX line."> + <cocoa key="Source"/> + </parameter> </command> <command name="find" code="SKIMFind" Modified: trunk/displayline =================================================================== --- trunk/displayline 2007-07-11 14:48:38 UTC (rev 2477) +++ trunk/displayline 2007-07-11 15:52:57 UTC (rev 2478) @@ -23,5 +23,6 @@ exec /usr/bin/osascript \ -e "tell application \"Skim\"" \ -e "activate" \ - -e "open POSIX file \"${file}\" at TeX line ${line} from source POSIX file \"${source}\"" \ + -e "open POSIX file \"${file}\"" \ + -e "tell front document to go to TeX line ${line} from POSIX file \"${source}\"" \ -e "end tell" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-11 14:48:52
|
Revision: 2477 http://skim-app.svn.sourceforge.net/skim-app/?rev=2477&view=rev Author: hofman Date: 2007-07-11 07:48:38 -0700 (Wed, 11 Jul 2007) Log Message: ----------- Set window delegate of main/fullscreen window to nil when it's not the current window. Modified Paths: -------------- trunk/SKMainWindowController.m Modified: trunk/SKMainWindowController.m =================================================================== --- trunk/SKMainWindowController.m 2007-07-11 13:44:49 UTC (rev 2476) +++ trunk/SKMainWindowController.m 2007-07-11 14:48:38 UTC (rev 2477) @@ -1634,7 +1634,6 @@ // Create the full-screen window if it does not already exist. if (fullScreenWindow == nil) { fullScreenWindow = [[SKFullScreenWindow alloc] initWithScreen:screen]; - [fullScreenWindow setDelegate:self]; } // explicitly set window frame; screen may have moved, or may be nil (in which case [fullScreenWindow frame] is wrong, which is weird); the first time through this method, [fullScreenWindow screen] is nil @@ -1679,12 +1678,14 @@ } } + [mainWindow setDelegate:nil]; [self setWindow:fullScreenWindow]; [fullScreenWindow makeKeyAndOrderFront:self]; [fullScreenWindow makeFirstResponder:pdfView]; [fullScreenWindow setAcceptsMouseMovedEvents:YES]; [fullScreenWindow recalculateKeyViewLoop]; [mainWindow orderOut:self]; + [fullScreenWindow setDelegate:self]; } - (void)removeFullScreen { @@ -1699,6 +1700,7 @@ [(id)wc setForceOnTop:NO]; } + [fullScreenWindow setDelegate:nil]; [self setWindow:mainWindow]; [mainWindow orderWindow:NSWindowBelow relativeTo:[fullScreenWindow windowNumber]]; [mainWindow makeKeyWindow]; @@ -1717,6 +1719,7 @@ [mainWindow makeKeyAndOrderFront:self]; [mainWindow makeFirstResponder:pdfView]; [mainWindow recalculateKeyViewLoop]; + [mainWindow setDelegate:self]; NSEnumerator *blankScreenEnumerator = [blankingWindows objectEnumerator]; NSWindow *window; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-11 13:45:12
|
Revision: 2476 http://skim-app.svn.sourceforge.net/skim-app/?rev=2476&view=rev Author: hofman Date: 2007-07-11 06:44:49 -0700 (Wed, 11 Jul 2007) Log Message: ----------- Also re-layout PDF when the normal window changes screen. At least when the PDF auto-resizes, this is needed. Modified Paths: -------------- trunk/SKMainWindowController.m Modified: trunk/SKMainWindowController.m =================================================================== --- trunk/SKMainWindowController.m 2007-07-11 13:25:09 UTC (rev 2475) +++ trunk/SKMainWindowController.m 2007-07-11 13:44:49 UTC (rev 2476) @@ -571,8 +571,6 @@ if ([self isFullScreen]) { NSScreen *screen = [fullScreenWindow screen]; [fullScreenWindow setFrame:[screen frame] display:NO]; - [pdfView layoutDocumentView]; - [pdfView setNeedsDisplay:YES]; if ([[leftSideWindow screen] isEqual:screen] == NO) { [leftSideWindow orderOut:self]; @@ -588,9 +586,9 @@ } } else if ([self isPresentation]) { [fullScreenWindow setFrame:[[fullScreenWindow screen] frame] display:NO]; - [pdfView layoutDocumentView]; - [pdfView setNeedsDisplay:YES]; } + [pdfView layoutDocumentView]; + [pdfView setNeedsDisplay:YES]; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-11 13:25:11
|
Revision: 2475 http://skim-app.svn.sourceforge.net/skim-app/?rev=2475&view=rev Author: hofman Date: 2007-07-11 06:25:09 -0700 (Wed, 11 Jul 2007) Log Message: ----------- Use public text deleghate method rather than private methods to handle end of text note edits. Modified Paths: -------------- trunk/SKPDFView.m Modified: trunk/SKPDFView.m =================================================================== --- trunk/SKPDFView.m 2007-07-11 12:03:20 UTC (rev 2474) +++ trunk/SKPDFView.m 2007-07-11 13:25:09 UTC (rev 2475) @@ -76,8 +76,6 @@ @end @interface PDFView (PDFViewPrivateDeclarations) -- (void)pdfViewControlHit:(id)sender; -- (void)activateNextAnnotation:(BOOL)backward; - (void)removeAnnotationControl; @end @@ -1654,25 +1652,18 @@ } } -// this is the action for the textfield for the text widget. Override to remove it after an edit. -- (void)pdfViewControlHit:(id)sender{ - if ([[self superclass] instancesRespondToSelector:@selector(pdfViewControlHit:)]) - [super pdfViewControlHit:sender]; - if ([sender isKindOfClass:[NSTextField class]] && editAnnotation) { +// we're the delegate of the textfield used to edit text widgets +- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command { + BOOL rv = NO; + if (editAnnotation && (command == @selector(insertNewline:) || command == @selector(insertTab:) || command == @selector(insertBacktab:))) { [self endAnnotationEdit:self]; [[self window] makeFirstResponder:self]; + } else if ([[self superclass] instancesRespondToSelector:_cmd]) { + rv = [super control:control textView:textView doCommandBySelector:command]; } + return rv; } -// this is called after hitting tab or backtab from a text widget. -- (void)activateNextAnnotation:(BOOL)backward{ - if (editAnnotation) { - [self endAnnotationEdit:self]; - [[self window] makeFirstResponder:self]; - } else if ([[self superclass] instancesRespondToSelector:@selector(activateNextAnnotation:)]) - [super activateNextAnnotation:backward]; -} - - (void)selectNextActiveAnnotation:(id)sender { PDFDocument *pdfDoc = [self document]; int numberOfPages = [pdfDoc pageCount]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-11 12:03:21
|
Revision: 2474 http://skim-app.svn.sourceforge.net/skim-app/?rev=2474&view=rev Author: hofman Date: 2007-07-11 05:03:20 -0700 (Wed, 11 Jul 2007) Log Message: ----------- Changes in layout of displayline script Modified Paths: -------------- trunk/displayline Modified: trunk/displayline =================================================================== --- trunk/displayline 2007-07-11 11:31:48 UTC (rev 2473) +++ trunk/displayline 2007-07-11 12:03:20 UTC (rev 2474) @@ -12,17 +12,16 @@ file="$3" else file="$2" -if [ $# -gt 2 ]; then -source="$3" -else -# derive source file from pdf file -source="${file%.pdf}.tex" +[ $# -gt 2 ] && source="$3" || source="${file%.pdf}.tex" fi -fi # expand relative paths [ "${file:0:1}" == "/" ] || file="${PWD}/${file}" [ "${source:0:1}" == "/" ] || source="${PWD}/${source}" # call the AppleScript -/usr/bin/osascript -e "tell application \"Skim\"" -e "activate" -e "open POSIX file \"${file}\" at TeX line ${line} from source POSIX file \"${source}\"" -e "end tell" +exec /usr/bin/osascript \ + -e "tell application \"Skim\"" \ + -e "activate" \ + -e "open POSIX file \"${file}\" at TeX line ${line} from source POSIX file \"${source}\"" \ + -e "end tell" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-11 11:31:50
|
Revision: 2473 http://skim-app.svn.sourceforge.net/skim-app/?rev=2473&view=rev Author: hofman Date: 2007-07-11 04:31:48 -0700 (Wed, 11 Jul 2007) Log Message: ----------- Fix layout of info window. Modified Paths: -------------- trunk/Dutch.lproj/InfoWindow.nib/keyedobjects.nib trunk/English.lproj/InfoWindow.nib/keyedobjects.nib trunk/Italian.lproj/InfoWindow.nib/keyedobjects.nib Modified: trunk/Dutch.lproj/InfoWindow.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/English.lproj/InfoWindow.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/Italian.lproj/InfoWindow.nib/keyedobjects.nib =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-11 11:13:53
|
Revision: 2472 http://skim-app.svn.sourceforge.net/skim-app/?rev=2472&view=rev Author: hofman Date: 2007-07-11 04:13:52 -0700 (Wed, 11 Jul 2007) Log Message: ----------- Don't let binding overrule editable status of keywords textview. Modified Paths: -------------- trunk/Dutch.lproj/InfoWindow.nib/keyedobjects.nib trunk/English.lproj/InfoWindow.nib/keyedobjects.nib trunk/Italian.lproj/InfoWindow.nib/keyedobjects.nib Modified: trunk/Dutch.lproj/InfoWindow.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/English.lproj/InfoWindow.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/Italian.lproj/InfoWindow.nib/keyedobjects.nib =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-11 11:00:10
|
Revision: 2471 http://skim-app.svn.sourceforge.net/skim-app/?rev=2471&view=rev Author: hofman Date: 2007-07-11 04:00:05 -0700 (Wed, 11 Jul 2007) Log Message: ----------- Display keywords in a textview. Modified Paths: -------------- trunk/Dutch.lproj/InfoWindow.nib/info.nib trunk/Dutch.lproj/InfoWindow.nib/keyedobjects.nib trunk/English.lproj/InfoWindow.nib/info.nib trunk/English.lproj/InfoWindow.nib/keyedobjects.nib trunk/Italian.lproj/InfoWindow.nib/info.nib trunk/Italian.lproj/InfoWindow.nib/keyedobjects.nib trunk/SKInfoWindowController.m Modified: trunk/Dutch.lproj/InfoWindow.nib/info.nib =================================================================== --- trunk/Dutch.lproj/InfoWindow.nib/info.nib 2007-07-10 18:49:44 UTC (rev 2470) +++ trunk/Dutch.lproj/InfoWindow.nib/info.nib 2007-07-11 11:00:05 UTC (rev 2471) @@ -12,5 +12,17 @@ </array> <key>IBSystem Version</key> <string>8R218</string> + <key>IBUserGuides</key> + <dict> + <key>5</key> + <dict> + <key>guideLocations</key> + <array> + <string>Vertical:143.000000</string> + </array> + <key>guidesLocked</key> + <false/> + </dict> + </dict> </dict> </plist> Modified: trunk/Dutch.lproj/InfoWindow.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/English.lproj/InfoWindow.nib/info.nib =================================================================== --- trunk/English.lproj/InfoWindow.nib/info.nib 2007-07-10 18:49:44 UTC (rev 2470) +++ trunk/English.lproj/InfoWindow.nib/info.nib 2007-07-11 11:00:05 UTC (rev 2471) @@ -12,5 +12,17 @@ </array> <key>IBSystem Version</key> <string>8R218</string> + <key>IBUserGuides</key> + <dict> + <key>5</key> + <dict> + <key>guideLocations</key> + <array> + <string>Vertical:143.000000</string> + </array> + <key>guidesLocked</key> + <false/> + </dict> + </dict> </dict> </plist> Modified: trunk/English.lproj/InfoWindow.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/Italian.lproj/InfoWindow.nib/info.nib =================================================================== --- trunk/Italian.lproj/InfoWindow.nib/info.nib 2007-07-10 18:49:44 UTC (rev 2470) +++ trunk/Italian.lproj/InfoWindow.nib/info.nib 2007-07-11 11:00:05 UTC (rev 2471) @@ -12,5 +12,17 @@ </array> <key>IBSystem Version</key> <string>8R218</string> + <key>IBUserGuides</key> + <dict> + <key>5</key> + <dict> + <key>guideLocations</key> + <array> + <string>Vertical:170.000000</string> + </array> + <key>guidesLocked</key> + <false/> + </dict> + </dict> </dict> </plist> Modified: trunk/Italian.lproj/InfoWindow.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/SKInfoWindowController.m =================================================================== --- trunk/SKInfoWindowController.m 2007-07-10 18:49:44 UTC (rev 2470) +++ trunk/SKInfoWindowController.m 2007-07-11 11:00:05 UTC (rev 2471) @@ -177,7 +177,7 @@ [dictionary setValue:SKSizeString([[pdfDoc pageAtIndex:0] boundsForBox:kPDFDisplayBoxCropBox].size, [[pdfDoc pageAtIndex:0] boundsForBox:kPDFDisplayBoxMediaBox].size) forKey:@"PageSize"]; [dictionary setValue:[NSNumber numberWithUnsignedLongLong:physicalSize] forKey:@"PhysicalSize"]; [dictionary setValue:[NSNumber numberWithUnsignedLongLong:logicalSize] forKey:@"LogicalSize"]; - [dictionary setValue:[[dictionary valueForKey:@"Keywords"] componentsJoinedByString:@" "] forKey:@"KeywordsString"]; + [dictionary setValue:[[dictionary valueForKey:@"Keywords"] componentsJoinedByString:@"\n"] forKey:@"KeywordsString"]; [dictionary setValue:[NSNumber numberWithBool:[pdfDoc isEncrypted]] forKey:@"Encrypted"]; [dictionary setValue:[NSNumber numberWithBool:[pdfDoc allowsPrinting]] forKey:@"AllowsPrinting"]; [dictionary setValue:[NSNumber numberWithBool:[pdfDoc allowsCopying]] forKey:@"AllowsCopying"]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-10 19:44:41
|
Revision: 2469 http://skim-app.svn.sourceforge.net/skim-app/?rev=2469&view=rev Author: hofman Date: 2007-07-10 11:15:36 -0700 (Tue, 10 Jul 2007) Log Message: ----------- Handle the odd case of a fullscreen window moving from one screen to another. This could happen when the screen on which the window displays is disconnected. Modified Paths: -------------- trunk/SKMainWindowController.m Modified: trunk/SKMainWindowController.m =================================================================== --- trunk/SKMainWindowController.m 2007-07-10 17:49:21 UTC (rev 2468) +++ trunk/SKMainWindowController.m 2007-07-10 18:15:36 UTC (rev 2469) @@ -566,6 +566,34 @@ } } +- (void)windowDidChangeScreen:(NSNotification *)notification { + if ([[notification object] isEqual:[self window]]) { + if ([self isFullScreen]) { + NSScreen *screen = [fullScreenWindow screen]; + [fullScreenWindow setFrame:[screen frame] display:NO]; + [pdfView layoutDocumentView]; + [pdfView setNeedsDisplay:YES]; + + if ([[leftSideWindow screen] isEqual:screen] == NO) { + [leftSideWindow orderOut:self]; + [leftSideWindow moveToScreen:screen]; + [leftSideWindow hideSideWindow]; + [leftSideWindow orderFront:self]; + } + if ([[rightSideWindow screen] isEqual:screen] == NO) { + [rightSideWindow orderOut:self]; + [leftSideWindow moveToScreen:screen]; + [rightSideWindow hideSideWindow]; + [rightSideWindow orderFront:self]; + } + } else if ([self isPresentation]) { + [fullScreenWindow setFrame:[[fullScreenWindow screen] frame] display:NO]; + [pdfView layoutDocumentView]; + [pdfView setNeedsDisplay:YES]; + } + } +} + - (void)updateLeftStatus { NSString *message = [NSString stringWithFormat:NSLocalizedString(@"Page %i of %i", @"Status message"), [self pageNumber], [[pdfView document] pageCount]]; [statusBar setLeftStringValue:message]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-10 18:49:47
|
Revision: 2470 http://skim-app.svn.sourceforge.net/skim-app/?rev=2470&view=rev Author: hofman Date: 2007-07-10 11:49:44 -0700 (Tue, 10 Jul 2007) Log Message: ----------- Also redirect printing of snapshot PDFView to the document. Modified Paths: -------------- trunk/BDSKZoomablePDFView.m Modified: trunk/BDSKZoomablePDFView.m =================================================================== --- trunk/BDSKZoomablePDFView.m 2007-07-10 18:15:36 UTC (rev 2469) +++ trunk/BDSKZoomablePDFView.m 2007-07-10 18:49:44 UTC (rev 2470) @@ -84,6 +84,14 @@ [super dealloc]; } +- (void)printDocument:(id)sender{ + id document = [[[self window] windowController] document]; + if ([document respondsToSelector:_cmd]) + [document printDocument:sender]; + else if ([[self superclass] instancesRespondToSelector:_cmd]) + [(id)super printDocument:sender]; +} + #pragma mark Copying // used to cache the selection info and document for lazy copying This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-10 17:49:23
|
Revision: 2468 http://skim-app.svn.sourceforge.net/skim-app/?rev=2468&view=rev Author: hofman Date: 2007-07-10 10:49:21 -0700 (Tue, 10 Jul 2007) Log Message: ----------- Redirect printing from PDFView back to document, so it uses the printInfo from the document. Modified Paths: -------------- trunk/SKDocument.m trunk/SKMainWindowController.m trunk/SKPDFView.m Modified: trunk/SKDocument.m =================================================================== --- trunk/SKDocument.m 2007-07-10 17:09:00 UTC (rev 2467) +++ trunk/SKDocument.m 2007-07-10 17:49:21 UTC (rev 2468) @@ -482,6 +482,10 @@ #pragma mark Actions +- (IBAction)printDocument:(id)sender{ + [[self pdfView] printWithInfo:[self printInfo] autoRotate:NO]; +} + - (void)openPanelDidEnd:(NSOpenPanel *)oPanel returnCode:(int)returnCode contextInfo:(void *)contextInfo{ if (returnCode == NSOKButton) { NSURL *notesURL = [[oPanel URLs] objectAtIndex:0]; Modified: trunk/SKMainWindowController.m =================================================================== --- trunk/SKMainWindowController.m 2007-07-10 17:09:00 UTC (rev 2467) +++ trunk/SKMainWindowController.m 2007-07-10 17:49:21 UTC (rev 2468) @@ -2005,10 +2005,6 @@ [[NSUserDefaults standardUserDefaults] setObject:[self currentPDFSettings] forKey:SKDefaultPDFDisplaySettingsKey]; } -- (IBAction)printDocument:(id)sender{ - [pdfView printWithInfo:[[self document] printInfo] autoRotate:NO]; -} - #pragma mark Swapping tables - (void)replaceSideView:(NSView *)oldView withView:(NSView *)newView animate:(BOOL)animate { Modified: trunk/SKPDFView.m =================================================================== --- trunk/SKPDFView.m 2007-07-10 17:09:00 UTC (rev 2467) +++ trunk/SKPDFView.m 2007-07-10 17:49:21 UTC (rev 2468) @@ -557,6 +557,14 @@ #pragma mark Actions +- (IBAction)printDocument:(id)sender{ + id document = [[[self window] windowController] document]; + if ([document respondsToSelector:_cmd]) + [document printDocument:sender]; + else if ([[self superclass] instancesRespondToSelector:_cmd]) + [(id)super printDocument:sender]; +} + - (void)delete:(id)sender { if ([activeAnnotation isNoteAnnotation]) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-10 17:09:03
|
Revision: 2467 http://skim-app.svn.sourceforge.net/skim-app/?rev=2467&view=rev Author: hofman Date: 2007-07-10 10:09:00 -0700 (Tue, 10 Jul 2007) Log Message: ----------- End text annotation edit when hitting (back)tab. Fixes text editing for PDFs with forms. Modified Paths: -------------- trunk/SKPDFView.m Modified: trunk/SKPDFView.m =================================================================== --- trunk/SKPDFView.m 2007-07-10 13:15:03 UTC (rev 2466) +++ trunk/SKPDFView.m 2007-07-10 17:09:00 UTC (rev 2467) @@ -77,6 +77,7 @@ @interface PDFView (PDFViewPrivateDeclarations) - (void)pdfViewControlHit:(id)sender; +- (void)activateNextAnnotation:(BOOL)backward; - (void)removeAnnotationControl; @end @@ -1622,7 +1623,6 @@ [editAnnotation setStringValue:[activeAnnotation contents]]; if ([activeAnnotation respondsToSelector:@selector(font)]) [editAnnotation setFont:[(PDFAnnotationFreeText *)activeAnnotation font]]; - [editAnnotation setColor:[activeAnnotation color]]; [[activeAnnotation page] addAnnotation:editAnnotation]; // Start editing @@ -1648,15 +1648,23 @@ // this is the action for the textfield for the text widget. Override to remove it after an edit. - (void)pdfViewControlHit:(id)sender{ - if ([PDFView instancesRespondToSelector:@selector(pdfViewControlHit:)]) { + if ([[self superclass] instancesRespondToSelector:@selector(pdfViewControlHit:)]) [super pdfViewControlHit:sender]; - if ([sender isKindOfClass:[NSTextField class]] && editAnnotation) { - [self endAnnotationEdit:self]; - [[self window] makeFirstResponder:self]; - } + if ([sender isKindOfClass:[NSTextField class]] && editAnnotation) { + [self endAnnotationEdit:self]; + [[self window] makeFirstResponder:self]; } } +// this is called after hitting tab or backtab from a text widget. +- (void)activateNextAnnotation:(BOOL)backward{ + if (editAnnotation) { + [self endAnnotationEdit:self]; + [[self window] makeFirstResponder:self]; + } else if ([[self superclass] instancesRespondToSelector:@selector(activateNextAnnotation:)]) + [super activateNextAnnotation:backward]; +} + - (void)selectNextActiveAnnotation:(id)sender { PDFDocument *pdfDoc = [self document]; int numberOfPages = [pdfDoc pageCount]; @@ -2496,7 +2504,6 @@ [editAnnotation setStringValue:[activeAnnotation contents]]; if ([activeAnnotation respondsToSelector:@selector(font)]) [editAnnotation setFont:[(PDFAnnotationFreeText *)activeAnnotation font]]; - [editAnnotation setColor:[activeAnnotation color]]; [[activeAnnotation page] addAnnotation:editAnnotation]; // Start editing This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-10 13:15:07
|
Revision: 2466 http://skim-app.svn.sourceforge.net/skim-app/?rev=2466&view=rev Author: hofman Date: 2007-07-10 06:15:03 -0700 (Tue, 10 Jul 2007) Log Message: ----------- Fix some typos in last commit. Small code cleanups. Modified Paths: -------------- trunk/SKPDFAnnotationNote.h trunk/SKPDFAnnotationNote.m Modified: trunk/SKPDFAnnotationNote.h =================================================================== --- trunk/SKPDFAnnotationNote.h 2007-07-10 12:53:52 UTC (rev 2465) +++ trunk/SKPDFAnnotationNote.h 2007-07-10 13:15:03 UTC (rev 2466) @@ -115,7 +115,6 @@ unsigned numberOfLines; } -- (id)initWithBounds:(NSRect)bounds markupType:(int)type quadrilateralPointsAsStrings:(NSArray *)pointStrings; - (id)initWithSelection:(PDFSelection *)selection markupType:(int)type; - (PDFSelection *)selection; Modified: trunk/SKPDFAnnotationNote.m =================================================================== --- trunk/SKPDFAnnotationNote.m 2007-07-10 12:53:52 UTC (rev 2465) +++ trunk/SKPDFAnnotationNote.m 2007-07-10 13:15:03 UTC (rev 2466) @@ -727,31 +727,19 @@ return [[NSArray alloc] initWithObjects:[NSValue valueWithPoint:p0], [NSValue valueWithPoint:p1], [NSValue valueWithPoint:p2], [NSValue valueWithPoint:p3], nil]; } -- (id)initWithBounds:(NSRect)bounds { - self = [self initWithBounds:bounds markupType:kPDFMarkupTypeHighlight quadrilateralPointsAsStrings:nil]; - return self; -} - -- (id)initWithBounds:(NSRect)bounds dictionary:(NSDictionary *)dict{ - NSString *type = [dict objectForKey:@"type"]; - int markupType = kPDFMarkupTypeHighlight; - if ([type isEqualToString:@"Underline"]) - markupType = kPDFMarkupTypeUnderline; - else if ([type isEqualToString:@"StrikeOut"]) - markupType = kPDFMarkupTypeStrikeOut; - return [self initWithBounds:bounds markupType:kPDFMarkupTypeHighlight quadrilateralPointsAsStrings:[dict objectForKey:@"quadrilateralPoints"]]; -} - - (id)initWithBounds:(NSRect)bounds markupType:(int)type quadrilateralPointsAsStrings:(NSArray *)pointStrings { if (self = [super initWithBounds:bounds]) { [self setMarkupType:type]; - if (type == kPDFMarkupTypeHighlight) - originalSetColor(self, @selector(setColor:), [NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKHighlightNoteColorKey]]); - else if (type == kPDFMarkupTypeUnderline) - originalSetColor(self, @selector(setColor:), [NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKUnderlineNoteColorKey]]); - else if (type == kPDFMarkupTypeStrikeOut) - originalSetColor(self, @selector(setColor:), [NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKStrikeOutNoteColorKey]]); + NSString *colorKey = nil; + switch (type) { + case kPDFMarkupTypeHighlight: colorKey = SKHighlightNoteColorKey; break; + case kPDFMarkupTypeUnderline: colorKey = SKUnderlineNoteColorKey; break; + case kPDFMarkupTypeStrikeOut: colorKey = SKStrikeOutNoteColorKey; break; + } + if (colorKey) + originalSetColor(self, @selector(setColor:), [NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:colorKey]]); + NSArray *quadPoints = nil; if (pointStrings) { quadPoints = createPointsFromStrings(pointStrings); @@ -778,6 +766,21 @@ return self; } +- (id)initWithBounds:(NSRect)bounds { + self = [self initWithBounds:bounds markupType:kPDFMarkupTypeHighlight quadrilateralPointsAsStrings:nil]; + return self; +} + +- (id)initWithBounds:(NSRect)bounds dictionary:(NSDictionary *)dict{ + NSString *type = [dict objectForKey:@"type"]; + int markupType = kPDFMarkupTypeHighlight; + if ([type isEqualToString:@"Underline"]) + markupType = kPDFMarkupTypeUnderline; + else if ([type isEqualToString:@"StrikeOut"]) + markupType = kPDFMarkupTypeStrikeOut; + return [self initWithBounds:bounds markupType:markupType quadrilateralPointsAsStrings:[dict objectForKey:@"quadrilateralPoints"]]; +} + - (void)addLineRect:(NSRect)aRect { numberOfLines++; lineRects = NSZoneRealloc([self zone], lineRects, numberOfLines * sizeof(NSRect)); @@ -1282,13 +1285,13 @@ originalSetColor(self, @selector(setColor:), [NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKLineNoteColorKey]]); [super setStartLineStyle:[[NSUserDefaults standardUserDefaults] integerForKey:SKLineNoteStartLineStyleKey]]; [super setEndLineStyle:[[NSUserDefaults standardUserDefaults] integerForKey:SKLineNoteEndLineStyleKey]]; - [super setStartPoint:NSMakePoint(0.5, 0.5)]; - [super setEndPoint:NSMakePoint(NSWidth(bounds) - 0.5, NSHeight(bounds) - 0.5)]; + [super setStartPoint:NSMakePoint(0.0, 0.0)]; + [super setEndPoint:NSMakePoint(NSWidth(bounds), NSHeight(bounds))]; PDFBorder *border = [[PDFBorder allocWithZone:[self zone]] init]; [border setLineWidth:[[NSUserDefaults standardUserDefaults] floatForKey:SKLineNoteLineWidthKey]]; [border setDashPattern:[[NSUserDefaults standardUserDefaults] arrayForKey:SKLineNoteDashPatternKey]]; [border setStyle:[[NSUserDefaults standardUserDefaults] floatForKey:SKLineNoteLineStyleKey]]; - originalSetBounds(self, @selector(setBorder:), [border lineWidth] > 0.0 ? border : nil); + originalSetBorder(self, @selector(setBorder:), [border lineWidth] > 0.0 ? border : nil); [border release]; } return self; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-10 12:53:53
|
Revision: 2465 http://skim-app.svn.sourceforge.net/skim-app/?rev=2465&view=rev Author: hofman Date: 2007-07-10 05:53:52 -0700 (Tue, 10 Jul 2007) Log Message: ----------- Let annotation subclasses handle custom initialization from a dictionary themselves. Use super's implementation to set properties in annotation initializers; avoids overhead from change notifications. Modified Paths: -------------- trunk/SKPDFAnnotationNote.m Modified: trunk/SKPDFAnnotationNote.m =================================================================== --- trunk/SKPDFAnnotationNote.m 2007-07-10 12:01:27 UTC (rev 2464) +++ trunk/SKPDFAnnotationNote.m 2007-07-10 12:53:52 UTC (rev 2465) @@ -130,6 +130,7 @@ @interface PDFAnnotation (SKPDFAnnotationPrivate) +- (id)initWithBounds:(NSRect)bounds dictionary:(NSDictionary *)dict; - (void)replacementSetBounds:(NSRect)bounds; - (void)replacementSetContents:(NSString *)contents; - (void)replacementSetColor:(NSColor *)color; @@ -137,13 +138,13 @@ @end -@implementation PDFAnnotation (SKExtensions) - static IMP originalSetBounds = NULL; static IMP originalSetContents = NULL; static IMP originalSetColor = NULL; static IMP originalSetBorder = NULL; +@implementation PDFAnnotation (SKExtensions) + + (void)load { originalSetBounds = OBReplaceMethodImplementationWithSelector(self, @selector(setBounds:), @selector(replacementSetBounds:)); originalSetContents = OBReplaceMethodImplementationWithSelector(self, @selector(setContents:), @selector(replacementSetContents:)); @@ -151,82 +152,51 @@ originalSetBorder = OBReplaceMethodImplementationWithSelector(self, @selector(setBorder:), @selector(replacementSetBorder:)); } +- (id)initWithBounds:(NSRect)bounds dictionary:(NSDictionary *)dict{ + [[self initWithBounds:NSZeroRect] release]; + return nil; +} + - (id)initWithDictionary:(NSDictionary *)dict{ [[self initWithBounds:NSZeroRect] release]; NSString *type = [dict objectForKey:@"type"]; NSRect bounds = NSRectFromString([dict objectForKey:@"bounds"]); - NSString *contents = [dict objectForKey:@"contents"]; - NSColor *color = [dict objectForKey:@"color"]; - NSNumber *lineWidth = [dict objectForKey:@"lineWidth"]; - NSNumber *borderStyle = [dict objectForKey:@"borderStyle"]; - NSArray *dashPattern = [dict objectForKey:@"dashPattern"]; + Class annotationClass = NULL; - if ([type isEqualToString:@"Note"]) { - self = [[SKPDFAnnotationNote alloc] initWithBounds:bounds]; - NSAttributedString *text = [dict objectForKey:@"text"]; - NSImage *image = [dict objectForKey:@"image"]; - NSNumber *iconType = [dict objectForKey:@"iconType"]; - if (image) - [(SKPDFAnnotationNote *)self setImage:image]; - if (text) - [(SKPDFAnnotationNote *)self setText:text]; - if (iconType) - [(SKPDFAnnotationNote *)self setIconType:[iconType intValue]]; - } else if ([type isEqualToString:@"FreeText"]) { - self = [[SKPDFAnnotationFreeText alloc] initWithBounds:bounds]; - NSFont *font = [dict objectForKey:@"font"]; - NSNumber *rotation = [dict objectForKey:@"rotation"]; - if (font) - [(SKPDFAnnotationFreeText *)self setFont:font]; - if (rotation && [self respondsToSelector:@selector(setRotation:)]) - [(SKPDFAnnotationFreeText *)self setRotation:[rotation intValue]]; - } else if ([type isEqualToString:@"Circle"]) { - self = [[SKPDFAnnotationCircle alloc] initWithBounds:bounds]; - NSColor *interiorColor = [dict objectForKey:@"interiorColor"]; - if (interiorColor) - [(SKPDFAnnotationCircle *)self setInteriorColor:interiorColor]; - } else if ([type isEqualToString:@"Square"]) { - self = [[SKPDFAnnotationSquare alloc] initWithBounds:bounds]; - NSColor *interiorColor = [dict objectForKey:@"interiorColor"]; - if (interiorColor) - [(SKPDFAnnotationSquare *)self setInteriorColor:interiorColor]; - } else if ([type isEqualToString:@"Highlight"] || [type isEqualToString:@"MarkUp"]) { - self = [[SKPDFAnnotationMarkup alloc] initWithBounds:bounds markupType:kPDFMarkupTypeHighlight quadrilateralPointsAsStrings:[dict objectForKey:@"quadrilateralPoints"]]; - } else if ([type isEqualToString:@"Underline"]) { - self = [[SKPDFAnnotationMarkup alloc] initWithBounds:bounds markupType:kPDFMarkupTypeUnderline quadrilateralPointsAsStrings:[dict objectForKey:@"quadrilateralPoints"]]; - } else if ([type isEqualToString:@"StrikeOut"]) { - self = [[SKPDFAnnotationMarkup alloc] initWithBounds:bounds markupType:kPDFMarkupTypeStrikeOut quadrilateralPointsAsStrings:[dict objectForKey:@"quadrilateralPoints"]]; - } else if ([type isEqualToString:@"Line"]) { - self = [[SKPDFAnnotationLine alloc] initWithBounds:bounds]; - NSString *point; - NSNumber *startLineStyle = [dict objectForKey:@"startLineStyle"]; - NSNumber *endLineStyle = [dict objectForKey:@"endLineStyle"]; - if (point = [dict objectForKey:@"startPoint"]) - [(SKPDFAnnotationLine *)self setStartPoint:NSPointFromString(point)]; - if (point = [dict objectForKey:@"endPoint"]) - [(SKPDFAnnotationLine *)self setEndPoint:NSPointFromString(point)]; - if (startLineStyle) - [(SKPDFAnnotationLine *)self setStartLineStyle:[startLineStyle intValue]]; - if (endLineStyle) - [(SKPDFAnnotationLine *)self setEndLineStyle:[endLineStyle intValue]]; - } else { - self = nil; + if ([type isEqualToString:@"Note"]) + annotationClass = [SKPDFAnnotationNote class]; + else if ([type isEqualToString:@"FreeText"]) + annotationClass = [SKPDFAnnotationFreeText class]; + else if ([type isEqualToString:@"Circle"]) + annotationClass = [SKPDFAnnotationCircle class]; + else if ([type isEqualToString:@"Square"]) + annotationClass = [SKPDFAnnotationSquare class]; + else if ([type isEqualToString:@"Highlight"] || [type isEqualToString:@"MarkUp"] || [type isEqualToString:@"Underline"] || [type isEqualToString:@"StrikeOut"]) + annotationClass = [SKPDFAnnotationMarkup class]; + else if ([type isEqualToString:@"Line"]) + annotationClass = [SKPDFAnnotationLine class]; + + if (self = [[annotationClass alloc] initWithBounds:bounds dictionary:dict]) { + NSString *contents = [dict objectForKey:@"contents"]; + NSColor *color = [dict objectForKey:@"color"]; + NSNumber *lineWidth = [dict objectForKey:@"lineWidth"]; + NSNumber *borderStyle = [dict objectForKey:@"borderStyle"]; + NSArray *dashPattern = [dict objectForKey:@"dashPattern"]; + + if (contents) + originalSetContents(self, @selector(setContents:), contents); + if (color) + originalSetColor(self, @selector(setColor:), color); + if ((lineWidth || borderStyle || dashPattern) && [self border] == nil) + originalSetBorder(self, @selector(setBorder:), [[[PDFBorder alloc] init] autorelease]); + if (lineWidth) + [[self border] setLineWidth:[lineWidth floatValue]]; + if (borderStyle) + [[self border] setStyle:[lineWidth intValue]]; + if (dashPattern) + [[self border] setDashPattern:dashPattern]; } - - if (contents) - [self setContents:contents]; - if (color) - [self setColor:color]; - if ((lineWidth || borderStyle || dashPattern) && [self border] == nil) - [self setBorder:[[[PDFBorder alloc] init] autorelease]]; - if (lineWidth) - [[self border] setLineWidth:[lineWidth floatValue]]; - if (borderStyle) - [[self border] setStyle:[lineWidth intValue]]; - if (dashPattern) - [[self border] setDashPattern:dashPattern]; - return self; } @@ -433,17 +403,16 @@ [self performSelector:@selector(setPage:) withObject:page]; } } - } else { - if (type == SKASTextNote) - self = [[SKPDFAnnotationFreeText alloc] initWithBounds:NSMakeRect(100.0, 100.0, 64.0, 64.0)]; - else if (type == SKASAnchoredNote) - self = [[SKPDFAnnotationNote alloc] initWithBounds:NSMakeRect(100.0, 100.0, 16.0, 16.0)]; - else if (type == SKASCircleNote) - self = [[SKPDFAnnotationCircle alloc] initWithBounds:NSMakeRect(100.0, 100.0, 64.0, 64.0)]; - else if (type == SKASSquareNote) - self = [[SKPDFAnnotationSquare alloc] initWithBounds:NSMakeRect(100.0, 100.0, 64.0, 64.0)]; - else if (type == SKASLineNote) - self = [[SKPDFAnnotationLine alloc] initWithBounds:NSMakeRect(100.0, 100.0, 16.0, 16.0)]; + } else if (type == SKASTextNote) { + self = [[SKPDFAnnotationFreeText alloc] initWithBounds:NSMakeRect(100.0, 100.0, 64.0, 64.0)]; + } else if (type == SKASAnchoredNote) { + self = [[SKPDFAnnotationNote alloc] initWithBounds:NSMakeRect(100.0, 100.0, 16.0, 16.0)]; + } else if (type == SKASCircleNote) { + self = [[SKPDFAnnotationCircle alloc] initWithBounds:NSMakeRect(100.0, 100.0, 64.0, 64.0)]; + } else if (type == SKASSquareNote) { + self = [[SKPDFAnnotationSquare alloc] initWithBounds:NSMakeRect(100.0, 100.0, 64.0, 64.0)]; + } else if (type == SKASLineNote) { + self = [[SKPDFAnnotationLine alloc] initWithBounds:NSMakeRect(100.0, 100.0, 16.0, 16.0)]; } } } @@ -595,8 +564,8 @@ if (self = [super initWithBounds:bounds]) { NSColor *color = [NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKCircleNoteInteriorColorKey]]; if ([color alphaComponent] > 0.0) - [self setInteriorColor:color]; - [self setColor:[NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKCircleNoteColorKey]]]; + [super setInteriorColor:color]; + originalSetColor(self, @selector(setColor:), [NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKCircleNoteColorKey]]); [[self border] setLineWidth:[[NSUserDefaults standardUserDefaults] floatForKey:SKCircleNoteLineWidthKey]]; [[self border] setDashPattern:[[NSUserDefaults standardUserDefaults] arrayForKey:SKCircleNoteDashPatternKey]]; [[self border] setStyle:[[NSUserDefaults standardUserDefaults] floatForKey:SKCircleNoteLineStyleKey]]; @@ -604,6 +573,15 @@ return self; } +- (id)initWithBounds:(NSRect)bounds dictionary:(NSDictionary *)dict{ + if (self = [self initWithBounds:bounds]) { + NSColor *interiorColor = [dict objectForKey:@"interiorColor"]; + if (interiorColor) + [super setInteriorColor:interiorColor]; + } + return self; +} + - (NSDictionary *)dictionaryValue{ NSMutableDictionary *dict = (NSMutableDictionary *)[super dictionaryValue]; [dict setValue:[self interiorColor] forKey:@"interiorColor"]; @@ -652,8 +630,8 @@ if (self = [super initWithBounds:bounds]) { NSColor *color = [NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKSquareNoteInteriorColorKey]]; if ([color alphaComponent] > 0.0) - [self setInteriorColor:color]; - [self setColor:[NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKSquareNoteColorKey]]]; + [super setInteriorColor:color]; + originalSetColor(self, @selector(setColor:), [NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKSquareNoteColorKey]]); [[self border] setLineWidth:[[NSUserDefaults standardUserDefaults] floatForKey:SKSquareNoteLineWidthKey]]; [[self border] setDashPattern:[[NSUserDefaults standardUserDefaults] arrayForKey:SKSquareNoteDashPatternKey]]; [[self border] setStyle:[[NSUserDefaults standardUserDefaults] floatForKey:SKSquareNoteLineStyleKey]]; @@ -661,6 +639,15 @@ return self; } +- (id)initWithBounds:(NSRect)bounds dictionary:(NSDictionary *)dict{ + if (self = [self initWithBounds:bounds]) { + NSColor *interiorColor = [dict objectForKey:@"interiorColor"]; + if (interiorColor) + [super setInteriorColor:interiorColor]; + } + return self; +} + - (NSDictionary *)dictionaryValue{ NSMutableDictionary *dict = (NSMutableDictionary *)[super dictionaryValue]; [dict setValue:[self interiorColor] forKey:@"interiorColor"]; @@ -745,15 +732,25 @@ return self; } +- (id)initWithBounds:(NSRect)bounds dictionary:(NSDictionary *)dict{ + NSString *type = [dict objectForKey:@"type"]; + int markupType = kPDFMarkupTypeHighlight; + if ([type isEqualToString:@"Underline"]) + markupType = kPDFMarkupTypeUnderline; + else if ([type isEqualToString:@"StrikeOut"]) + markupType = kPDFMarkupTypeStrikeOut; + return [self initWithBounds:bounds markupType:kPDFMarkupTypeHighlight quadrilateralPointsAsStrings:[dict objectForKey:@"quadrilateralPoints"]]; +} + - (id)initWithBounds:(NSRect)bounds markupType:(int)type quadrilateralPointsAsStrings:(NSArray *)pointStrings { if (self = [super initWithBounds:bounds]) { [self setMarkupType:type]; if (type == kPDFMarkupTypeHighlight) - [self setColor:[NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKHighlightNoteColorKey]]]; + originalSetColor(self, @selector(setColor:), [NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKHighlightNoteColorKey]]); else if (type == kPDFMarkupTypeUnderline) - [self setColor:[NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKUnderlineNoteColorKey]]]; + originalSetColor(self, @selector(setColor:), [NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKUnderlineNoteColorKey]]); else if (type == kPDFMarkupTypeStrikeOut) - [self setColor:[NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKStrikeOutNoteColorKey]]]; + originalSetColor(self, @selector(setColor:), [NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKStrikeOutNoteColorKey]]); NSArray *quadPoints = nil; if (pointStrings) { @@ -996,17 +993,29 @@ NSFont *font = [NSFont fontWithName:[[NSUserDefaults standardUserDefaults] stringForKey:SKTextNoteFontNameKey] size:[[NSUserDefaults standardUserDefaults] floatForKey:SKTextNoteFontSizeKey]]; [super setFont:font]; - [super setColor:[NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKFreeTextNoteColorKey]]]; + originalSetColor(self, @selector(setColor:), [NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKFreeTextNoteColorKey]]); PDFBorder *border = [[PDFBorder allocWithZone:[self zone]] init]; [border setLineWidth:[[NSUserDefaults standardUserDefaults] floatForKey:SKFreeTextNoteLineWidthKey]]; [border setDashPattern:[[NSUserDefaults standardUserDefaults] arrayForKey:SKFreeTextNoteDashPatternKey]]; [border setStyle:[[NSUserDefaults standardUserDefaults] floatForKey:SKFreeTextNoteLineStyleKey]]; - [self setBorder:[border lineWidth] > 0.0 ? border : nil]; + originalSetBorder(self, @selector(setBorder:), [border lineWidth] > 0.0 ? border : nil); [border release]; } return self; } +- (id)initWithBounds:(NSRect)bounds dictionary:(NSDictionary *)dict{ + if (self = [self initWithBounds:bounds]) { + NSFont *font = [dict objectForKey:@"font"]; + NSNumber *rotation = [dict objectForKey:@"rotation"]; + if (font) + [super setFont:font]; + if (rotation && [self respondsToSelector:@selector(setRotation:)]) + [self setRotation:[rotation intValue]]; + } + return self; +} + - (NSDictionary *)dictionaryValue{ NSMutableDictionary *dict = (NSMutableDictionary *)[super dictionaryValue]; [dict setValue:[self font] forKey:@"font"]; @@ -1082,8 +1091,8 @@ - (id)initWithBounds:(NSRect)bounds { if (self = [super initWithBounds:bounds]) { - [self setColor:[NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKAnchoredNoteColorKey]]]; - [self setIconType:[[NSUserDefaults standardUserDefaults] integerForKey:SKAnchoredNoteIconTypeKey]]; + originalSetColor(self, @selector(setColor:), [NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKAnchoredNoteColorKey]]); + [super setIconType:[[NSUserDefaults standardUserDefaults] integerForKey:SKAnchoredNoteIconTypeKey]]; texts = [[NSArray alloc] initWithObjects:[[[SKNoteText alloc] initWithAnnotation:self] autorelease], nil]; textStorage = [[NSTextStorage allocWithZone:[self zone]] init]; [textStorage setDelegate:self]; @@ -1092,6 +1101,21 @@ return self; } +- (id)initWithBounds:(NSRect)bounds dictionary:(NSDictionary *)dict{ + if (self = [self initWithBounds:bounds]) { + NSAttributedString *aText = [dict objectForKey:@"text"]; + NSImage *anImage = [dict objectForKey:@"image"]; + NSNumber *iconType = [dict objectForKey:@"iconType"]; + if (anImage) + image = [anImage retain]; + if (aText) + [textStorage replaceCharactersInRange:NSMakeRange(0, [textStorage length]) withAttributedString:aText]; + if (iconType) + [super setIconType:[iconType intValue]]; + } + return self; +} + - (void)dealloc { [textStorage release]; [text release]; @@ -1255,7 +1279,7 @@ - (id)initWithBounds:(NSRect)bounds { if (self = [super initWithBounds:bounds]) { - [super setColor:[NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKLineNoteColorKey]]]; + originalSetColor(self, @selector(setColor:), [NSUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] dataForKey:SKLineNoteColorKey]]); [super setStartLineStyle:[[NSUserDefaults standardUserDefaults] integerForKey:SKLineNoteStartLineStyleKey]]; [super setEndLineStyle:[[NSUserDefaults standardUserDefaults] integerForKey:SKLineNoteEndLineStyleKey]]; [super setStartPoint:NSMakePoint(0.5, 0.5)]; @@ -1264,12 +1288,29 @@ [border setLineWidth:[[NSUserDefaults standardUserDefaults] floatForKey:SKLineNoteLineWidthKey]]; [border setDashPattern:[[NSUserDefaults standardUserDefaults] arrayForKey:SKLineNoteDashPatternKey]]; [border setStyle:[[NSUserDefaults standardUserDefaults] floatForKey:SKLineNoteLineStyleKey]]; - [self setBorder:[border lineWidth] > 0.0 ? border : nil]; + originalSetBounds(self, @selector(setBorder:), [border lineWidth] > 0.0 ? border : nil); [border release]; } return self; } +- (id)initWithBounds:(NSRect)bounds dictionary:(NSDictionary *)dict{ + if (self = [self initWithBounds:bounds]) { + NSString *point; + NSNumber *startLineStyle = [dict objectForKey:@"startLineStyle"]; + NSNumber *endLineStyle = [dict objectForKey:@"endLineStyle"]; + if (point = [dict objectForKey:@"startPoint"]) + [super setStartPoint:NSPointFromString(point)]; + if (point = [dict objectForKey:@"endPoint"]) + [super setEndPoint:NSPointFromString(point)]; + if (startLineStyle) + [super setStartLineStyle:[startLineStyle intValue]]; + if (endLineStyle) + [super setEndLineStyle:[endLineStyle intValue]]; + } + return self; +} + - (NSDictionary *)dictionaryValue { NSMutableDictionary *dict = (NSMutableDictionary *)[super dictionaryValue]; [dict setValue:[NSNumber numberWithInt:[self startLineStyle]] forKey:@"startLineStyle"]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-10 12:01:32
|
Revision: 2464 http://skim-app.svn.sourceforge.net/skim-app/?rev=2464&view=rev Author: hofman Date: 2007-07-10 05:01:27 -0700 (Tue, 10 Jul 2007) Log Message: ----------- Move some setup from the main controller to the side windows. Modified Paths: -------------- trunk/SKMainWindowController.m trunk/SKSideWindow.m Modified: trunk/SKMainWindowController.m =================================================================== --- trunk/SKMainWindowController.m 2007-07-10 10:00:44 UTC (rev 2463) +++ trunk/SKMainWindowController.m 2007-07-10 12:01:27 UTC (rev 2464) @@ -1723,18 +1723,12 @@ if ([[mainWindow firstResponder] isDescendantOf:leftSideBox]) [mainWindow makeFirstResponder:nil]; - [leftSideBox retain]; // leftSideBox is removed from its old superview in the process [leftSideWindow setMainView:leftSideBox]; - [leftSideBox release]; - [leftSideWindow recalculateKeyViewLoop]; [leftSideWindow setInitialFirstResponder:searchField]; if ([[mainWindow firstResponder] isDescendantOf:rightSideBox]) [mainWindow makeFirstResponder:nil]; - [rightSideBox retain]; [rightSideWindow setMainView:rightSideBox]; - [rightSideBox release]; - [rightSideWindow recalculateKeyViewLoop]; [leftSideEdgeView setEdges:BDSKNoEdgeMask]; [rightSideEdgeView setEdges:BDSKNoEdgeMask]; Modified: trunk/SKSideWindow.m =================================================================== --- trunk/SKSideWindow.m 2007-07-10 10:00:44 UTC (rev 2463) +++ trunk/SKSideWindow.m 2007-07-10 12:01:27 UTC (rev 2464) @@ -137,10 +137,13 @@ - (void)setMainView:(NSView *)newContentView { NSView *contentView = [[self contentView] contentView]; [newContentView setFrame:[contentView bounds]]; + [newContentView retain]; if ([[contentView subviews] count]) [contentView replaceSubview:[[contentView subviews] objectAtIndex:0] with:newContentView]; else [contentView addSubview:newContentView]; + [newContentView release]; + [self recalculateKeyViewLoop]; } - (NSRectEdge)edge { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-10 10:00:45
|
Revision: 2463 http://skim-app.svn.sourceforge.net/skim-app/?rev=2463&view=rev Author: hofman Date: 2007-07-10 03:00:44 -0700 (Tue, 10 Jul 2007) Log Message: ----------- Hide snapshot and note windows in full screen mode on deactivate. Modified Paths: -------------- trunk/SKNoteWindowController.m trunk/SKSnapshotWindowController.m Modified: trunk/SKNoteWindowController.m =================================================================== --- trunk/SKNoteWindowController.m 2007-07-09 21:55:09 UTC (rev 2462) +++ trunk/SKNoteWindowController.m 2007-07-10 10:00:44 UTC (rev 2463) @@ -82,7 +82,7 @@ - (void)windowDidLoad { [[self window] setBackgroundColor:[NSColor colorWithCalibratedWhite:0.9 alpha:1.0]]; [[self window] setLevel:keepOnTop || forceOnTop ? NSFloatingWindowLevel : NSNormalWindowLevel]; - [[self window] setHidesOnDeactivate:keepOnTop]; + [[self window] setHidesOnDeactivate:keepOnTop || forceOnTop]; [self setWindowFrameAutosaveNameOrCascade:SKNoteWindowFrameAutosaveName]; @@ -128,7 +128,7 @@ - (void)setKeepOnTop:(BOOL)flag { keepOnTop = flag; [[self window] setLevel:keepOnTop || forceOnTop ? NSFloatingWindowLevel : NSNormalWindowLevel]; - [[self window] setHidesOnDeactivate:keepOnTop]; + [[self window] setHidesOnDeactivate:keepOnTop || forceOnTop]; } - (BOOL)forceOnTop { @@ -138,6 +138,7 @@ - (void)setForceOnTop:(BOOL)flag { forceOnTop = flag; [[self window] setLevel:keepOnTop || forceOnTop ? NSFloatingWindowLevel : NSNormalWindowLevel]; + [[self window] setHidesOnDeactivate:keepOnTop || forceOnTop]; } - (void)objectDidBeginEditing:(id)editor { Modified: trunk/SKSnapshotWindowController.m =================================================================== --- trunk/SKSnapshotWindowController.m 2007-07-09 21:55:09 UTC (rev 2462) +++ trunk/SKSnapshotWindowController.m 2007-07-10 10:00:44 UTC (rev 2463) @@ -66,7 +66,7 @@ - (void)windowDidLoad { BOOL keepOnTop = [[NSUserDefaults standardUserDefaults] boolForKey:SKSnapshotsOnTopKey]; [[self window] setLevel:keepOnTop || forceOnTop ? NSFloatingWindowLevel : NSNormalWindowLevel]; - [[self window] setHidesOnDeactivate:keepOnTop]; + [[self window] setHidesOnDeactivate:keepOnTop || forceOnTop]; [self setWindowFrameAutosaveNameOrCascade:SKSnapshotWindowFrameAutosaveName]; [[self window] makeFirstResponder:pdfView]; [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKey:SKSnapshotsOnTopKey]; @@ -283,6 +283,7 @@ forceOnTop = flag; BOOL keepOnTop = [[NSUserDefaults standardUserDefaults] boolForKey:SKSnapshotsOnTopKey]; [[self window] setLevel:keepOnTop || forceOnTop ? NSFloatingWindowLevel : NSNormalWindowLevel]; + [[self window] setHidesOnDeactivate:keepOnTop || forceOnTop]; } - (NSDictionary *)currentSetup { @@ -425,7 +426,7 @@ if ([key isEqualToString:SKSnapshotsOnTopKey]) { BOOL keepOnTop = [[NSUserDefaults standardUserDefaults] boolForKey:SKSnapshotsOnTopKey]; [[self window] setLevel:keepOnTop || forceOnTop ? NSFloatingWindowLevel : NSNormalWindowLevel]; - [[self window] setHidesOnDeactivate:keepOnTop]; + [[self window] setHidesOnDeactivate:keepOnTop || forceOnTop]; } } else { [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-09 21:55:11
|
Revision: 2462 http://skim-app.svn.sourceforge.net/skim-app/?rev=2462&view=rev Author: hofman Date: 2007-07-09 14:55:09 -0700 (Mon, 09 Jul 2007) Log Message: ----------- Add clip rather than set clip. Modified Paths: -------------- trunk/SKLineWell.m Modified: trunk/SKLineWell.m =================================================================== --- trunk/SKLineWell.m 2007-07-09 18:33:49 UTC (rev 2461) +++ trunk/SKLineWell.m 2007-07-09 21:55:09 UTC (rev 2462) @@ -293,7 +293,7 @@ [[NSColor controlBackgroundColor] setFill]; NSRectFill(rect); - NSRectClip(rect); + [[NSBezierPath bezierPathWithRect:rect] addClip]; [[NSColor blackColor] setStroke]; [[self path] stroke]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-09 18:33:51
|
Revision: 2461 http://skim-app.svn.sourceforge.net/skim-app/?rev=2461&view=rev Author: hofman Date: 2007-07-09 11:33:49 -0700 (Mon, 09 Jul 2007) Log Message: ----------- Revert an earlier commit. Selections apply to all pages. Either all pages are used (e.g. for cropping), or the current page is used (for copying and cropping). Modified Paths: -------------- trunk/SKPDFView.h trunk/SKPDFView.m Modified: trunk/SKPDFView.h =================================================================== --- trunk/SKPDFView.h 2007-07-09 18:20:59 UTC (rev 2460) +++ trunk/SKPDFView.h 2007-07-09 18:33:49 UTC (rev 2461) @@ -72,12 +72,6 @@ SKLineNote } SKNoteType; -// selection tool state -typedef struct _SKPageImageSelection { - PDFPage *page; // source page for the selection (not retained) - NSRect rect; // rect in page coordinates -} SKPageImageSelection; - @class SKReadingBar; @interface SKPDFView : PDFView { @@ -98,12 +92,12 @@ PDFAnnotation *highlightAnnotation; PDFAnnotationTextWidget *editAnnotation; PDFSelection *wasSelection; - NSRect wasBounds; // page coordinates - NSPoint wasStartPoint; // page coordinates - NSPoint wasEndPoint; // page coordinates - NSPoint mouseDownLoc; // window coordinates - NSPoint clickDelta; // page coordinates - SKPageImageSelection imageSelection; + NSRect wasBounds; + NSPoint wasStartPoint; + NSPoint wasEndPoint; + NSPoint mouseDownLoc; + NSPoint clickDelta; + NSRect selectionRect; float magnification; BOOL resizingAnnotation; BOOL draggingAnnotation; Modified: trunk/SKPDFView.m =================================================================== --- trunk/SKPDFView.m 2007-07-09 18:20:59 UTC (rev 2460) +++ trunk/SKPDFView.m 2007-07-09 18:33:49 UTC (rev 2461) @@ -168,8 +168,7 @@ wasEndPoint = NSZeroPoint; mouseDownLoc = NSZeroPoint; clickDelta = NSZeroPoint; - imageSelection.rect = NSZeroRect; - imageSelection.page = nil; + selectionRect = NSZeroRect; magnification = 0.0; resizingAnnotation = NO; draggingAnnotation = NO; @@ -365,34 +364,28 @@ } } - // @@ when is this true? - if (toolMode != SKSelectToolMode && NSIsEmptyRect(imageSelection.rect) == NO) { - NSRect rect = NSInsetRect([self convertRect:imageSelection.rect toPage:imageSelection.page], 0.5, 0.5); + if (toolMode != SKSelectToolMode && NSIsEmptyRect(selectionRect) == NO) { + NSRect rect = NSInsetRect([self convertRect:selectionRect toPage:pdfPage], 0.5, 0.5); float color[4] = { 0.0, 0.0, 0.0, 1.0 }; CGContextSetStrokeColor(context, color); CGContextStrokeRect(context, *(CGRect *)&rect); - } else if (toolMode == SKSelectToolMode && (didDrag || NSEqualRects(imageSelection.rect, NSZeroRect) == NO)) { + } else if (toolMode == SKSelectToolMode && (didDrag || NSEqualRects(selectionRect, NSZeroRect) == NO)) { NSRect bounds = [pdfPage boundsForBox:[self displayBox]]; float color[4] = { 0.0, 0.0, 0.0, 0.6 }; float radius = 4.0 / [self scaleFactor]; CGContextBeginPath(context); CGContextAddRect(context, *(CGRect *)&bounds); - // only draw the selection box on the originally selected page - if ([imageSelection.page isEqual:pdfPage]) - CGContextAddRect(context, *(CGRect *)&imageSelection.rect); + CGContextAddRect(context, *(CGRect *)&selectionRect); CGContextSetFillColor(context, color); CGContextEOFillPath(context); - - if ([imageSelection.page isEqual:pdfPage]) { - SKCGContextDrawGrabHandle(context, CGPointMake(NSMinX(imageSelection.rect), NSMinY(imageSelection.rect)), radius); - SKCGContextDrawGrabHandle(context, CGPointMake(NSMinX(imageSelection.rect), NSMaxY(imageSelection.rect)), radius); - SKCGContextDrawGrabHandle(context, CGPointMake(NSMaxX(imageSelection.rect), NSMinY(imageSelection.rect)), radius); - SKCGContextDrawGrabHandle(context, CGPointMake(NSMaxX(imageSelection.rect), NSMaxY(imageSelection.rect)), radius); - SKCGContextDrawGrabHandle(context, CGPointMake(NSMinX(imageSelection.rect), NSMidY(imageSelection.rect)), radius); - SKCGContextDrawGrabHandle(context, CGPointMake(NSMaxX(imageSelection.rect), NSMidY(imageSelection.rect)), radius); - SKCGContextDrawGrabHandle(context, CGPointMake(NSMidX(imageSelection.rect), NSMinY(imageSelection.rect)), radius); - SKCGContextDrawGrabHandle(context, CGPointMake(NSMidX(imageSelection.rect), NSMaxY(imageSelection.rect)), radius); - } + SKCGContextDrawGrabHandle(context, CGPointMake(NSMinX(selectionRect), NSMinY(selectionRect)), radius); + SKCGContextDrawGrabHandle(context, CGPointMake(NSMinX(selectionRect), NSMaxY(selectionRect)), radius); + SKCGContextDrawGrabHandle(context, CGPointMake(NSMaxX(selectionRect), NSMinY(selectionRect)), radius); + SKCGContextDrawGrabHandle(context, CGPointMake(NSMaxX(selectionRect), NSMaxY(selectionRect)), radius); + SKCGContextDrawGrabHandle(context, CGPointMake(NSMinX(selectionRect), NSMidY(selectionRect)), radius); + SKCGContextDrawGrabHandle(context, CGPointMake(NSMaxX(selectionRect), NSMidY(selectionRect)), radius); + SKCGContextDrawGrabHandle(context, CGPointMake(NSMidX(selectionRect), NSMinY(selectionRect)), radius); + SKCGContextDrawGrabHandle(context, CGPointMake(NSMidX(selectionRect), NSMaxY(selectionRect)), radius); } CGContextRestoreGState(context); @@ -429,8 +422,7 @@ - (void)setDocument:(PDFDocument *)document { [readingBar release]; readingBar = nil; - imageSelection.rect = NSZeroRect; - imageSelection.page = nil; + selectionRect = NSZeroRect; [self removeHoverRects]; [[SKPDFHoverWindow sharedHoverWindow] orderOut:self]; [super setDocument:document]; @@ -450,9 +442,8 @@ [self setActiveAnnotation:nil]; if ([self currentSelection]) [self setCurrentSelection:nil]; - } else if (toolMode == SKSelectToolMode && NSEqualRects(imageSelection.rect, NSZeroRect) == NO) { - imageSelection.rect = NSZeroRect; - imageSelection.page = nil; + } else if (toolMode == SKSelectToolMode && NSEqualRects(selectionRect, NSZeroRect) == NO) { + selectionRect = NSZeroRect; [self setNeedsDisplay:YES]; } @@ -507,16 +498,15 @@ - (NSRect)currentSelectionRect { if (toolMode == SKSelectToolMode) - return imageSelection.rect; + return selectionRect; return NSZeroRect; } - (void)setCurrentSelectionRect:(NSRect)rect { if (toolMode == SKSelectToolMode) { - if (NSEqualRects(imageSelection.rect, rect) == NO) + if (NSEqualRects(selectionRect, rect) == NO) [self setNeedsDisplay:YES]; - imageSelection.rect = rect; - imageSelection.page = [self currentPage]; + selectionRect = rect; } } @@ -588,10 +578,10 @@ [types addObject:SKSkimNotePboardType]; } - if (toolMode == SKSelectToolMode && NSIsEmptyRect(imageSelection.rect) == NO) { - NSRect selRect = NSIntegralRect(imageSelection.rect); + if (toolMode == SKSelectToolMode && NSIsEmptyRect(selectionRect) == NO) { + NSRect selRect = NSIntegralRect(selectionRect); - PDFDocument *pdfDoc = [[PDFDocument alloc] initWithData:[imageSelection.page dataRepresentation]]; + PDFDocument *pdfDoc = [[PDFDocument alloc] initWithData:[[self currentPage] dataRepresentation]]; PDFPage *page = [pdfDoc pageAtIndex:0]; [page setBounds:[[self currentPage] boundsForBox:kPDFDisplayBoxMediaBox] forBox:kPDFDisplayBoxMediaBox]; [page setBounds:selRect forBox:kPDFDisplayBoxCropBox]; @@ -603,9 +593,9 @@ [types addObject:NSPDFPboardType]; [pdfDoc release]; - NSRect bounds = [imageSelection.page boundsForBox:[self displayBox]]; + NSRect bounds = [[self currentPage] boundsForBox:[self displayBox]]; NSRect targetRect = NSZeroRect, sourceRect = selRect; - NSImage *pageImage = [imageSelection.page imageForBox:[self displayBox]]; + NSImage *pageImage = [[self currentPage] imageForBox:[self displayBox]]; NSImage *image = nil; sourceRect.origin.x -= NSMinX(bounds); @@ -622,7 +612,7 @@ /* Possible hidden default? Alternate way of getting a bitmap rep; this varies resolution with zoom level, which is very useful if you want to copy a single figure or equation for a non-PDF-capable program. The first copy: action has some odd behavior, though (view moves). Preview produces a fixed resolution bitmap for a given selection area regardless of zoom. - sourceRect = [self convertRect:imageSelection.rect fromPage:[self currentPage]]; + sourceRect = [self convertRect:selectionRect fromPage:[self currentPage]]; NSBitmapImageRep *imageRep = [self bitmapImageRepForCachingDisplayInRect:sourceRect]; [self cacheDisplayInRect:sourceRect toBitmapImageRep:imageRep]; tiffData = [imageRep TIFFRepresentation]; @@ -766,8 +756,7 @@ - (IBAction)autoSelectContent:(id)sender { if (toolMode == SKSelectToolMode) { PDFPage *page = [self currentPage]; - imageSelection.rect = NSIntersectionRect(NSUnionRect([page foregroundBox], imageSelection.rect), [page boundsForBox:[self displayBox]]); - imageSelection.page = page; + selectionRect = NSIntersectionRect(NSUnionRect([page foregroundBox], selectionRect), [page boundsForBox:[self displayBox]]); [[NSNotificationCenter defaultCenter] postNotificationName:SKPDFViewSelectionChangedNotification object:self]; [self setNeedsDisplay:YES]; } @@ -891,10 +880,9 @@ case SKTextToolMode: case SKNoteToolMode: if (mouseDownInAnnotation) { - if (nil == activeAnnotation && NSIsEmptyRect(imageSelection.rect) == NO) { - [self setNeedsDisplayInRect:imageSelection.rect]; - imageSelection.rect = NSZeroRect; - imageSelection.page = nil; + if (nil == activeAnnotation && NSIsEmptyRect(selectionRect) == NO) { + [self setNeedsDisplayInRect:selectionRect]; + selectionRect = NSZeroRect; [[NSNotificationCenter defaultCenter] postNotificationName:SKPDFViewSelectionChangedNotification object:self]; } else if ([[activeAnnotation type] isEqualToString:@"Link"]) { NSPoint p = [self convertPoint:[theEvent locationInWindow] fromView:nil]; @@ -1190,7 +1178,7 @@ if ([[menu itemAtIndex:0] isSeparatorItem]) [menu removeItemAtIndex:0]; - } else if ((toolMode == SKSelectToolMode && NSIsEmptyRect(imageSelection.rect) == NO) || ([self toolMode] == SKTextToolMode && [self currentSelection] && [self hideNotes])) { + } else if ((toolMode == SKSelectToolMode && NSIsEmptyRect(selectionRect) == NO) || ([self toolMode] == SKTextToolMode && [self currentSelection] && [self hideNotes])) { [menu insertItem:[NSMenuItem separatorItem] atIndex:0]; @@ -1789,8 +1777,8 @@ PDFPage *page = nil; NSRect rect = NSZeroRect; - if (toolMode == SKSelectToolMode && NSIsEmptyRect(imageSelection.rect) == NO) { - rect = NSIntersectionRect(imageSelection.rect, [[self currentPage] boundsForBox:kPDFDisplayBoxCropBox]); + if (toolMode == SKSelectToolMode && NSIsEmptyRect(selectionRect) == NO) { + rect = NSIntersectionRect(selectionRect, [[self currentPage] boundsForBox:kPDFDisplayBoxCropBox]); page = [self currentPage]; } if (NSIsEmptyRect(rect)) { @@ -1885,7 +1873,7 @@ return YES; if ([activeAnnotation isNoteAnnotation] && [activeAnnotation isMovable]) return YES; - if (toolMode == SKSelectToolMode && NSIsEmptyRect(imageSelection.rect) == NO) + if (toolMode == SKSelectToolMode && NSIsEmptyRect(selectionRect) == NO) return YES; return NO; } else if (action == @selector(autoSelectContent:)) { @@ -2788,8 +2776,7 @@ PDFPage *page = [self pageForPoint:mouseLoc nearest:NO]; if (page == nil) { - imageSelection.rect = NSZeroRect; - imageSelection.page = nil; + selectionRect = NSZeroRect; [[NSNotificationCenter defaultCenter] postNotificationName:SKPDFViewSelectionChangedNotification object:self]; [self setNeedsDisplay:YES]; return; @@ -2799,30 +2786,30 @@ float margin = 4.0 / [self scaleFactor]; int xEdge = 0, yEdge = 0; - if (NSIsEmptyRect(imageSelection.rect) || NSPointInRect(initialPoint, NSInsetRect(imageSelection.rect, -margin, -margin)) == NO) { - if (NSIsEmptyRect(imageSelection.rect)) { + if (NSIsEmptyRect(selectionRect) || NSPointInRect(initialPoint, NSInsetRect(selectionRect, -margin, -margin)) == NO) { + if (NSIsEmptyRect(selectionRect)) { didDrag = NO; } else { [self setNeedsDisplay:YES]; didDrag = YES; } - imageSelection.rect.origin = initialPoint; - imageSelection.rect.size = NSZeroSize; + selectionRect.origin = initialPoint; + selectionRect.size = NSZeroSize; xEdge = 1; yEdge = 1; } else { - if (initialPoint.x > NSMaxX(imageSelection.rect) - margin) + if (initialPoint.x > NSMaxX(selectionRect) - margin) xEdge = 1; - else if (initialPoint.x < NSMinX(imageSelection.rect) + margin) + else if (initialPoint.x < NSMinX(selectionRect) + margin) xEdge = 2; - if (initialPoint.y > NSMaxY(imageSelection.rect) - margin) + if (initialPoint.y > NSMaxY(selectionRect) - margin) yEdge = 1; - else if (initialPoint.y < NSMinY(imageSelection.rect) + margin) + else if (initialPoint.y < NSMinY(selectionRect) + margin) yEdge = 2; didDrag = YES; } - NSRect initialRect = imageSelection.rect; + NSRect initialRect = selectionRect; NSRect pageBounds = [page boundsForBox:[self displayBox]]; if (xEdge == 0 && yEdge == 0) @@ -2887,7 +2874,7 @@ float maxY = fmax(fmin(NSMaxY(newRect), NSMaxY(pageBounds)), NSMinY(pageBounds)); newRect = NSMakeRect(minX, minY, maxX - minX, maxY - minY); if (didDrag) { - NSRect dirtyRect = NSUnionRect(NSInsetRect(imageSelection.rect, -margin, -margin), NSInsetRect(newRect, -margin, -margin)); + NSRect dirtyRect = NSUnionRect(NSInsetRect(selectionRect, -margin, -margin), NSInsetRect(newRect, -margin, -margin)); NSRange r = [self visiblePageIndexRange]; unsigned int i; for (i = r.location; i < NSMaxRange(r); i++) @@ -2896,16 +2883,14 @@ [self setNeedsDisplay:YES]; didDrag = YES; } - imageSelection.rect = newRect; - imageSelection.page = page; + selectionRect = newRect; [[NSNotificationCenter defaultCenter] postNotificationName:SKPDFViewSelectionChangedNotification object:self]; } didDrag = NO; - if (NSIsEmptyRect(imageSelection.rect)) { - imageSelection.rect = NSZeroRect; - imageSelection.page = nil; + if (NSIsEmptyRect(selectionRect)) { + selectionRect = NSZeroRect; [[NSNotificationCenter defaultCenter] postNotificationName:SKPDFViewSelectionChangedNotification object:self]; [self setNeedsDisplay:YES]; } @@ -2972,8 +2957,11 @@ // how to handle multipage selection? Preview.app's behavior is screwy as well, so we'll do the same thing NSRect selRect = NSMakeRect(fmin(p2.x, p1.x), fmin(p2.y, p1.y), fabs(p2.x - p1.x), fabs(p2.y - p1.y)); sel = [page1 selectionForRect:selRect]; + if (NSIsEmptyRect(selectionRect) == NO) + [self setNeedsDisplayInRect:selectionRect]; + selectionRect = NSIntegralRect([self convertRect:selRect fromPage:page1]); [[NSNotificationCenter defaultCenter] postNotificationName:SKPDFViewSelectionChangedNotification object:self]; - [self setNeedsDisplayInRect:selRect]; + [self setNeedsDisplayInRect:selectionRect]; [[self window] flushWindow]; } else if (extendSelection) { sel = [[self document] selectionByExtendingSelection:wasSelection toPage:page2 atPoint:p2]; @@ -3322,9 +3310,9 @@ float margin = 4.0 / [self scaleFactor]; PDFPage *page = [self pageForPoint:p nearest:NO]; p = [self convertPoint:p toPage:page]; - if (NSPointInRect(p, NSInsetRect(imageSelection.rect, -margin, -margin)) == NO) + if (NSPointInRect(p, NSInsetRect(selectionRect, -margin, -margin)) == NO) cursor = [NSCursor crosshairCursor]; - else if (NSPointInRect(p, NSInsetRect(imageSelection.rect, margin, margin))) + else if (NSPointInRect(p, NSInsetRect(selectionRect, margin, margin))) cursor = [NSCursor openHandCursor]; else cursor = [NSCursor arrowCursor]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-09 18:21:08
|
Revision: 2460 http://skim-app.svn.sourceforge.net/skim-app/?rev=2460&view=rev Author: hofman Date: 2007-07-09 11:20:59 -0700 (Mon, 09 Jul 2007) Log Message: ----------- We use several application support paths, so cache them in a dictionary rather than a single variable. Modified Paths: -------------- trunk/SKApplicationController.m Modified: trunk/SKApplicationController.m =================================================================== --- trunk/SKApplicationController.m 2007-07-09 17:53:30 UTC (rev 2459) +++ trunk/SKApplicationController.m 2007-07-09 18:20:59 UTC (rev 2460) @@ -343,8 +343,12 @@ } - (NSString *)applicationSupportPathForDomain:(int)domain create:(BOOL)create { - static NSString *path = nil; + static CFMutableDictionaryRef pathDict = nil; + if (pathDict == nil) + pathDict = CFDictionaryCreateMutable(NULL, 3, NULL, &kCFTypeDictionaryValueCallBacks); + NSString *path = (NSString *)CFDictionaryGetValue(pathDict, (void *)domain); + if (path == nil) { FSRef foundRef; OSStatus err = noErr; @@ -368,8 +372,10 @@ if(appName == nil) [NSException raise:NSObjectNotAvailableException format:NSLocalizedString(@"Unable to find CFBundleIdentifier for %@", @"Exception message"), [NSApp description]]; - path = [[path stringByAppendingPathComponent:appName] copy]; + path = [path stringByAppendingPathComponent:appName]; + CFDictionarySetValue(pathDict, (void *)domain, (void *)path); + // the call to FSFindFolder creates the parent hierarchy, but not the directory we're looking for static BOOL dirExists = NO; if (dirExists == NO && create) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-07-09 17:53:31
|
Revision: 2459 http://skim-app.svn.sourceforge.net/skim-app/?rev=2459&view=rev Author: hofman Date: 2007-07-09 10:53:30 -0700 (Mon, 09 Jul 2007) Log Message: ----------- Reimplement printing from Apple events, as we don't use the standard NSDocument path for printing, but leave it to PDFView instead. Modified Paths: -------------- trunk/SKDocument.m trunk/Skim.sdef Modified: trunk/SKDocument.m =================================================================== --- trunk/SKDocument.m 2007-07-09 17:50:15 UTC (rev 2458) +++ trunk/SKDocument.m 2007-07-09 17:53:30 UTC (rev 2459) @@ -1065,6 +1065,35 @@ return nil; } +- (id)handlePrintScriptCommand:(NSScriptCommand *)command { + NSDictionary *args = [command evaluatedArguments]; + id settings = [args objectForKey:@"PrintSettings"]; + // PDFView does not allow printing without showing the dialog, so we just ignore that setting + + NSPrintInfo *printInfo = [self printInfo]; + + if ([settings isKindOfClass:[NSDictionary class]]) { + settings = [[settings mutableCopy] autorelease]; + id value; + if (value = [settings objectForKey:NSPrintDetailedErrorReporting]) + [settings setObject:[NSNumber numberWithBool:[value intValue] == 'lwdt'] forKey:NSPrintDetailedErrorReporting]; + if ((value = [settings objectForKey:NSPrintPrinterName]) && (value = [NSPrinter printerWithName:value])) + [settings setObject:value forKey:NSPrintPrinter]; + if ([settings objectForKey:NSPrintFirstPage] || [settings objectForKey:NSPrintLastPage]) { + [settings setObject:[NSNumber numberWithBool:NO] forKey:NSPrintAllPages]; + if ([settings objectForKey:NSPrintFirstPage] == nil) + [settings setObject:[NSNumber numberWithInt:1] forKey:NSPrintLastPage]; + if ([settings objectForKey:NSPrintLastPage] == nil) + [settings setObject:[NSNumber numberWithInt:[[self pdfDocument] pageCount]] forKey:NSPrintLastPage]; + } + [[printInfo dictionary] addEntriesFromDictionary:settings]; + } + + [[self pdfView] printWithInfo:printInfo autoRotate:NO]; + + return nil; +} + - (id)handleRevertScriptCommand:(NSScriptCommand *)command { if ([self fileURL] && [[NSFileManager defaultManager] fileExistsAtPath:[self fileName]]) { if ([self revertToContentsOfURL:[self fileURL] ofType:[self fileType] error:NULL] == NO) { Modified: trunk/Skim.sdef =================================================================== --- trunk/Skim.sdef 2007-07-09 17:50:15 UTC (rev 2458) +++ trunk/Skim.sdef 2007-07-09 17:53:30 UTC (rev 2459) @@ -49,7 +49,7 @@ <responds-to name="open"> <cocoa method="handleOpenScriptCommand:"/> </responds-to> - <responds-to name="print" hidden="yes"> + <responds-to name="print"> <cocoa method="handlePrintScriptCommand:"/> </responds-to> <responds-to name="quit"> @@ -112,7 +112,7 @@ <responds-to name="close"> <cocoa method="handleCloseScriptCommand:"/> </responds-to> - <responds-to name="print" hidden="yes"> + <responds-to name="print"> <cocoa method="handlePrintScriptCommand:"/> </responds-to> <responds-to name="save"> @@ -196,7 +196,7 @@ <responds-to name="close"> <cocoa method="handleCloseScriptCommand:"/> </responds-to> - <responds-to name="print" hidden="yes"> + <responds-to name="print"> <cocoa method="handlePrintScriptCommand:"/> </responds-to> <responds-to name="save"> @@ -271,7 +271,7 @@ description="print a detailed report of PostScript errors"/> </enumeration> - <record-type name="print settings" hidden="yes" code="pset"> + <record-type name="print settings" code="pset"> <property name="copies" code="lwcp" type="integer" description="the number of copies of a document to be printed"> <cocoa key="NSCopies"/> @@ -310,18 +310,18 @@ </property> </record-type> - <command name="print" code="aevtpdoc" hidden="yes" + <command name="print" code="aevtpdoc" description="Print a document."> - <direct-parameter hidden="yes" + <direct-parameter description="The file(s), document(s), or window(s) to be printed."> <type type="file" list="yes"/> <type type="specifier"/> </direct-parameter> - <parameter name="with properties" code="prdt" type="print settings" optional="yes" hidden="yes" + <parameter name="with properties" code="prdt" type="print settings" optional="yes" description="The print settings to use."> <cocoa key="PrintSettings"/> </parameter> - <parameter name="print dialog" code="pdlg" type="boolean" optional="yes" hidden="yes" + <parameter name="print dialog" code="pdlg" type="boolean" optional="yes" description="Should the application show the print dialog?"> <cocoa key="ShowPrintDialog"/> </parameter> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ama...@us...> - 2007-07-09 17:50:17
|
Revision: 2458 http://skim-app.svn.sourceforge.net/skim-app/?rev=2458&view=rev Author: amaxwell Date: 2007-07-09 10:50:15 -0700 (Mon, 09 Jul 2007) Log Message: ----------- Keep track of the page for selection rects, so it's obvious which selection is actually being copied in continuous page mode. Add comments in header on coordinate space used for geometry types. Modified Paths: -------------- trunk/SKPDFView.h trunk/SKPDFView.m Modified: trunk/SKPDFView.h =================================================================== --- trunk/SKPDFView.h 2007-07-09 16:46:29 UTC (rev 2457) +++ trunk/SKPDFView.h 2007-07-09 17:50:15 UTC (rev 2458) @@ -72,6 +72,12 @@ SKLineNote } SKNoteType; +// selection tool state +typedef struct _SKPageImageSelection { + PDFPage *page; // source page for the selection (not retained) + NSRect rect; // rect in page coordinates +} SKPageImageSelection; + @class SKReadingBar; @interface SKPDFView : PDFView { @@ -92,12 +98,12 @@ PDFAnnotation *highlightAnnotation; PDFAnnotationTextWidget *editAnnotation; PDFSelection *wasSelection; - NSRect wasBounds; - NSPoint wasStartPoint; - NSPoint wasEndPoint; - NSPoint mouseDownLoc; - NSPoint clickDelta; - NSRect selectionRect; + NSRect wasBounds; // page coordinates + NSPoint wasStartPoint; // page coordinates + NSPoint wasEndPoint; // page coordinates + NSPoint mouseDownLoc; // window coordinates + NSPoint clickDelta; // page coordinates + SKPageImageSelection imageSelection; float magnification; BOOL resizingAnnotation; BOOL draggingAnnotation; Modified: trunk/SKPDFView.m =================================================================== --- trunk/SKPDFView.m 2007-07-09 16:46:29 UTC (rev 2457) +++ trunk/SKPDFView.m 2007-07-09 17:50:15 UTC (rev 2458) @@ -168,7 +168,8 @@ wasEndPoint = NSZeroPoint; mouseDownLoc = NSZeroPoint; clickDelta = NSZeroPoint; - selectionRect = NSZeroRect; + imageSelection.rect = NSZeroRect; + imageSelection.page = nil; magnification = 0.0; resizingAnnotation = NO; draggingAnnotation = NO; @@ -364,28 +365,34 @@ } } - if (toolMode != SKSelectToolMode && NSIsEmptyRect(selectionRect) == NO) { - NSRect rect = NSInsetRect([self convertRect:selectionRect toPage:pdfPage], 0.5, 0.5); + // @@ when is this true? + if (toolMode != SKSelectToolMode && NSIsEmptyRect(imageSelection.rect) == NO) { + NSRect rect = NSInsetRect([self convertRect:imageSelection.rect toPage:imageSelection.page], 0.5, 0.5); float color[4] = { 0.0, 0.0, 0.0, 1.0 }; CGContextSetStrokeColor(context, color); CGContextStrokeRect(context, *(CGRect *)&rect); - } else if (toolMode == SKSelectToolMode && (didDrag || NSEqualRects(selectionRect, NSZeroRect) == NO)) { + } else if (toolMode == SKSelectToolMode && (didDrag || NSEqualRects(imageSelection.rect, NSZeroRect) == NO)) { NSRect bounds = [pdfPage boundsForBox:[self displayBox]]; float color[4] = { 0.0, 0.0, 0.0, 0.6 }; float radius = 4.0 / [self scaleFactor]; CGContextBeginPath(context); CGContextAddRect(context, *(CGRect *)&bounds); - CGContextAddRect(context, *(CGRect *)&selectionRect); + // only draw the selection box on the originally selected page + if ([imageSelection.page isEqual:pdfPage]) + CGContextAddRect(context, *(CGRect *)&imageSelection.rect); CGContextSetFillColor(context, color); CGContextEOFillPath(context); - SKCGContextDrawGrabHandle(context, CGPointMake(NSMinX(selectionRect), NSMinY(selectionRect)), radius); - SKCGContextDrawGrabHandle(context, CGPointMake(NSMinX(selectionRect), NSMaxY(selectionRect)), radius); - SKCGContextDrawGrabHandle(context, CGPointMake(NSMaxX(selectionRect), NSMinY(selectionRect)), radius); - SKCGContextDrawGrabHandle(context, CGPointMake(NSMaxX(selectionRect), NSMaxY(selectionRect)), radius); - SKCGContextDrawGrabHandle(context, CGPointMake(NSMinX(selectionRect), NSMidY(selectionRect)), radius); - SKCGContextDrawGrabHandle(context, CGPointMake(NSMaxX(selectionRect), NSMidY(selectionRect)), radius); - SKCGContextDrawGrabHandle(context, CGPointMake(NSMidX(selectionRect), NSMinY(selectionRect)), radius); - SKCGContextDrawGrabHandle(context, CGPointMake(NSMidX(selectionRect), NSMaxY(selectionRect)), radius); + + if ([imageSelection.page isEqual:pdfPage]) { + SKCGContextDrawGrabHandle(context, CGPointMake(NSMinX(imageSelection.rect), NSMinY(imageSelection.rect)), radius); + SKCGContextDrawGrabHandle(context, CGPointMake(NSMinX(imageSelection.rect), NSMaxY(imageSelection.rect)), radius); + SKCGContextDrawGrabHandle(context, CGPointMake(NSMaxX(imageSelection.rect), NSMinY(imageSelection.rect)), radius); + SKCGContextDrawGrabHandle(context, CGPointMake(NSMaxX(imageSelection.rect), NSMaxY(imageSelection.rect)), radius); + SKCGContextDrawGrabHandle(context, CGPointMake(NSMinX(imageSelection.rect), NSMidY(imageSelection.rect)), radius); + SKCGContextDrawGrabHandle(context, CGPointMake(NSMaxX(imageSelection.rect), NSMidY(imageSelection.rect)), radius); + SKCGContextDrawGrabHandle(context, CGPointMake(NSMidX(imageSelection.rect), NSMinY(imageSelection.rect)), radius); + SKCGContextDrawGrabHandle(context, CGPointMake(NSMidX(imageSelection.rect), NSMaxY(imageSelection.rect)), radius); + } } CGContextRestoreGState(context); @@ -422,7 +429,8 @@ - (void)setDocument:(PDFDocument *)document { [readingBar release]; readingBar = nil; - selectionRect = NSZeroRect; + imageSelection.rect = NSZeroRect; + imageSelection.page = nil; [self removeHoverRects]; [[SKPDFHoverWindow sharedHoverWindow] orderOut:self]; [super setDocument:document]; @@ -442,8 +450,9 @@ [self setActiveAnnotation:nil]; if ([self currentSelection]) [self setCurrentSelection:nil]; - } else if (toolMode == SKSelectToolMode && NSEqualRects(selectionRect, NSZeroRect) == NO) { - selectionRect = NSZeroRect; + } else if (toolMode == SKSelectToolMode && NSEqualRects(imageSelection.rect, NSZeroRect) == NO) { + imageSelection.rect = NSZeroRect; + imageSelection.page = nil; [self setNeedsDisplay:YES]; } @@ -498,15 +507,16 @@ - (NSRect)currentSelectionRect { if (toolMode == SKSelectToolMode) - return selectionRect; + return imageSelection.rect; return NSZeroRect; } - (void)setCurrentSelectionRect:(NSRect)rect { if (toolMode == SKSelectToolMode) { - if (NSEqualRects(selectionRect, rect) == NO) + if (NSEqualRects(imageSelection.rect, rect) == NO) [self setNeedsDisplay:YES]; - selectionRect = rect; + imageSelection.rect = rect; + imageSelection.page = [self currentPage]; } } @@ -578,10 +588,10 @@ [types addObject:SKSkimNotePboardType]; } - if (toolMode == SKSelectToolMode && NSIsEmptyRect(selectionRect) == NO) { - NSRect selRect = NSIntegralRect(selectionRect); + if (toolMode == SKSelectToolMode && NSIsEmptyRect(imageSelection.rect) == NO) { + NSRect selRect = NSIntegralRect(imageSelection.rect); - PDFDocument *pdfDoc = [[PDFDocument alloc] initWithData:[[self currentPage] dataRepresentation]]; + PDFDocument *pdfDoc = [[PDFDocument alloc] initWithData:[imageSelection.page dataRepresentation]]; PDFPage *page = [pdfDoc pageAtIndex:0]; [page setBounds:[[self currentPage] boundsForBox:kPDFDisplayBoxMediaBox] forBox:kPDFDisplayBoxMediaBox]; [page setBounds:selRect forBox:kPDFDisplayBoxCropBox]; @@ -593,9 +603,9 @@ [types addObject:NSPDFPboardType]; [pdfDoc release]; - NSRect bounds = [[self currentPage] boundsForBox:[self displayBox]]; + NSRect bounds = [imageSelection.page boundsForBox:[self displayBox]]; NSRect targetRect = NSZeroRect, sourceRect = selRect; - NSImage *pageImage = [[self currentPage] imageForBox:[self displayBox]]; + NSImage *pageImage = [imageSelection.page imageForBox:[self displayBox]]; NSImage *image = nil; sourceRect.origin.x -= NSMinX(bounds); @@ -612,7 +622,7 @@ /* Possible hidden default? Alternate way of getting a bitmap rep; this varies resolution with zoom level, which is very useful if you want to copy a single figure or equation for a non-PDF-capable program. The first copy: action has some odd behavior, though (view moves). Preview produces a fixed resolution bitmap for a given selection area regardless of zoom. - sourceRect = [self convertRect:selectionRect fromPage:[self currentPage]]; + sourceRect = [self convertRect:imageSelection.rect fromPage:[self currentPage]]; NSBitmapImageRep *imageRep = [self bitmapImageRepForCachingDisplayInRect:sourceRect]; [self cacheDisplayInRect:sourceRect toBitmapImageRep:imageRep]; tiffData = [imageRep TIFFRepresentation]; @@ -756,7 +766,8 @@ - (IBAction)autoSelectContent:(id)sender { if (toolMode == SKSelectToolMode) { PDFPage *page = [self currentPage]; - selectionRect = NSIntersectionRect(NSUnionRect([page foregroundBox], selectionRect), [page boundsForBox:[self displayBox]]); + imageSelection.rect = NSIntersectionRect(NSUnionRect([page foregroundBox], imageSelection.rect), [page boundsForBox:[self displayBox]]); + imageSelection.page = page; [[NSNotificationCenter defaultCenter] postNotificationName:SKPDFViewSelectionChangedNotification object:self]; [self setNeedsDisplay:YES]; } @@ -880,9 +891,10 @@ case SKTextToolMode: case SKNoteToolMode: if (mouseDownInAnnotation) { - if (nil == activeAnnotation && NSIsEmptyRect(selectionRect) == NO) { - [self setNeedsDisplayInRect:selectionRect]; - selectionRect = NSZeroRect; + if (nil == activeAnnotation && NSIsEmptyRect(imageSelection.rect) == NO) { + [self setNeedsDisplayInRect:imageSelection.rect]; + imageSelection.rect = NSZeroRect; + imageSelection.page = nil; [[NSNotificationCenter defaultCenter] postNotificationName:SKPDFViewSelectionChangedNotification object:self]; } else if ([[activeAnnotation type] isEqualToString:@"Link"]) { NSPoint p = [self convertPoint:[theEvent locationInWindow] fromView:nil]; @@ -1178,7 +1190,7 @@ if ([[menu itemAtIndex:0] isSeparatorItem]) [menu removeItemAtIndex:0]; - } else if ((toolMode == SKSelectToolMode && NSIsEmptyRect(selectionRect) == NO) || ([self toolMode] == SKTextToolMode && [self currentSelection] && [self hideNotes])) { + } else if ((toolMode == SKSelectToolMode && NSIsEmptyRect(imageSelection.rect) == NO) || ([self toolMode] == SKTextToolMode && [self currentSelection] && [self hideNotes])) { [menu insertItem:[NSMenuItem separatorItem] atIndex:0]; @@ -1777,8 +1789,8 @@ PDFPage *page = nil; NSRect rect = NSZeroRect; - if (toolMode == SKSelectToolMode && NSIsEmptyRect(selectionRect) == NO) { - rect = NSIntersectionRect(selectionRect, [[self currentPage] boundsForBox:kPDFDisplayBoxCropBox]); + if (toolMode == SKSelectToolMode && NSIsEmptyRect(imageSelection.rect) == NO) { + rect = NSIntersectionRect(imageSelection.rect, [[self currentPage] boundsForBox:kPDFDisplayBoxCropBox]); page = [self currentPage]; } if (NSIsEmptyRect(rect)) { @@ -1873,7 +1885,7 @@ return YES; if ([activeAnnotation isNoteAnnotation] && [activeAnnotation isMovable]) return YES; - if (toolMode == SKSelectToolMode && NSIsEmptyRect(selectionRect) == NO) + if (toolMode == SKSelectToolMode && NSIsEmptyRect(imageSelection.rect) == NO) return YES; return NO; } else if (action == @selector(autoSelectContent:)) { @@ -2776,7 +2788,8 @@ PDFPage *page = [self pageForPoint:mouseLoc nearest:NO]; if (page == nil) { - selectionRect = NSZeroRect; + imageSelection.rect = NSZeroRect; + imageSelection.page = nil; [[NSNotificationCenter defaultCenter] postNotificationName:SKPDFViewSelectionChangedNotification object:self]; [self setNeedsDisplay:YES]; return; @@ -2786,30 +2799,30 @@ float margin = 4.0 / [self scaleFactor]; int xEdge = 0, yEdge = 0; - if (NSIsEmptyRect(selectionRect) || NSPointInRect(initialPoint, NSInsetRect(selectionRect, -margin, -margin)) == NO) { - if (NSIsEmptyRect(selectionRect)) { + if (NSIsEmptyRect(imageSelection.rect) || NSPointInRect(initialPoint, NSInsetRect(imageSelection.rect, -margin, -margin)) == NO) { + if (NSIsEmptyRect(imageSelection.rect)) { didDrag = NO; } else { [self setNeedsDisplay:YES]; didDrag = YES; } - selectionRect.origin = initialPoint; - selectionRect.size = NSZeroSize; + imageSelection.rect.origin = initialPoint; + imageSelection.rect.size = NSZeroSize; xEdge = 1; yEdge = 1; } else { - if (initialPoint.x > NSMaxX(selectionRect) - margin) + if (initialPoint.x > NSMaxX(imageSelection.rect) - margin) xEdge = 1; - else if (initialPoint.x < NSMinX(selectionRect) + margin) + else if (initialPoint.x < NSMinX(imageSelection.rect) + margin) xEdge = 2; - if (initialPoint.y > NSMaxY(selectionRect) - margin) + if (initialPoint.y > NSMaxY(imageSelection.rect) - margin) yEdge = 1; - else if (initialPoint.y < NSMinY(selectionRect) + margin) + else if (initialPoint.y < NSMinY(imageSelection.rect) + margin) yEdge = 2; didDrag = YES; } - NSRect initialRect = selectionRect; + NSRect initialRect = imageSelection.rect; NSRect pageBounds = [page boundsForBox:[self displayBox]]; if (xEdge == 0 && yEdge == 0) @@ -2874,7 +2887,7 @@ float maxY = fmax(fmin(NSMaxY(newRect), NSMaxY(pageBounds)), NSMinY(pageBounds)); newRect = NSMakeRect(minX, minY, maxX - minX, maxY - minY); if (didDrag) { - NSRect dirtyRect = NSUnionRect(NSInsetRect(selectionRect, -margin, -margin), NSInsetRect(newRect, -margin, -margin)); + NSRect dirtyRect = NSUnionRect(NSInsetRect(imageSelection.rect, -margin, -margin), NSInsetRect(newRect, -margin, -margin)); NSRange r = [self visiblePageIndexRange]; unsigned int i; for (i = r.location; i < NSMaxRange(r); i++) @@ -2883,14 +2896,16 @@ [self setNeedsDisplay:YES]; didDrag = YES; } - selectionRect = newRect; + imageSelection.rect = newRect; + imageSelection.page = page; [[NSNotificationCenter defaultCenter] postNotificationName:SKPDFViewSelectionChangedNotification object:self]; } didDrag = NO; - if (NSIsEmptyRect(selectionRect)) { - selectionRect = NSZeroRect; + if (NSIsEmptyRect(imageSelection.rect)) { + imageSelection.rect = NSZeroRect; + imageSelection.page = nil; [[NSNotificationCenter defaultCenter] postNotificationName:SKPDFViewSelectionChangedNotification object:self]; [self setNeedsDisplay:YES]; } @@ -2957,11 +2972,8 @@ // how to handle multipage selection? Preview.app's behavior is screwy as well, so we'll do the same thing NSRect selRect = NSMakeRect(fmin(p2.x, p1.x), fmin(p2.y, p1.y), fabs(p2.x - p1.x), fabs(p2.y - p1.y)); sel = [page1 selectionForRect:selRect]; - if (NSIsEmptyRect(selectionRect) == NO) - [self setNeedsDisplayInRect:selectionRect]; - selectionRect = NSIntegralRect([self convertRect:selRect fromPage:page1]); [[NSNotificationCenter defaultCenter] postNotificationName:SKPDFViewSelectionChangedNotification object:self]; - [self setNeedsDisplayInRect:selectionRect]; + [self setNeedsDisplayInRect:selRect]; [[self window] flushWindow]; } else if (extendSelection) { sel = [[self document] selectionByExtendingSelection:wasSelection toPage:page2 atPoint:p2]; @@ -3310,9 +3322,9 @@ float margin = 4.0 / [self scaleFactor]; PDFPage *page = [self pageForPoint:p nearest:NO]; p = [self convertPoint:p toPage:page]; - if (NSPointInRect(p, NSInsetRect(selectionRect, -margin, -margin)) == NO) + if (NSPointInRect(p, NSInsetRect(imageSelection.rect, -margin, -margin)) == NO) cursor = [NSCursor crosshairCursor]; - else if (NSPointInRect(p, NSInsetRect(selectionRect, margin, margin))) + else if (NSPointInRect(p, NSInsetRect(imageSelection.rect, margin, margin))) cursor = [NSCursor openHandCursor]; else cursor = [NSCursor arrowCursor]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |