Compounding existing paths into compoundpathitems with javascript

Im not very familiar with Scripting for Illustrator, so please forgive me if Im overlooking something obvious, but I cant seem to find an easy way to compound existing pathItems into a compoundPathItem; do I have to collect the pathPoint-properties of the existing path and create a new path within a new compound path?
Any help appreciated.

I had a hard time figuring this one out too, but stumbled upon the solution. This snippet of code loops through all of the layers of the file, creates a new compound path in each layer, loops through all of the paths in the layer (ignoring the new compound path) and moves them to the compound path. You have to reset the counter as the number of items in the layer changes each time you move an item to the compound path.
var NumberOfLayers = thisFile.layers.length;
for(i = 0; i < NumberOfLayers; i ++) {
  var newCompPath = thisFile.layers[i].compoundPathItems.add();
  newCompPath.name = "MyCompPath";
  var NumberOfItemsInLayer = thisFile.layers[i].pageItems.length;
  for(j=0;j<NumberOfItemsInLayer;j++)  {
    var SelItems = thisFile.layers[i].pageItems[j];
    if (SelItems.name != "MyCompPath")   {
      SelItems.moveToBeginning(newCompPath);
      var NumberOfItemsInLayer = thisFile.layers[i].pageItems.length;
      j = 0

Similar Messages

  • Adding multiple paths into a compound path

    If I use the gui to add multiple paths into a compound path all I have to do is select multiple paths and choose Object->Compound Path->Make (or ctrl-8). When I do this then the bottom path which is filled has holes 'punched through' creating a window in the shape of the smaller paths which were on top of the larger one. For example, a large rectangle with a white fill color is the bottom item and two smaller paths are on top. I create a compound path and whatever is below the new compound path shows through in the largest shape of the previous two smaller paths.
    If I use JavaScript and create a new compoundPathItem and move 3 paths into it, with the largest being first, then I get a compound path but only the first of the smaller objects creates a transparent space.
    Here is a simplified example:
        var grpMask = doc.groupItems['mask group'];
        var compound = grpMask.compoundPathItems.add();
        var pathobj = grpMask.pathItems['bigbox'];
        pathobj.move(compound,ElementPlacement.INSIDE);
        pathobj = grpMask.pathItems['PathLeft'];
        pathobj.move(compound,ElementPlacement.INSIDE);
        pathobj = grpMask.pathItems['PathRight'];
        pathobj.move(compound,ElementPlacement.INSIDE);
    In the above example the 'bigbox' path has the left and right paths on top of it but only the left path creates a transparent space in the original box.
    I also tried using PLACEATEND instead of INSIDE and grouping the two smaller paths together and moving the group to the compound path.
    Merging path items together won't work - I want to keep the original path's closed and intact without drawing a line between them so I can't just add their pathpoints together.
    Is move() the best way to add existing paths to a new compound path?
    Thanks!

    Im at work at the moment so only have access to CS2 where the second script works… The first script worked at home with CS5…
    here were my test files… Before
    and After…
    As you can see with this I did not change the polarity of the last path as in this test case I knew it was the largest of the shapes not sure if that had any bearing on my results…?

  • I have a 27" iMac with a broken hard drive. Is there a way to convert the existing hardware into a display monitor without too much technical work?

    I have a 27" iMac with a broken hard drive. Is there a way to convert the existing hardware into a display monitor without too much technical work?

    You don't state what iMac it is or what you want to use it for an external display with so we cannot answer the question. But without a bootable drive, no you cannot. However you can get the internal HD replaced or you can connect an external HD and boot from it. Without some basics about the computer it's impossible question to answer. However you may find what need in Apple's Target Display Mode: Frequently Asked Questions (FAQ)

  • EXCEPTION_ACCESS_VIOLATION trying to import existing project into eclipse

    Eclipse Europa version 3.3, Java 1.6
    No problems using Eclipse on other projects
    But trying to import an existing project into Eclipse.
    File->Import->General->Existing Projects into Workspace
    Import Projects box-> Select root directory-> browse to path
    In Projects Box : Project appears with check in checkbox -> click Finish
    Eclipse closes
    A new file is created in eclipse directory titled hs_err_pid
    In the file :
    # An unexpected error has been detected by Java Runtime Environment:
    # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x083e7bfc, pid=4092, tid=6076
    # Java VM: Java HotSpot(TM) Client VM (1.6.0-b105 mixed mode)
    # Problematic frame:
    # C [libapr-1.dll+0x7bfc]
    # If you would like to submit a bug report, please visit:
    # http://java.sun.com/webapps/bugreport/crash.jsp
    --------------- T H R E A D ---------------
    Current thread (0x05f63c00): JavaThread "ModalContext" [_thread_in_native, id=6076]
    siginfo: ExceptionCode=0xc0000005, reading address 0x00000000
    Registers:
    EAX=0x013ca070, EBX=0x00000000, ECX=0x00000000, EDX=0x00000000
    ESP=0x08af8730, EBP=0x08af873c, ESI=0x0014ef10, EDI=0x00000000
    EIP=0x083e7bfc, EFLAGS=0x00010246
    Top of Stack: (sp=0x08af8730)
    0x08af8730: 00000000 0014ef10 013ca070 08afa768
    0x08af8740: 083d1f32 08afa764 013ca070 00000000
    0x08af8750: 00000000 00000000 0014ef10 013ca070
    0x08af8760: 00000000 013ca070 00000000 013ca070
    0x08af8770: 013ca110 6eec84f1 013ca070 00000010
    0x08af8780: 6ee40000 6eec11f2 013ca070 013ca110
    0x08af8790: 6eec1210 6eec8610 013ca070 013ca0c0
    0x08af87a0: 013ca070 013ca070 00000001 003a0043
    Instructions: (pc=0x083e7bfc)
    0x083e7bec: 89 55 10 53 8b 5d 14 56 57 85 db 75 03 8b 58 18
    0x083e7bfc: 8b 03 bf 01 00 00 00 3b c7 0f 82 19 01 00 00 8b
    Stack: [0x08a00000,0x08b00000), sp=0x08af8730, free space=993k
    Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
    C [libapr-1.dll+0x7bfc]
    C [libapriconv-1.dll+0x1f32]
    C [libapriconv-1.dll+0x1da4]
    C [_tbl_simple.so+0x123b]
    C [_tbl_simple.so+0x11c4]
    Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
    j org.tigris.subversion.javahl.SVNClient.status(Ljava/lang/String;ZZZZZ)[Lorg/tigris/subversion/javahl/Status;+0
    j org.tigris.subversion.svnclientadapter.javahl.AbstractJhlClientAdapter.getStatus(Ljava/io/File;ZZZZ)[Lorg/tigris/subversion/svnclientadapter/ISVNStatus;+83
    j org.tigris.subversion.svnclientadapter.javahl.AbstractJhlClientAdapter.getStatus(Ljava/io/File;ZZZ)[Lorg/tigris/subversion/svnclientadapter/ISVNStatus;+7
    j org.tigris.subversion.subclipse.core.client.PeekStatusCommand.execute(Lorg/tigris/subversion/svnclientadapter/ISVNClientAdapter;)V+61
    j org.tigris.subversion.subclipse.core.resources.SVNWorkspaceRoot.peekResourceStatusFor(Lorg/eclipse/core/runtime/IPath;)Lorg/tigris/subversion/subclipse/core/resources/LocalResourceStatus;+16
    j org.tigris.subversion.subclipse.core.SVNProviderPlugin.isManagedBySubversion(Lorg/eclipse/core/runtime/IPath;)Z+37
    j org.tigris.subversion.subclipse.core.SVNProviderPlugin.isManagedBySubversion(Lorg/eclipse/core/resources/IContainer;)Z+29
    j org.tigris.subversion.subclipse.core.SVNTeamProviderType.metaFilesDetected(Lorg/eclipse/core/resources/IProject;[Lorg/eclipse/core/resources/IContainer;)V+9
    j org.eclipse.team.internal.core.TeamResourceChangeListener.handleUnsharedProjectChanges(Lorg/eclipse/core/resources/IProject;Lorg/eclipse/core/resources/IResourceDelta;)V+217
    j org.eclipse.team.internal.core.TeamResourceChangeListener.resourceChanged(Lorg/eclipse/core/resources/IResourceChangeEvent;)V+53
    j org.eclipse.core.internal.events.NotificationManager$2.run()V+8
    J org.eclipse.core.runtime.SafeRunner.run(Lorg/eclipse/core/runtime/ISafeRunnable;)V
    j org.eclipse.core.internal.events.NotificationManager.notify([Lorg/eclipse/core/internal/events/ResourceChangeListenerList$ListenerEntry;Lorg/eclipse/core/resources/IResourceChangeEvent;Z)V+79
    j org.eclipse.core.internal.events.NotificationManager.broadcastChanges(Lorg/eclipse/core/internal/watson/ElementTree;Lorg/eclipse/core/internal/events/ResourceChangeEvent;Z)V+97
    j org.eclipse.core.internal.resources.Workspace.broadcastPostChange()V+22
    j org.eclipse.core.internal.resources.Workspace.endOperation(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;ZLorg/eclipse/core/runtime/IProgressMonitor;)V+150
    j org.eclipse.core.internal.resources.Workspace.run(Lorg/eclipse/core/resources/IWorkspaceRunnable;Lorg/eclipse/core/runtime/jobs/ISchedulingRule;ILorg/eclipse/core/runtime/IProgressMonitor;)V+182
    j org.eclipse.ui.actions.WorkspaceModifyOperation.run(Lorg/eclipse/core/runtime/IProgressMonitor;)V+25
    j org.eclipse.jface.operation.ModalContext$ModalContextThread.run()V+15
    v ~StubRoutines::call_stub
    --------------- P R O C E S S ---------------
    Java Threads: ( => current thread )
    =>0x05f63c00 JavaThread "ModalContext" [_thread_in_native, id=6076]
    0x05f65c00 JavaThread "Thread-6" [_thread_blocked, id=5348]
    0x05f65800 JavaThread "Timer-2" [_thread_blocked, id=2336]
    0x05f65000 JavaThread "Timer-1" [_thread_blocked, id=5900]
    0x05f64400 JavaThread "Timer-0" [_thread_blocked, id=4932]
    0x05f64000 JavaThread "Worker-7" [_thread_blocked, id=1732]
    0x05f62800 JavaThread "Worker-3" [_thread_blocked, id=1648]
    0x05f62400 JavaThread "Worker-2" [_thread_blocked, id=1380]
    0x05db1c00 JavaThread "Java indexing" daemon [_thread_blocked, id=5812]
    0x05e5fc00 JavaThread "Worker-1" [_thread_blocked, id=5956]
    0x0453b400 JavaThread "Start Level Event Dispatcher" daemon [_thread_blocked, id=4172]
    0x0453a800 JavaThread "Framework Event Dispatcher" daemon [_thread_blocked, id=5728]
    0x0453a000 JavaThread "State Data Manager" daemon [_thread_blocked, id=2704]
    0x017b5400 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=6104]
    0x017b4400 JavaThread "CompilerThread0" daemon [_thread_blocked, id=2604]
    0x017b3c00 JavaThread "Attach Listener" daemon [_thread_blocked, id=4820]
    0x017b3400 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=5232]
    0x017a1400 JavaThread "Finalizer" daemon [_thread_blocked, id=2824]
    0x01798800 JavaThread "Reference Handler" daemon [_thread_blocked, id=6060]
    0x01898400 JavaThread "main" [_thread_blocked, id=5148]
    Other Threads:
    0x01795800 VMThread [id=328]
    0x017d0800 WatcherThread [id=5936]
    VM state:not at safepoint (normal execution)
    VM Mutex/Monitor currently owned by a thread: None
    Heap
    def new generation total 2944K, used 296K [0x10020000, 0x10350000, 0x12780000)
    eden space 2624K, 3% used [0x10020000, 0x10036378, 0x102b0000)
    from space 320K, 64% used [0x10300000, 0x10333de8, 0x10350000)
    to space 320K, 0% used [0x102b0000, 0x102b0000, 0x10300000)
    tenured generation total 37824K, used 18827K [0x12780000, 0x14c70000, 0x30020000)
    the space 37824K, 49% used [0x12780000, 0x139e2d70, 0x139e2e00, 0x14c70000)
    compacting perm gen total 36352K, used 36332K [0x30020000, 0x323a0000, 0x38020000)
    the space 36352K, 99% used [0x30020000, 0x3239b1d8, 0x3239b200, 0x323a0000)
    No shared spaces configured.
    Dynamic libraries:
    0x00400000 - 0x0040d000      C:\eclipse-3.3\eclipse.exe
    0x775f0000 - 0x7770e000      C:\Windows\system32\ntdll.dll
    0x76260000 - 0x76338000      C:\Windows\system32\kernel32.dll
    0x77550000 - 0x775ee000      C:\Windows\system32\USER32.dll
    0x777e0000 - 0x7782b000      C:\Windows\system32\GDI32.dll
    0x761a0000 - 0x7625f000      C:\Windows\system32\ADVAPI32.dll
    0x77710000 - 0x777d3000      C:\Windows\system32\RPCRT4.dll
    0x73460000 - 0x734e6000      C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.6000.16386_none_87e0cb09378714f1\COMCTL32.dll
    0x774a0000 - 0x7754a000      C:\Windows\system32\MSVCRT.dll
    0x711f0000 - 0x7120e000      C:\Windows\system32\ShimEng.dll
    0x75c90000 - 0x75cbc000      C:\Windows\system32\apphelp.dll
    0x70eb0000 - 0x70f37000      C:\Windows\AppPatch\AcLayers.dll
    0x76370000 - 0x76e3e000      C:\Windows\system32\SHELL32.dll
    0x75ff0000 - 0x76045000      C:\Windows\system32\SHLWAPI.dll
    0x77350000 - 0x77494000      C:\Windows\system32\ole32.dll
    0x76e40000 - 0x76ecc000      C:\Windows\system32\OLEAUT32.dll
    0x75d60000 - 0x75d7e000      C:\Windows\system32\USERENV.dll
    0x75d40000 - 0x75d54000      C:\Windows\system32\Secur32.dll
    0x73000000 - 0x73041000      C:\Windows\system32\WINSPOOL.DRV
    0x758e0000 - 0x758f4000      C:\Windows\system32\MPR.dll
    0x6fd90000 - 0x6ffa0000      C:\Windows\AppPatch\AcGenral.DLL
    0x74f50000 - 0x74f8f000      C:\Windows\system32\UxTheme.dll
    0x749e0000 - 0x74a13000      C:\Windows\system32\WINMM.dll
    0x749a0000 - 0x749d8000      C:\Windows\system32\OLEACC.dll
    0x75b60000 - 0x75bca000      C:\Windows\system32\NETAPI32.dll
    0x75ea0000 - 0x75ea7000      C:\Windows\system32\PSAPI.DLL
    0x74520000 - 0x74535000      C:\Windows\system32\MSACM32.dll
    0x75580000 - 0x75588000      C:\Windows\system32\VERSION.dll
    0x732a0000 - 0x732a5000      C:\Windows\system32\sfc.dll
    0x71df0000 - 0x71dfd000      C:\Windows\system32\sfc_os.DLL
    0x77140000 - 0x772c9000      C:\Windows\system32\SETUPAPI.dll
    0x73140000 - 0x7314c000      C:\Windows\system32\dwmapi.dll
    0x76070000 - 0x76197000      C:\Windows\system32\urlmon.dll
    0x76ee0000 - 0x76f25000      C:\Windows\system32\iertutil.dll
    0x741e0000 - 0x741e5000      C:\Windows\system32\SHUNIMPL.dll
    0x75eb0000 - 0x75ece000      C:\Windows\system32\IMM32.DLL
    0x75f20000 - 0x75fe7000      C:\Windows\system32\MSCTF.dll
    0x76ed0000 - 0x76ed9000      C:\Windows\system32\LPK.DLL
    0x77030000 - 0x770ad000      C:\Windows\system32\USP10.dll
    0x77000000 - 0x7702d000      C:\Windows\system32\WS2_32.dll
    0x76060000 - 0x76066000      C:\Windows\system32\NSI.dll
    0x75d10000 - 0x75d31000      C:\Windows\system32\NTMARTA.DLL
    0x75ed0000 - 0x75f19000      C:\Windows\system32\WLDAP32.dll
    0x75cf0000 - 0x75d01000      C:\Windows\system32\SAMLIB.dll
    0x74c50000 - 0x74de4000      C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6000.16386_none_5d07289e07e1d100\comctl32.dll
    0x10000000 - 0x10011000      C:\eclipse-3.3\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.0.v20070523\eclipse_1017a.dll
    0x003e0000 - 0x003e6000      C:\Users\ERIKHA~1.ALF\AppData\Local\Temp\IadHide5.dll
    0x6d7c0000 - 0x6da07000      C:\jdk1.6.0\jre\bin\client\jvm.dll
    0x7c340000 - 0x7c396000      C:\Windows\system32\MSVCR71.dll
    0x6d310000 - 0x6d318000      C:\jdk1.6.0\jre\bin\hpi.dll
    0x6d770000 - 0x6d77c000      C:\jdk1.6.0\jre\bin\verify.dll
    0x6d3b0000 - 0x6d3cf000      C:\jdk1.6.0\jre\bin\java.dll
    0x6d7b0000 - 0x6d7bf000      C:\jdk1.6.0\jre\bin\zip.dll
    0x6d570000 - 0x6d583000      C:\jdk1.6.0\jre\bin\net.dll
    0x75510000 - 0x7554b000      C:\Windows\system32\mswsock.dll
    0x75570000 - 0x75576000      C:\Windows\System32\wship6.dll
    0x6d590000 - 0x6d599000      C:\jdk1.6.0\jre\bin\nio.dll
    0x00fa0000 - 0x00fef000      C:\eclipse-3.3\configuration\org.eclipse.osgi\bundles\405\1\.cp\swt-win32-3346.dll
    0x772d0000 - 0x77344000      C:\Windows\system32\comdlg32.dll
    0x76f30000 - 0x77000000      C:\Windows\system32\WININET.dll
    0x76050000 - 0x76053000      C:\Windows\system32\Normaliz.dll
    0x052a0000 - 0x052b4000      C:\eclipse-3.3\configuration\org.eclipse.osgi\bundles\405\1\.cp\swt-gdip-win32-3346.dll
    0x74700000 - 0x748aa000      C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.6000.16386_none_9ea0ac9ec96e7127\gdiplus.dll
    0x75270000 - 0x752a8000      C:\Windows\system32\rsaenh.dll
    0x751f0000 - 0x751f5000      C:\Windows\system32\msimg32.dll
    0x770b0000 - 0x77134000      C:\Windows\system32\CLBCatQ.DLL
    0x6f290000 - 0x6f2c0000      C:\Windows\system32\mlang.dll
    0x6eec0000 - 0x6eee1000      C:\eclipse-3.3\plugins\org.tigris.subversion.javahl.win32_1.2.4\libapr.dll
    0x6ee50000 - 0x6ee59000      C:\eclipse-3.3\plugins\org.tigris.subversion.javahl.win32_1.2.4\libapriconv.dll
    0x06e90000 - 0x06f98000      C:\eclipse-3.3\plugins\org.tigris.subversion.javahl.win32_1.2.4\libeay32.dll
    0x71de0000 - 0x71de7000      C:\Windows\system32\WSOCK32.dll
    0x058b0000 - 0x05974000      C:\eclipse-3.3\plugins\org.tigris.subversion.javahl.win32_1.2.4\libdb44.dll
    0x70dd0000 - 0x70e36000      C:\Windows\system32\MSVCP60.dll
    0x04d40000 - 0x04d71000      C:\eclipse-3.3\plugins\org.tigris.subversion.javahl.win32_1.2.4\ssleay32.dll
    0x6ee60000 - 0x6ee89000      C:\eclipse-3.3\plugins\org.tigris.subversion.javahl.win32_1.2.4\libaprutil.dll
    0x04d80000 - 0x04d92000      C:\eclipse-3.3\plugins\org.tigris.subversion.javahl.win32_1.2.4\intl3_svn.dll
    0x06fa0000 - 0x070a9000      C:\eclipse-3.3\plugins\org.tigris.subversion.javahl.win32_1.2.4\libsvnjavahl-1.dll
    0x71fe0000 - 0x71fe5000      C:\Windows\system32\SHFOLDER.dll
    0x728b0000 - 0x729b7000      C:\Windows\system32\shdocvw.dll
    0x73b80000 - 0x73c32000      C:\Windows\system32\WindowsCodecs.dll
    0x72480000 - 0x72515000      C:\Windows\System32\cscui.dll
    0x73ce0000 - 0x73d97000      C:\Windows\System32\PROPSYS.dll
    0x72ac0000 - 0x72ac9000      C:\Windows\System32\CSCDLL.dll
    0x72ab0000 - 0x72aba000      C:\Windows\System32\CSCAPI.dll
    0x05350000 - 0x054d3000      C:\Program Files\TortoiseCVS\TortoiseShell.dll
    0x723f0000 - 0x72477000      C:\Windows\WinSxS\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.762_none_10b2f55f9bffb8f8\MSVCP80.dll
    0x721b0000 - 0x7224b000      C:\Windows\WinSxS\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.762_none_10b2f55f9bffb8f8\MSVCR80.dll
    0x72760000 - 0x728a5000      C:\Windows\system32\browseui.dll
    0x74f20000 - 0x74f50000      C:\Windows\system32\DUser.dll
    0x6c240000 - 0x6c2a0000      C:\Program Files\Common Files\microsoft shared\ink\tiptsf.dll
    0x71f10000 - 0x71f22000      C:\Windows\System32\ntlanman.dll
    0x71fd0000 - 0x71fd8000      C:\Windows\System32\drprov.dll
    0x71fc0000 - 0x71fcf000      C:\Windows\System32\davclnt.dll
    0x71ef0000 - 0x71f04000      C:\Windows\system32\LMIRfsClientNP.dll
    0x6e540000 - 0x6e586000      C:\Windows\system32\PortableDeviceApi.dll
    0x75050000 - 0x7507d000      C:\Windows\system32\WINTRUST.dll
    0x757e0000 - 0x758d1000      C:\Windows\system32\CRYPT32.dll
    0x75930000 - 0x75942000      C:\Windows\system32\MSASN1.dll
    0x76340000 - 0x76369000      C:\Windows\system32\imagehlp.dll
    0x71ae0000 - 0x71d03000      C:\Windows\system32\NetworkExplorer.dll
    0x70e40000 - 0x70e8a000      C:\Windows\system32\ntshrui.dll
    0x757a0000 - 0x757d9000      C:\Windows\system32\slc.dll
    0x083b0000 - 0x083b8000      C:\eclipse-3.3\configuration\org.eclipse.osgi\bundles\85\1\.cp\os\win32\x86\localfile_1_0_0.dll
    0x6ee40000 - 0x6ee45000      C:\Program Files\Subversion\iconv\_tbl_simple.so
    0x083d0000 - 0x083d9000      C:\Program Files\Subversion\bin\libapriconv-1.dll
    0x083e0000 - 0x08400000      C:\Program Files\Subversion\bin\libapr-1.dll
    VM Arguments:
    jvm_args: -Xms40m -Xmx512m -XX:MaxPermSize=128M
    java_command: <unknown>
    Launcher Type: generic
    Environment Variables:
    JAVA_HOME=C:\jdk1.6.0
    CLASSPATH=c:\mysql-connector-java-5.1.6\mysql-connector-java-5.1.6-bin
    PATH=C:\jdk1.6.0\bin\..\jre\bin\client;C:\jdk1.6.0\bin\..\jre\bin;C:\jdk1.6.0\bin;C:\Programme\PHP\;c:\Program Files\Sun\JavaES5\WebServer7\lib;c:\Program Files\Sun\JavaES5\share\lib;c:\Program Files\Sun\JavaES5\share\bin;C:\Java\JDK15~1.0_0\bin;c:\Program Files\Sun\JavaES5\share\ant\bin;c:\Program Files\Sun\JavaES5\share\cacao_2\bin;c:\Program Files\Sun\JavaES5\appserver\lib;c:\Program Files\Sun\JavaES5\appserver\bin;c:\program files\imagemagick-6.2.8-q16;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;d:\Programme\alfa\oracle\BIN;C:\Program Files\Common Files\Adobe\AGL;c:\program files\OpenOffice.org 2.0\program\;YBASE\DLL;C:\Program Files\QuickTime\QTSystem;d:\Programme\alfa\dll\de;C:\jdk1.6.0\bin;c:\Program Files\apache-ant-1.7.0\bin;$CATALINA_HOME/bin;c:\mysql-5.0.51a-win32\bin;C:\Program Files\Subversion\bin;C:\Program Files\CVSNT\;C:\Program Files\IDM Computer Solutions\UltraEdit\;C:\Program Files\IDM Computer Solutions\UltraCompare;C:\Program Files\Common Files\Ahead\Lib\
    USERNAME=doug.scovill
    SHELL=d:\Programme\alfa\PageOneXT32\unixbin\sh.exe
    OS=Windows_NT
    PROCESSOR_IDENTIFIER=x86 Family 15 Model 6 Stepping 4, GenuineIntel
    --------------- S Y S T E M ---------------
    OS: Windows XP Build 2600 Service Pack 2
    CPU:total 2 family 15, cmov, cx8, fxsr, mmx, sse, sse2, ht
    Memory: 4k page, physical 1048575k(902316k free), swap 2097151k(1048575k free)
    vm_info: Java HotSpot(TM) Client VM (1.6.0-b105) for windows-x86, built on Nov 29 2006 00:48:48 by "java_re" with unknown MS VC++:1310

    Have you got subversion commandline tools installed? And if so, did you install the version that was built against Apache 2.2. Subclipse is built against ver 2.0 and if you have the wrong version of the APR libraries included in your path then this causes eclipse to crash.
    My solution was to uninstall the commandline tools built against Apache 2.2 and reinstall those that are built against version 2.0
    Thats what I found anyway.

  • How can I add to an existing path using the pencil tool?

    This probably seems like a rather elementary question, but
    whenever I draw a path using the pencil tool, reselect it,
    hover over the endpoint, and the click and drag to extend
    the line off into a different direction, Illustrator will often
    (but not always) erase the existing path and leave only the
    new one that I drew.
    To wit:
    In step 1 above, I draw a line with the Pencil tool.
    In step 2 above, I reselect the line from step 1, hover over the endpoint, and then continue to draw further.
    However, as can be seen in step 3, the line from step 1 disappears after I draw the new path.
    I am aware of the pencil setting, "Edit selected paths", and I have checked it to edit selected paths
    within 12 pixels for the above example. What I am doing in the above example, and what I
    want to do, is to be able to add more paths onto an existing one using the pencil tool,
    rather than have a completely new path being drawn every time I lift up my pen to finish
    drawing the previous path.
    I also realize that I can do this with the pen tool; but the pen tool is a more
    precise tool (and somewhat more cumbersome), and I prefer to have more
    of the rough-handed look from time to time.
    Finally, I also know that I can use the direct selection tool to select endpoints
    from two different paths and then join them using the join command;
    but this seems to be more trouble than it's worth in many cases, especially
    if I want to do it frequently for a more long and complicated line.
    Am I expecting too much out of Illustrator?
    Is my idea of how to use the existing tools wrong in this case?
    Is there some piece of knowledge I'm missing?
    I'm on Illustrator CS5, Mac OS X 10.6.8, using a Wacom Intuos4 tablet.
    However, I have confirmed the above on Illustrator CS4 for Mac as well.
    Any help or comments would be much appreciated.
    Jeff

    Thanks @rcraighead - the Live Paint process seems a bit overkill for simply adding
    a new path onto an existing pencil path, but I did try the first idea you suggested,
    which was tracing a bit over the last part of the existing path and then continuing
    on to extend the path. It's a bit imprecise because the existing path gets slightly
    modified, but it seems to work pretty well all in all. Nice idea indeed - thanks a million.
    I also found that in AI CS5, I can use the selection tool to select all of the paths
    in this case and then join them using the join command. I thought I needed to
    select individual anchor points for this to work, but it actually works really
    well, better than I thought. I seem to recall that previous versions of Illustrator
    were a lot more picky with the Join command, but then again this might just
    have been my lack of understanding.
    I'm curious to know what other solutions to the above problem that other users
    might have, so I will leave this question unanswered for a bit...
    but I will use your initial technique described - it seems to work
    pretty well, in absence of other options Many thanks again for your timely help.
    Jeff

  • Storing Uploaded Image Path into Mysql

    Hi I am developing a cms and am using the code David gives in his book PHP Solutions,  everything works fine but I can't work out how to extract the uploaded path so that it is stored in my table.
    Help would be really appreciated, I am making good progress in learning the php especially with David's books but am still struggling when it comes to having to customized the code.
    The code for the upload.php is as follows,
    <?php
    class Gp1_Upload{
      protected $_uploaded = array();
      protected $_destination;
      protected $_max = 51200;
      protected $_messages = array();
      protected $_permitted = array('image/gif',
                                    'image/jpeg',
                                    'image/pjpeg',
                                    'image/png');
      protected $_renamed = false;
      public function __construct($path) {
        if (!is_dir($path) || !is_writable($path)) {
          throw new Exception("$path must be a valid, writable directory.");
        $this->_destination = $path;
        $this->_uploaded = $_FILES;
      public function getuploadpath (){
      public function getMaxSize() {
        return number_format($this->_max/1024, 1) . 'kB';
      public function setMaxSize($num) {
        if (!is_numeric($num)) {
          throw new Exception("Maximum size must be a number.");
        $this->_max = (int) $num;
      public function move($overwrite = false) {
        $field = current($this->_uploaded);
        if (is_array($field['name'])) {
          foreach ($field['name'] as $number => $filename) {
            // process multiple upload
            $this->_renamed = false;
            $this->processFile($filename, $field['error'][$number], $field['size'][$number], $field['type'][$number], $field['tmp_name'][$number], $overwrite);   
        } else {
          $this->processFile($field['name'], $field['error'], $field['size'], $field['type'], $field['tmp_name'], $overwrite);
      public function getMessages() {
        return $this->_messages;
      protected function checkError($filename, $error) {
        switch ($error) {
          case 0:
            return true;
          case 1:
          case 2:
            $this->_messages[] = "$filename exceeds maximum size: " . $this->getMaxSize();
            return true;
          case 3:
            $this->_messages[] = "Error uploading $filename. Please try again.";
            return false;
          case 4:
            $this->_messages[] = 'No file selected.';
            return false;
          default:
            $this->_messages[] = "System error uploading $filename. Contact webmaster.";
            return false;
      protected function checkSize($filename, $size) {
        if ($size == 0) {
          return false;
        } elseif ($size > $this->_max) {
          $this->_messages[] = "$filename exceeds maximum size: " . $this->getMaxSize();
          return false;
        } else {
          return true;
      protected function checkType($filename, $type) {
        if (empty($type)) {
          return false;
        } elseif (!in_array($type, $this->_permitted)) {
          $this->_messages[] = "$filename is not a permitted type of file.";
          return false;
        } else {
          return true;
      public function addPermittedTypes($types) {
        $types = (array) $types;
        $this->isValidMime($types);
        $this->_permitted = array_merge($this->_permitted, $types);
      protected function isValidMime($types) {
        $alsoValid = array('image/tiff',
                           'application/pdf',
                           'text/plain',
                           'text/rtf');
          $valid = array_merge($this->_permitted, $alsoValid);
        foreach ($types as $type) {
          if (!in_array($type, $valid)) {
            throw new Exception("$type is not a permitted MIME type");
      protected function checkName($name, $overwrite) {
        $nospaces = str_replace(' ', '_', $name);
        if ($nospaces != $name) {
          $this->_renamed = true;
        if (!$overwrite) {
          $existing = scandir($this->_destination);
          if (in_array($nospaces, $existing)) {
            $dot = strrpos($nospaces, '.');
            if ($dot) {
              $base = substr($nospaces, 0, $dot);
              $extension = substr($nospaces, $dot);
            } else {
              $base = $nospaces;
              $extension = '';
            $i = 1;
            do {
              $nospaces = $base . '_' . $i++ . $extension;
            } while (in_array($nospaces, $existing));
            $this->_renamed = true;
        return $nospaces;
      protected function processFile($filename, $error, $size, $type, $tmp_name, $overwrite) {
        $OK = $this->checkError($filename, $error);
        if ($OK) {
          $sizeOK = $this->checkSize($filename, $size);
          $typeOK = $this->checkType($filename, $type);
          if ($sizeOK && $typeOK) {
            $name = $this->checkName($filename, $overwrite);
            $success = move_uploaded_file($tmp_name, $this->_destination . $name);
            if ($success) {
                $message = "$filename uploaded successfully";
                if ($this->_renamed) {
                  $message .= " and renamed $name";
                $this->_messages[] = $message;
            } else {
              $this->_messages[] = "Could not upload $filename";
    ?>
    The code for my form page is this
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>
    <body>
    <?php
    //THE FOLLOWING CODE IS FOR THE UPLOADING OF IMAGES AND FILES
    // set the max upload size in bytes
    $max = 51200;
    if (isset ($_POST ['submit']))
                //define the path to the upload folder
                $destination = 'uploads/';
                require_once('classes/Upload.php');
                try {
                    $upload = new Gp1_Upload($destination);
                    $upload->setMaxSize($max);
                    $upload->move();
                    $result = $upload->getMessages();
                } catch (Exception $e) {
                    echo $e->getMessage();
    // END OF UPLOADING OF IMAGES AND FILES
    ?>
    <form id="newvenue" action="" method="post" enctype="multipart/form-data" >
          <?php
               // THIS CODE DISPLAYS ERROR MESSAGES FOR THE FILE UPLOADS
              if (isset($result)){
              echo '<ul>';
              foreach ($result as $message){
                  echo "<li>$message</li>";
              echo '</ul>';
           ?>
      <table id="neweventdisplay" cellpadding="5"  border="0">
        <tr>
      <td></td>
      <td><input type="hidden" name="user_id"  value="" /></td>
      </tr>
      <tr>
      <td></td>
        <td>Organisers Name</td>
        <td><input class="input80px" id="org_name" name="org_name" type="text" /> </td>
      </tr>
      <tr>
      <td></td>
      <td><label for="image">Upload image:</label></td>
      <td><p>
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max; ?>" />
    <input type="file" name="image" id="image" />
    </p></td>
    </tr>
      <tr>
      <td></td>
      <td>Details about your upload</td>
      <td><input class="input80px" id="org_uploadcapt" name="org_uploadcapt" type="text"  /></td>
    </tr>
      <tr>
      <td></td>
      <td><input type="submit" name="submit" id="submit" value="upload"></td>
      </tr>
      <tr>
      <td class="heading"> </td>
      <td></td>
      </tr>
    </table>
    </form>
    <prep>
    <?php
    if (isset ($_POST ['submit'])){
        print_r($_FILES);}
        ?>
        </prep>
    </body>
    </html>

    Hi David
    Thank you very much for your help.  I had continued to work on the code and had worked out how to input the image path into the database but it was using the original filename, so when every it is changed it did not work.  The code in my page at that point was the following,
    <?php     // 2. NEW USER REGISTRATION<br />
            include_once ("includes/form_functions.inc.php");
            $max = 100000;
            $destination = 'uploads/';
            // START FORM PROCESSING FOR A NEW REGISTRATION
            if (isset($_POST['submit'])) { // Form has been submitted.
            $errors = array();
            // perform validations on the form data
            $required_fields = array('org_name');
            $errors = array_merge($errors, check_required_fields($required_fields, $_POST));    
            $required_numberfields = array('user_id');
            $errors = array_merge($errors, check_number_fields($required_numberfields, $_POST));
            $fields_with_lengths = array('org_name' => 36, 'org_website' => 100, 'org_contact' => 40,  'org_conemail' => 80, 'org_contel' => 30);
            $errors = array_merge($errors, check_max_field_lengths($fields_with_lengths, $_POST));
            /*Here I am using trim as well as ucwords, this function converts the first letter of each work into a capital letter,  I am using this only on the
            firstname and surname to ensure that the data is how I want it as it is going  into the database,  The better the data is preformated the better the data
            swill be within the database.*/
            $org_name = trim(strtolower(mysql_prep($_POST['org_name'])));
            $org_website = trim(strtolower(mysql_prep($_POST['org_website'])));
            $org_contact = trim(strtolower (mysql_prep($_POST['org_contact'])));
            $org_conemail = trim(strtolower (mysql_prep($_POST['org_conemail'])));
            $org_contel = strtolower (mysql_prep($_POST['org_contel']));
            $userid = $_POST['user_id'];
            $org_uploadcapt = $_POST['org_uploadcapt'];
            $image = $_FILES['image'];
            /*Here is the code that takes the variable captured from the input form and matches it  up with the appropriate field in the database.  An important point with insertion is that  the variables are in the same order as the mysql field names, there will be an error if the number of variables does not match the number of field names.  Note that there is no entry for the user id as this is an auto increment file within mysql and so is not needed to be entered*/
            if ( empty($errors) ) {
                $sql = "INSERT INTO organiser
                          (org_name, org_website, org_contact, org_conemail, org_contel, user_id, org_uploadurl, org_uploadcapt)
                          VALUES
                          ('{$org_name}', '{$org_website}', '{$org_contact}', '{$org_conemail}', '{$org_contel}', '{$userid}', '{$destination}".$image['name']."', '{$org_uploadcapt}' )";
                $result = mysql_query($sql, $connection);
                if ($result) {
                    $message = "The organiser was successfully created.<br />";
                } else {
                    $message = "I am sorry but the organiser could not be added.";
                    $message .= "<br />" . mysql_error();
                } else {
                    /* this counts the number of errors and informs the user of how many fields were
                    incorrectly entered*/
                if (count($errors) == 1) {
                    $message = "There was 1 error in the form.";
                } else {
                    $message = "There were " . count($errors) . " errors in the form.";
        } else { // Form has not been submitted.
            $org_name = "";
            $org_website = "";
            $org_contact = "";
            $org_conemail = "";
            $org_contel = "";
            $userid = "";
            $org_uploadcapt = "";
    //THE FOLLOWING CODE IS FOR THE UPLOADING OF IMAGES AND FILES
    // set the max upload size in bytes
    if (isset ($_POST ['submit']))
                //define the path to the upload folder
                // Use This On The Local Hosting Machine
                //$destination = 'C:/upload_test/';
                // Use This On The Live Server
                require_once('classes/Upload.php');
                try {
                    $upload = new Gp1_Upload($destination);
                    $upload->setMaxSize($max);
                    $upload->move();
                    $result = $upload->getMessages();
                } catch (Exception $e) {
                    echo $e->getMessage();
    // END OF UPLOADING OF IMAGES AND FILES
    ?>
    <title>Horse Events</title>
    <?php include_once("includes/meta.inc.php");?>
    <?php include_once("includes/cssfavgoogle.inc.php");?>
    <link href="css/adminpanel.css" rel="stylesheet" type="text/css" />
    <style>
    input[type="number"] {
        width:40px;
    </style>
    </head>
    <body>
    <div id="wrapper">
        <div id="admincontent">
    <form id="newvenue" action="neworganiser.php" method="post" enctype="multipart/form-data" >
          <?php if (!empty ($message)) {echo "<p class=\"message\">" . $message . "</p>";} ?>
          <?php if (!empty ($errors)) {display_errors($errors); } ?>
          <?php
              // THIS CODE DISPLAYS ERROR MESSAGES FOR THE FILE UPLOADS
              if (isset($result)){
              echo '<ul>';
              foreach ($result as $message){
                  echo "<li>$message</li>";
              echo '</ul>';
           ?>
    <br />
          <table id="neweventdisplay" cellpadding="5"  border="0">
        <tr>
      <td></td>
      <td><input type="hidden" name="user_id"  value="<?php echo $url_userid ['user_id']; ?>" /></td>
      </tr>
      <tr>
      <td> <span class="compuls">*</span></td>
        <td>Organisers Name</td>
        <td><input class="input80px" id="org_name" name="org_name" type="text" />
         </td>
      </tr>
          <tr>
          <td><span class="compuls">*</span></td>
        <td>Their Website</td>
        <td><input class="input80px" id="org_website" name="org_website" type="text" /></td>
      </tr>
        <tr>
        <td><span class="compuls">*</span></td>
        <td>Organisers Contact</td>
        <td><input id="org_contact" name="org_contact" type="text" />eg: Mrs Jean Kelly</td>
      </tr>
        <tr>
        <td><span class="compuls">*</span></td>
        <td>Contact Email</td>
        <td><input class="input80px" id="org_conemail" name="org_conemail" type="text" />
          </td>
      </tr>
        <tr>
        <td><span class="compuls">*</span></td>
      <td>Contact Tel No.</td>
      <td><input id="org_contel" name="org_contel" type="text" /></td>
      </tr>
      <tr>
      <td></td>
      <td><label for="image">Upload image:</label></td>
      <td><p>
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max; ?>" />
    <input type="file" name="image" id="image" />
    </p></td>
    </tr>
      <tr>
      <td></td>
      <td>Details about your upload</td>
      <td><input class="input80px" id="org_uploadcapt" name="org_uploadcapt" type="text"  /></td>
    </tr>
      <tr>
      <td></td>
      <td><input type="submit" name="submit" id="submit" value="Add Your Organiser"></td>
      </tr>
      <tr>
      <td class="heading"> </td>
      <td></td>
      </tr>
    </table>
    <a  class="delete" href="controlpanel.php">Cancel</a>
    </form>
        </div>
    I have added the code you kindly forwarded but am getting an error,  I am still trying to learn the basics of php and am unsure of what to do next, my php Upload.php now looks like
    <?php
    class Gp1_Upload{
      protected $_uploaded = array();
      protected $_destination;
      protected $_max = 100000;
      protected $_messages = array();
      protected $_permitted = array('image/gif',
                                    'image/jpeg',
                                    'image/pjpeg',
                                    'image/png');
      protected $_renamed = false;
      protected $_filenames = array();
      public function __construct($path) {
        if (!is_dir($path) || !is_writable($path)) {
          throw new Exception("$path must be a valid, writable directory.");
        $this->_destination = $path;
        $this->_uploaded = $_FILES;
      public function getMaxSize() {
        return number_format($this->_max/100000, 1) . 'kB';
      public function setMaxSize($num) {
        if (!is_numeric($num)) {
          throw new Exception("Maximum size must be a number.");
        $this->_max = (int) $num;
      public function move($overwrite = false) {
        $field = current($this->_uploaded);
        if (is_array($field['name'])) {
          foreach ($field['name'] as $number => $filename) {
            // process multiple upload
            $this->_renamed = false;
            $this->processFile($filename, $field['error'][$number], $field['size'][$number], $field['type'][$number], $field['tmp_name'][$number], $overwrite);   
        } else {
          $this->processFile($field['name'], $field['error'], $field['size'], $field['type'], $field['tmp_name'], $overwrite);
      public function getMessages() {
        return $this->_messages;
      protected function checkError($filename, $error) {
        switch ($error) {
          case 0:
            return true;
          case 1:
          case 2:
            $this->_messages[] = "$filename exceeds maximum size: " . $this->getMaxSize();
            return true;
          case 3:
            $this->_messages[] = "Error uploading $filename. Please try again.";
            return false;
          case 4:
            $this->_messages[] = 'No file selected.';
            return false;
          default:
            $this->_messages[] = "System error uploading $filename. Contact webmaster.";
            return false;
      protected function checkSize($filename, $size) {
        if ($size == 0) {
          return false;
        } elseif ($size > $this->_max) {
          $this->_messages[] = "$filename exceeds maximum size: " . $this->getMaxSize();
          return false;
        } else {
          return true;
      protected function checkType($filename, $type) {
        if (empty($type)) {
          return false;
        } elseif (!in_array($type, $this->_permitted)) {
          $this->_messages[] = "$filename is not a permitted type of file.";
          return false;
        } else {
          return true;
      public function addPermittedTypes($types) {
        $types = (array) $types;
        $this->isValidMime($types);
        $this->_permitted = array_merge($this->_permitted, $types);
      protected function isValidMime($types) {
        $alsoValid = array('image/tiff',
                           'application/pdf',
                           'text/plain',
                           'text/rtf');
          $valid = array_merge($this->_permitted, $alsoValid);
        foreach ($types as $type) {
          if (!in_array($type, $valid)) {
            throw new Exception("$type is not a permitted MIME type");
      protected function checkName($name, $overwrite) {
        $nospaces = str_replace(' ', '_', $name);
        if ($nospaces != $name) {
          $this->_renamed = true;
        if (!$overwrite) {
          $existing = scandir($this->_destination);
          if (in_array($nospaces, $existing)) {
            $dot = strrpos($nospaces, '.');
            if ($dot) {
              $base = substr($nospaces, 0, $dot);
              $extension = substr($nospaces, $dot);
            } else {
              $base = $nospaces;
              $extension = '';
            $i = 1;
            do {
              $nospaces = $base . '_' . $i++ . $extension;
            } while (in_array($nospaces, $existing));
            $this->_renamed = true;
        return $nospaces;
      protected function processFile($filename, $error, $size, $type, $tmp_name, $overwrite) {
        $OK = $this->checkError($filename, $error);
        if ($OK) {
          $sizeOK = $this->checkSize($filename, $size);
          $typeOK = $this->checkType($filename, $type);
          if ($sizeOK && $typeOK) {
            $name = $this->checkName($filename, $overwrite);
            $success = move_uploaded_file($tmp_name, $this->_destination . $name);
            if ($success) {
                $message = "$filename uploaded successfully";
                if ($this->_renamed) {
                  $message .= " and renamed $name";
                $this->_messages[] = $message;
            } else {
              $this->_messages[] = "Could not upload $filename";
      public getFilenames() {
        return $this->_filenames;
    ?>
    The error is Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE.   
    I have not worked with oop before and have only very briefly looked at the principle was on my foundation degree.

  • Modify a color into Pantone with JS

    Hi.
    I'm working on a application in Javascript. My claim is to manage the colors in my document. So, for example, I have to change some specific colors in "spot" or "process" model.
    if (value==1){
    app.activeDocument.colors.item(7).model=ColorModel.spot
    It works!
    My question is this: how can I say "app.activeDocument.colors.item(7)" have to be the "PANTONE 200 C"?
    I tried to use "importAdobeSwatchbookSpotColor" like this:
    app.activeDocument.importAdobeSwatchbookSpotColor("PANTONE 200 C")
    but it's useful just to add new Pantone colors, while I don't know how to change an existing color into a specific Pantone
    Thank you very much
    Enzo

    Thank you. I use Pantone Color because a lot of publications that I manage are in 2 colors: usually black and a specific Pantone defined by the client. It's faster (and more precise) to link the Pantone colors by my javascript application instead to find the CMYK values before. My application has a pop-up where you insert the Pantone code, after that it exports a pdf file with the selected color, creating before aliases on the Pantone if there are other colors different by the black.
    Anyway, the Dave's suggestion works.
    Thank you very much
    Enzo

  • Is it possible to move/resize individual objects in Compound Clipping Path in Illustrator?

    Hi,
    I have created a Compound Clipping Path in Adobe Illustrator, and wonder if there is a way of moving/resizing individual objects in this path that create the mask? At the moment when I try to change just one object it changes them all.
    Essentially I am try to make fine adjustments to the mask.
    Thanks in advance for any help,
    Nick

    Adobe updated masks in CS4, which has made to editing inidividual contents within masks more difficult, especially more complex masks (eg: nested)
    When you select a mask now you select the mask and the contents. 5 ways to help you select the elements within the mask:
    To get into the contents to edit them use the "Edit Contents" button (the 2nd one in the top left).
    Flip down your layers palette triangles, to try and make selections there
    Individually select items with the hollow arrow tool or group select tool, and hide them, then unhide to have the sum of the elements selected.
    Save back to CS3 and work in CS3 
    Isolation Mode (though that mode is preferred disabled by many users)
    Be careful as if you ever release a mask, this can entirely mess up your layeringorder on occasion, and undo won't help. Save before releasing a mask, sometimes you can undo, sometimes undo will not be abel to reconstruct you layer order.

  • How to integrate existing value into one in hierarchy char.

    I have a char. hierarchy call ZCOMP_CODE. ZLEADER is compounding with ZCOUNTRY.
    The master data in ZCOMP_CODE looks like
    ZLEADER;ZCOMP_CODE;
    010;1000;
    010;1001;
    010;1002;
    020;1000;
    021;1000;
    In query  I have char. ZCOMP_CODE in row and one KF ZREVENUE in column. Previously we calculated ZLEADER 010,020,021 separately. But, now I want to calculated ZLEADER 020 and 021 together. Does anyone know how to integrate two existing value into one and display it in query? Do I need to create a new hierarchy node for including 020,021?
    Thanks!
    rajatina.

    don't know how you can achieve this in the query...
    but in the workbench there's a solution. Just add a routine in the transformation to change 021 to 020.
    if you need to have still the 021 info somewhere, create a ZCOMPANY_CODE2 where you store only the values needed (010, 020)... use this company code as hierarchy in the report, and use the other company code for displaying the 021...
    hope it's clear,
    M.

  • I am having problems importing some CDs into iTunes on a laptop with Windows 8. Most CDs import without problem. The ones I can't import can be imported into iTunes with Windows 7. Does anybody know why this problem is occurring?

    I am having problems importing some CDs into iTunes on a laptop with Windows 8. Most CDs import without problem. The ones I can't import can be imported into iTunes with Windows 7. Does anybody know why this problem is occurring?

    First-off, this seems to be a general problem with 10.4 (across all the operating systems of which I am aware).  Unfortunately, I cannot provide a permanent solution but, if you need a quick fix, this will (hopefully) work for you.
    For some inexplicable reason, iTunes no longer recognises standard Windows paths.  For example:
    Y:\Music\Buddy Holly\Buddy Holly - Rave On.mp3
    The end result is that it will import a playlist with no content. 
    It will, however, recognise the equivalent Apple paths which look like this:
    file://localhost/Y:/Buddy Holly/Buddy Holly - Rave On.mp3
    It is possible to convert your existing playlists using a few basic replace commands in something like Notepad.  In my case, I made some code changes in my music manager and now generate two sets of playslists (one standard and one to accommodate iTunes).
    Forgive me foir stating the obvious but please remember to make sure that the disk / path containing your music is accessible when doing the import otherwise you will probably get a blank result.  Note that you can do a bulk import by selecting all the (revised) playlists and dragging them onto the iTunes sidebar.
    I am sorry that this is not a "clean" solution but it will work if you are in a bind.  The only alternative of which I am aware is to wait for Apple to fix the problem.

  • Compile in jsxbin with javascript script

    It's posible compile a file into jsxbin with a javascript function ?
    El mensaje fue editado por: thinkink_es
    Or call a command line process in ESTK via execute() ??

    It´s GREAT. Thanks
    Ok, is what I look
    Its the same, working in indesing or in ESTK, if its possible write a lines for orientation.
    I know well scripting in indesing, but don´t in ESTK, i think its similar, but i don't know.
    Exists a ESTK scripting forum?
    or some
    pdf scripting guide?
    Thanks a lot!!

  • Adding panel with Javascript?

    Hi,
    I've written a number of script add-ons for InDesign CS2 and managed to get them installed as menu items. But what I'd really like to do is create a new panel with buttons to activate the scripts inside it. Is there any way I can do this with Javascript? (It needs to use JS as the scripts are used on Macs and PCs).
    Thanks for any help in advance!

    Indeed. This is the code I used, adapted from having found it elsewhere on the net. It doesn't appear to work in CS2, though; CS2 seems to dislike the "targetengine" which sets these things to run permanently in the background.
    // MenuInst.jsx
    // An InDesign JavaScript
    @@@BUILDINFO@@@ "MenuInst.jsx" 1.0.0 1-September-2008
    // Installs menu items.
    // File needs to get dropped into the startup scripts directory
    #targetengine "session"
    // Path to where the scripts are being installed
    var setpath = "~/Library/Preferences/Adobe InDesign/Version 5.0 ME/Scripts/Scripts Panel/";
    var myScript1 = new File(setpath + "ScriptName.jsx");
    var myScriptAction1 = app.scriptMenuActions.add("Menu Text");
    var myEventListener1 = myScriptAction1.eventListeners.add("onInvoke", myScript1, false);
    var myScript2 = new File(setpath + "ScriptName2.jsx");
    var myScriptAction2 = app.scriptMenuActions.add("Menu Text 2");
    var myEventListener2 = myScriptAction2.eventListeners.add("onInvoke", myScript2, false);
    var myScript3 = new File(setpath + "ScriptName3.jsx");
    var myScriptAction3 = app.scriptMenuActions.add("Menu Text 3");
    var myEventListener3 = myScriptAction3.eventListeners.add("onInvoke", myScript3, false);
    var myScript4 = new File(setpath + "ADifferentMenu.jsx");
    var myScriptAction4 = app.scriptMenuActions.add("Other Menu Text");
    var myEventListener4 = myScriptAction4.eventListeners.add("onInvoke", myScript4, false);
    try{
    var myScriptMenu = app.menus.item("$ID/Main").submenus.item("First Menu");
    myScriptMenu.title;
    catch (myError){
    var myScriptMenu = app.menus.item("$ID/Main").submenus.add(First Menu");
    try{
    var myScriptMenu2 = app.menus.item("$ID/Main").submenus.item("Second Menu");
    myScriptMenu2.title;
    catch (myError){
    var myScriptMenu2 = app.menus.item("$ID/Main").submenus.add("Second Menu");
    var myScriptMenuItem1 = myScriptMenu.menuItems.add(myScriptAction1);
    var myScriptMenuItem2 = myScriptMenu.menuItems.add(myScriptAction2);
    var myScriptMenuItem3 = myScriptMenu.menuItems.add(myScriptAction3);
    var myScriptMenuItem4 = myScriptMenu2.menuItems.add(myScriptAction4);

  • Warp tool following an existing path

    Does anyone of You have an idea if its possible to make the Warp Tool (or any of the liquifying tools) follow an existing path (comparable to the Stroke Path-function in Photoshop)?
    What I want that for is to simulate one of the effects occasionally applied on banknotes where a regular line-pattern is regionally slightly offset within the area of some shape without breaking the lines, as seen here left of the portrait and above the guilloche:
    http://de.wikipedia.org/wiki/Bild:20_ATS_banknote.jpg
    Any suggestions appreciated.

    Christoph,
    Did you find an answer to the modulation effect?
    I downloaded Excentro but am unable to place art as is suggested by Excentro in order to use the stroke width modulation feature.
    I am trying to achieve the same effect you described but cannot seem to find any info from Excentro as to how exactly to place the art in order to then perform this miracle. Is it possible that this feature does not work with Excentro Lite? Maybe one must pay the $500.00 in order to create this effect.
    I imported both types. A photoshop greyscale image tiff and a vector pdf. Both were denied by the program.
    "5. Stroke width modulation and reliefs
    The stroke width of background paths can be changed by either modulation settings specified by the user or by the pixel value of the underlying grayscale image. In the similar way portions of paths located over non-white areas of the underlying image can be offset to create bas-relief like effects.
    Any graphics file in common image formats (raster TIFF or vector PDF) can be imported into an Excentro document to be used with this feature. You can even apply Step & Repeat sets to the images to vary its position, size, brightness or contrast."

  • Retaining BSP page chages with Javascript popup window

    Hi Experts
    We are using a customized BSP application for our performance
    Management. To propmt users for saving their appraisal documents
    before a session timeout,we used an Javascript popup message(alert
    window). This window doesnot affect the BSP page in any way.(code
    provided below)
    Per changed requirement,we now have to retain the BSP page values once
    the user clicks 'OK' on this javascript popup window. I used the page
    refresh option with script. But this is erasing the earlier values.
    Can anyone tell me,how i can holdback the BSP page values after the
    user action on the popup window. If a piece of code is provided,it
    would be greatly appreciated.
    Thanks in Advance
    Alan
    Existing code for timeout popup
    javascript code
    function remind (){
    var msg = "Your Session will expire in the next 10 minutes. Please
    save your data.";
    alert the msg(using alert box)
    <%
    data: v_rem type string.
    DATA: port TYPE STRING.
    data: l_timer type string.
    port = request->get_header_field(
    if_http_header_fields_sap=>server_port ).
    DATA: services TYPE TABLE OF ICM_SINFO.
    CALL FUNCTION 'ICM_GET_INFO' TABLES SERVLIST = services.
    FIELD-SYMBOLS: <service> TYPE ICM_SINFO.
    DATA: wait TYPE STRING.
    READ TABLE services ASSIGNING <service> WITH KEY service = port.
    wait = <service>-KEEPALIVE - 10.
    CONDENSE wait.
    ****Start Changes: Timeout
    **l_timer = wait * 60 * 1000.
    l_timer = 1 * 60 * 1000.
    ****End Changes
    concatenate `'remind(` wait `)',` l_timer into v_rem.
    %>
    <htmlb:content design = "DESIGN2002+DESIGN2003"
    sessionManagement = "TRUE"
    controlRendering = "SAP">
    <htmlb:page title = "<%= otr(ZPMDGL/TITLE_DOCUMENT) %>"
    disableBackspaceNavigation = "TRUE" onLoad pass v_rem as a parameter to setTimeout

    duplicate post locked.
    Raja

  • Retaining BSP Page values with Javascript popup window

    Hi Experts
    We are using a customized BSP application for our performance
    Management. To propmt users for saving their appraisal documents
    before a session timeout,we used an Javascript popup message(alert
    window). This window doesnot affect the BSP page in any way.(code
    provided below)
    Per changed requirement,we now have to retain the BSP page values once
    the user clicks 'OK' on this javascript popup window. I used the page
    refresh option with script. But this is erasing the earlier values.
    Can anyone tell me,how i can holdback the BSP page values after the
    user action on the popup window. If a piece of code is provided,it
    would be greatly appreciated.
    Thanks in Advance
    Alan
    Existing code for timeout popup
    javascript code
    function remind (){
    var msg = "Your Session will expire in the next 10 minutes. Please
    save your data.";
    alert the msg(using alert box)
    <%
    data: v_rem type string.
    DATA: port TYPE STRING.
    data: l_timer type string.
    port = request->get_header_field(
    if_http_header_fields_sap=>server_port ).
    DATA: services TYPE TABLE OF ICM_SINFO.
    CALL FUNCTION 'ICM_GET_INFO' TABLES SERVLIST = services.
    FIELD-SYMBOLS: <service> TYPE ICM_SINFO.
    DATA: wait TYPE STRING.
    READ TABLE services ASSIGNING <service> WITH KEY service = port.
    wait = <service>-KEEPALIVE - 10.
    CONDENSE wait.
    ****Start Changes: Timeout
    **l_timer = wait * 60 * 1000.
    l_timer = 1 * 60 * 1000.
    ****End Changes
    concatenate `'remind(` wait `)',` l_timer into v_rem.
    %>
    <htmlb:content design            = "DESIGN2002+DESIGN2003"
                   sessionManagement = "TRUE"
                   controlRendering = "SAP">
    <htmlb:page title = "<%= otr(ZPMDGL/TITLE_DOCUMENT) %>"
                  disableBackspaceNavigation = "TRUE" onLoad pass v_rem as a  parameter to setTimeout
    Edited by: Bala Subramanyam Duvvuri on Apr 8, 2008 6:32 AM
    Edited by: Bala Subramanyam Duvvuri on Apr 8, 2008 6:34 AM
    Edited by: Bala Subramanyam Duvvuri on Apr 8, 2008 6:35 AM
    Edited by: Bala Subramanyam Duvvuri on Apr 8, 2008 6:36 AM
    Edited by: Bala Subramanyam Duvvuri on Apr 8, 2008 6:36 AM
    Edited by: Bala Subramanyam Duvvuri on Apr 8, 2008 6:37 AM
    Edited by: Bala Subramanyam Duvvuri on Apr 8, 2008 6:38 AM
    Edited by: Bala Subramanyam Duvvuri on Apr 8, 2008 6:39 AM
    Edited by: Bala Subramanyam Duvvuri on Apr 8, 2008 6:40 AM
    Edited by: Bala Subramanyam Duvvuri on Apr 8, 2008 6:40 AM
    Edited by: Bala Subramanyam Duvvuri on Apr 8, 2008 6:44 AM
    Edited by: Bala Subramanyam Duvvuri on Apr 8, 2008 6:46 AM

    If the BSP page is refrehed, all the user input it sent back to the server. If you don't do anything special, the input is lost and not sent back to the client again. You can go to your controller class' DO_HANDLE_DATA to read the user input, and store it in the controller class to send it back to the client.
    If you don't use controller classes, the equivalent would be onInputProcessing. A more advanced alternative would be to use MVC model binding, which would do most of the stuff automatically for you.

Maybe you are looking for

  • Materail Document not seen in the MSEG table

    Hi ALL, Can anyone help in finding a solution for the following problem. PO has PO history tab view where we can see the GR, IR details. But when we try to open the material document the error message is "Document - does not exist in calendar year 20

  • How to make photoshop go faster, faster!?

    Right now I'm using a Mac G5 dual 1.8hz PowerPC with 2GB RAM, PS 7.0. My typical files are 400 - 500mb and can have as many as 500-600 layers. Pixel dimension is 5400 x 3150 pixels and after opening my lower left shows 64.9m/1.42 G. It takes a long t

  • Http Service Round Up problem

    Hi, I am using flex3 in the client side and java 5 in the server side in a web application. In my application to exchange the data I am using HttpService mechanism. Now in this mechanism I am facing the following problem. A field is alphanumeric in n

  • Do I need to transport webtemplate when I send query changes?

    Hai All,    I have moved my new query, web template for the query and the role to test from dev some time ago. Now I made some changes to query. Do I need to send all these 3 again to BWT? , OR,  just sending the query changes will be ok?. Thanks In

  • Multiple recordsets

    The OLE DB Provider for Oracle 8.x has the capacity to get multiple recordsets from a stored procedure. But this future worked slower than getting recordset by recordset, one by one. This was because behind de scene the Provider performed several rou