NEW! PaintShop Pro 2019

How to document current properties

Moderator: Kathy_9

How to document current properties

Postby Corelius » Mon May 13, 2019 6:29 pm

I know how to use Image Information and/or the History Palette to get access to editing histories that can be viewed or saved, but is there a way to export or otherwise get access to a text description of all the currently-set values for the layers, etc.?

In other words, if I've got a Curves layer that adjusts the separate R, G & B channels (for example), the text description I'm envisioning would include all those tweaked values as they're currently set (only), and would likewise show the current values for all the other layers.
Corelius
 
Posts: 13
Joined: Mon May 13, 2019 6:18 pm
operating_system: Windows 7 Home Premium
System_Drive: C
32bit or 64bit: 64 Bit
Corel programs: Paintshop Pro X9

Re: How to document current properties

Postby ehume » Mon May 13, 2019 9:08 pm

Intriguing question. I looked up the issue in the Help file. I learned that you go to View > Palettes > History (F3 will bring it up directly). Do your edits, then click on the down arrow and select "Save session history to text file," and when you invoke the Save As dialog, pick the Text File option for file type, save as txt. You can then open the file in situ.
Had PS3, PSP3; Installed: PSP-4.12, 5.03, 6.02, 7.04 (liked it a lot & used it for years), 9.00, 10, 11, x4, x6, x7, x8, x9; now using PSPx10 (PSP 2018; version 20.2.0.1 x64) on Win 10-64; rejected PSP 2019.
User avatar
ehume
 
Posts: 454
Joined: Tue Sep 18, 2012 2:05 am
operating_system: Windows 7 Home Premium
System_Drive: C
32bit or 64bit: 64 Bit
motherboard: Gigabyte GA-Z87X-UD4H
processor: i7 4770k
ram: 16GB
Video Card: Intel HD4600
sound_card: no_sound_card
Hard_Drive_Capacity: 512GB+4TB
Monitor/Display Make & Model: Acer KN242HYL
Corel programs: PSP 2018 32b & 64b, AS3 64b, PE5 64b

Re: How to document current properties

Postby LeviFiction » Mon May 13, 2019 9:15 pm

History will show you your most recent changes only. So the values you changed. Which is very useful, it narrows it down to what you did at that moment.

If you want all current values. That you can do with a script.

Depending on the details you want, and how you want it to work it it's pretty easy to do. In fact just to double check I made a very simple "Print current layer properties" script.

It should be noted, however, they would not be able to return LayerFX properties. One of my biggest gripes with PSP ever since LayerFX were introduced is the fact that we cannot grab the current values. We can only change them. And only on layers that have had their properties dialogue opened at least once. (Technically, with a lot of research and time we could make a PSPImage file format parser that could grab that information, but it would take a bit)

So, curves adjustment layer. Yes we can get those Just made a very quick test script and this was the output

Code: Select all
{ 'CurveParams' :  { 'Blue' :  [ ( 0 ,  0 ) ,  ( 255 ,  255 ) ] ,
                 'Clipping': 0 ,
                 'Green': [ ( 0 ,  0 ) ,  ( 255 ,  255 ) ] ,
                 'RGB': [ ( 0 ,  0 ) ,  ( 74 ,  39 ) ,  ( 152 ,  187 ) ,  ( 255 ,  255 ) ] ,
                 'Red': [ ( 0 ,  0 ) ,  ( 255 ,  255 ) ] } ,
 'General': { 'BlendMode' :  0 ,
             'GroupLink': False ,
             'IsTransparencyLocked': False ,
             'IsVisible': True ,
             'LinkSet': 0 ,
             'Name': u'Curves 1' ,
             'Opacity': 100 ,
             'PaletteHighlightColor': ( 255 ,  255 ,  64 ) ,
             'UseHighlight': False } ,
 'IsBackground': False ,
 'LayerPositionRect': ( ( 0.0 ,  0.0 ) ,  1920.0 ,  1080.0 ) ,
 'LayerRect': ( ( 0.0 ,  0.0 ) ,  0.0 ,  0.0 ) ,
 'LayerType': 6 ,
 'Path': ( 0 ,  1 ,  [ ] ,  False ) }


If you just want what PSP gives out that's the easiest thing in the world. If you want specific formatting, just need to know what that is and it can easily be made.

Do you want it exported to a text file or just displayed in the Output palette so you can copy and paste it manually?
LeviFiction
Advisor
 
Posts: 5399
Joined: Thu Oct 02, 2008 1:07 pm
Location: USA
operating_system: Windows 10
System_Drive: C
32bit or 64bit: 64 Bit
Corel programs: PSP: 8, 9, X, XI, X2, X8,X9, 2018, 2019

Re: How to document current properties

Postby Corelius » Mon May 13, 2019 9:24 pm

LeviFiction wrote:If you want all current values. That you can do with a script.


Thanks for the prompt response! I don't have much experience with PSP scripts.

LeviFiction wrote:Do you want it exported to a text file or just displayed in the Output palette so you can copy and paste it manually?


Just displayed so I can copy and paste it (or just view it) would be great.
Corelius
 
Posts: 13
Joined: Mon May 13, 2019 6:18 pm
operating_system: Windows 7 Home Premium
System_Drive: C
32bit or 64bit: 64 Bit
Corel programs: Paintshop Pro X9

Re: How to document current properties

Postby Corelius » Wed May 29, 2019 3:52 am

LeviFiction wrote:So, curves adjustment layer. Yes we can get those Just made a very quick test script and this was the output

Code: Select all
{ 'CurveParams' :  { 'Blue' :  [ ( 0 ,  0 ) ,  ( 255 ,  255 ) ] ,
                 'Clipping': 0 ,
                 'Green': [ ( 0 ,  0 ) ,  ( 255 ,  255 ) ] ,
                 'RGB': [ ( 0 ,  0 ) ,  ( 74 ,  39 ) ,  ( 152 ,  187 ) ,  ( 255 ,  255 ) ] ,
                 'Red': [ ( 0 ,  0 ) ,  ( 255 ,  255 ) ] } ,
 'General': { 'BlendMode' :  0 ,
             'GroupLink': False ,
             'IsTransparencyLocked': False ,
             'IsVisible': True ,
             'LinkSet': 0 ,
             'Name': u'Curves 1' ,
             'Opacity': 100 ,
             'PaletteHighlightColor': ( 255 ,  255 ,  64 ) ,
             'UseHighlight': False } ,
 'IsBackground': False ,
 'LayerPositionRect': ( ( 0.0 ,  0.0 ) ,  1920.0 ,  1080.0 ) ,
 'LayerRect': ( ( 0.0 ,  0.0 ) ,  0.0 ,  0.0 ) ,
 'LayerType': 6 ,
 'Path': ( 0 ,  1 ,  [ ] ,  False ) }


If you just want what PSP gives out that's the easiest thing in the world. If you want specific formatting, just need to know what that is and it can easily be made.

pprint gives me the output below, which is almost the same as your sample, but I prefer having all the nodes on one line (your result). What code did you use to format the layer properties?

Code: Select all
{ 'CurveParams' :  { 'Blue' :  [ ( 0 ,  0 ) ,  ( 255 ,  255 ) ] ,
                 'Clipping': 0 ,
                 'Green': [ ( 0 ,  0 ) ,  ( 255 ,  255 ) ] ,
                 'RGB': [ ( 0 ,  0 ) ,
                         ( 38 ,  18 ) ,
                         ( 64 ,  42 ) ,
                         ( 128 ,  110 ) ,
                         ( 160 ,  152 ) ,
                         ( 192 ,  192 ) ,
                         ( 228 ,  224 ) ,
                         ( 255 ,  255 ) ] ,
                 'Red': [ ( 0 ,  0 ) ,  ( 255 ,  255 ) ] } ,
 'General': { 'BlendMode' :  0 ,
             'GroupLink': False ,
             'IsTransparencyLocked': False ,
             'IsVisible': False ,
             'LinkSet': 0 ,
             'Name': u'Curves 1' ,
             'Opacity': 100 ,
             'PaletteHighlightColor': ( 255 ,  255 ,  64 ) ,
             'UseHighlight': False } ,
 'IsBackground': False ,
 'LayerPositionRect': ( ( 0.0 ,  0.0 ) ,  2886.0 ,  1958.0 ) ,
 'LayerRect': ( ( 0.0 ,  0.0 ) ,  0.0 ,  0.0 ) ,
 'LayerType': 6 ,
 'Path': ( 0 ,  4 ,  [ ] ,  False ) }
Corelius
 
Posts: 13
Joined: Mon May 13, 2019 6:18 pm
operating_system: Windows 7 Home Premium
System_Drive: C
32bit or 64bit: 64 Bit
Corel programs: Paintshop Pro X9

Re: How to document current properties

Postby LeviFiction » Wed May 29, 2019 1:58 pm

PPrint includes a default width of 80 characters. If it falls outside that width, it finishes its current object and then text wraps. In my example, that entire line is only 77 characters (minus the indents). So it fits just fine.

You have a lot of RGB points. Because the entire length of the list of tuples is more than 80, (146 to be exact) it defaults to printing each tuple on its own line for a better view. If you increase the width to say 160, it should all fit, but any list longer than 160 characters will result in the same kind of output.

There are two parameters that you can use to help with this.

1) Change the width
Code: Select all
#Really quick, when I import pprint I change the name to pp so that's why it's written this way

pp.pprint(result, width=160)


2) Change "Compact" to true. When compact is on it'll try and fit as many sub-items on a single line as possible within the width limit. It's set to false by default which puts one item per line.

Code: Select all
pp.pprint(result, compact=True)


You can, of course, mix those two options.
LeviFiction
Advisor
 
Posts: 5399
Joined: Thu Oct 02, 2008 1:07 pm
Location: USA
operating_system: Windows 10
System_Drive: C
32bit or 64bit: 64 Bit
Corel programs: PSP: 8, 9, X, XI, X2, X8,X9, 2018, 2019

Re: How to document current properties

Postby Corelius » Wed May 29, 2019 5:50 pm

LeviFiction wrote:There are two parameters that you can use to help with this.

Thanks for the help. I'm PSPX9, hence Python 2.7.5, hence no "compact" kw (if I understand correctly), but I can increase the width.
Corelius
 
Posts: 13
Joined: Mon May 13, 2019 6:18 pm
operating_system: Windows 7 Home Premium
System_Drive: C
32bit or 64bit: 64 Bit
Corel programs: Paintshop Pro X9

Re: How to document current properties

Postby Corelius » Wed May 29, 2019 8:44 pm

If I want to get the name of the LayerType, rather than the value, what's the simplest way to do that?

In other words, this doesn't work...

Code: Select all
print Props['LayerType'].Name

...and this doesn't work...

Code: Select all
print App.Constants(Props['LayerType']).Name

...but I'm hoping there's a similarly simple way to extract the LayerType's name from ReturnLayerProperties.
Corelius
 
Posts: 13
Joined: Mon May 13, 2019 6:18 pm
operating_system: Windows 7 Home Premium
System_Drive: C
32bit or 64bit: 64 Bit
Corel programs: Paintshop Pro X9

Re: How to document current properties

Postby LeviFiction » Wed May 29, 2019 10:10 pm

Semi-simple. Ugh, I am not going to explain this well.

2 main ways I can think of. One is programmatic, the other is just creating a list.

So since you seem pretty comfortable with programming I think I can forego the list explanation. But just in case, you create a list like this LayerTypes = ['Raster', 'Vector', 'Mask',...] and use the Layer Type that is returned as an index for that list. If you look in the scripting sub-forum the sticky post includes the full API, which I believe you already know and have found. As you go through that API you can see the constants and what their names and values are.

Programmatically, PSP provides all of that same information in the App.Constants object.

This is outlined in the Scripting for Script Author's PDF.

Each Constant in PSP can be accessed through App.Constants using dot notation. So LayerType can be accessed like this App.Constants.LayerType will return the PSPEnumType Object for LayerType. EnumTypes contain a list of constants for that type and their value. Each PSPEnumType has 3 methods Name(), Description(), Values().

Values() will return a list of Tuples. Each tuple is laid out (Name, Value, Description) for each of the values associated with that type.

Using this you can see it's very easy to create a simple loop to go through all of the values in the list and return the Name or description of the tuple that matches the value. Here I'm gonna use a list comprehension to put it all on one line but a simple for loop will work just as well.

Code: Select all
type  = list( x[0] for x in App.Constants.LayerType.Values() if x[1] == Prop['LayerType'] )[0]


So while looking complex, it's very simple. List comprehensions create generator objects in Python. So we need to convert it to a list that's why we start with list(). Inside the list command we put our list comprehension. We grab only the first value of the tuple (Name) for each tuple in the App.Constants.LayerType.Values() list. And we only do it if the second value in the tuple (Value) is equal to our LayerType value. We then return the first, and hopefully only, item in the list with index 0.

Here's the same thing using a simple for loop

Code: Select all
for x in App.Constants.LayerType.Values():
  if x[1] == Prop['LayerType']:
    break;

type = x[0]  #Returns the name of the constant


I can, of course, create a very simple function that will let you grab any value by simply typing the Constant type and value as parameters. But that might be a bit overkill for what you want.

Code: Select all
def getConstant(ConstantType, Value):
    return list(y for y in list(x for x in App.Constants.All() if x.Name() == ConstantType)[0].Values() if y[1] == Value)[0]

getConstant('LayerType', Prop['LayerType'][0]  #Returns Name of LayerType
LeviFiction
Advisor
 
Posts: 5399
Joined: Thu Oct 02, 2008 1:07 pm
Location: USA
operating_system: Windows 10
System_Drive: C
32bit or 64bit: 64 Bit
Corel programs: PSP: 8, 9, X, XI, X2, X8,X9, 2018, 2019

Re: How to document current properties

Postby Corelius » Wed May 29, 2019 10:28 pm

LeviFiction wrote:Semi-simple. ...

Code: Select all
for x in App.Constants.LayerType.Values():
  if x[1] == Prop['LayerType']:
    break;

type = x[0]  #Returns the name of the constant


Yes! That tuple-parsing for loop was just what I was looking for (and couldn't quite manage to arrive at, not being a Python guy).

And yeah, I knew the make-my-own-list method was a fallback, but was hoping there was a more elegant way, and you've supplied it.

Thank you!
Corelius
 
Posts: 13
Joined: Mon May 13, 2019 6:18 pm
operating_system: Windows 7 Home Premium
System_Drive: C
32bit or 64bit: 64 Bit
Corel programs: Paintshop Pro X9

Re: How to document current properties

Postby LeviFiction » Wed May 29, 2019 11:19 pm

If you don't mind my asking, what languages are you most familiar with? Are you more C++, Java, Javascript, Ruby, Lua, GoLang, Dart?
LeviFiction
Advisor
 
Posts: 5399
Joined: Thu Oct 02, 2008 1:07 pm
Location: USA
operating_system: Windows 10
System_Drive: C
32bit or 64bit: 64 Bit
Corel programs: PSP: 8, 9, X, XI, X2, X8,X9, 2018, 2019

Re: How to document current properties

Postby Corelius » Wed May 29, 2019 11:57 pm

LeviFiction wrote:If you don't mind my asking, what languages are you most familiar with? Are you more C++, Java, Javascript, Ruby, Lua, GoLang, Dart?

Not a programmer by profession.

VBA (Word & Access) most heavily, and a limited amount of VBScript and Javascript.

(Also DOS, askSam for DOS, and WordPerfect macros, if you want me to wax nostalgic.)
Corelius
 
Posts: 13
Joined: Mon May 13, 2019 6:18 pm
operating_system: Windows 7 Home Premium
System_Drive: C
32bit or 64bit: 64 Bit
Corel programs: Paintshop Pro X9

Re: How to document current properties

Postby LeviFiction » Thu May 30, 2019 12:41 am

Yeah VB! Don't see VB mentioned very often anymore. Sure VBA is different from full VB.NET but still. Grew up on Basic and DOS Batch Script.
LeviFiction
Advisor
 
Posts: 5399
Joined: Thu Oct 02, 2008 1:07 pm
Location: USA
operating_system: Windows 10
System_Drive: C
32bit or 64bit: 64 Bit
Corel programs: PSP: 8, 9, X, XI, X2, X8,X9, 2018, 2019

Re: How to document current properties

Postby Corelius » Thu May 30, 2019 7:47 pm

Just in case anyone who ever stumbles onto this thread can benefit from a duffer-produced script that sends the current properties of all the layers to a log file, mine's at the end of this post.

A few notes:

1. The script sends the results to a text file (with a .log extension), and anyone else who ever uses this script will undoubtedly want to adjust the folder (if not the filename) on line 15.

2. Each set of results has a header with the name of the image and the date & time the properties were logged.

3. It appends the results to the end of the log file (if it already exists), so the results accumulate unless you clean out the log file from time to time. But it starts a new log file every month. If you run the script today, the results will end up in a file named LayerData_1905.log, but if you run it on June 1, they'll end up in a file named LayerData_1906.log.

4. At the end of the script, it offers to open the log in Notepad.

5. For anyone who doesn't know, specific scripts can be added to toolbars. If you right-click on the Standard toolbar (for example), and then choose Customize, and then the Scripts tab, you can select a script from the list and turn it into a Bound Script (with an icon), and drag it onto the toolbar.

As previously noted, I'm a Python n00b, and my PSP experience is also pretty limited, and anyone who wants to post a tweaked version of my script that improves it, or adds features, or whatever, is definitely welcome and encouraged to do so.

Code: Select all
from PSPApp import *
import pprint
import datetime
import subprocess

def ScriptProperties():
    return {
        'Host': u'PaintShop Pro',
        'Host Version': u'18.00'
        }

def Do(Environment):
    now = datetime.datetime.now()
    FourDigitYrMo = now.strftime("%Y")[2:] + now.strftime("%m")
    LogFile = 'C:\\D\\ProgD\\PSPX9\\Logs\\LayerData_' + FourDigitYrMo + '.log'
    MajorLine = ('=' * 72) + '\n'
    MinorLine = ('-' * 68) + '\n'

    f = open(LogFile, 'a')
    f.write(MajorLine)
    f.write(App.TargetDocument.Name + '\n')
    f.write('   ' + now.strftime("%Y-%m-%d, %H:%M") + '\n')
    f.write(MajorLine)

    # get the path from the bottom from the active layer so we can restore it when done
    Props = App.Do( Environment, 'ReturnLayerProperties' )
    PathBack = Props[ 'Path' ]

    # start by selecting the bottommost layer in the image. 
    App.Do( Environment, 'SelectLayer', { 'Path': (9999,-9999, [], False ) } )

    # now iterate up the layer stack
    FoundLayer = True
    LayerNum = 1
    while FoundLayer == True:
        # get all layer properties
        Props = App.Do( Environment, 'ReturnLayerProperties' )
        # To create my layer heading, I also separately assign the
        # names of the layer and the layer's type to variables.
        LayerName = Props['General']['Name']
        for x in App.Constants.LayerType.Values():
            if x[1] == Props['LayerType']:
                break;
        LayerTypeName = x[0]  # Returns the name of the constant
       
        if LayerNum > 1:
            f.write(MinorLine)
        f.write(LayerName + '              [--' + LayerTypeName + ' layer--]\n')
        f.write(MinorLine)
        pprint.pprint(Props, width=200, stream=f)

        # I left the next 6 lines of code here (commented out) just for demo purposes,
        # in case anyone else wants to be more selective about what gets documented.
        # if Props[ 'LayerType' ] == App.Constants.LayerType.Curves:
            # f.write('RGB: ' + str(Props[ 'CurveParams' ][ 'RGB' ]) + '\n')
            # f.write('Red: ' + str(Props[ 'CurveParams' ][ 'Red' ]) + '\n')
            # f.write('Green: ' + str(Props[ 'CurveParams' ][ 'Green' ]) + '\n')
            # f.write('Blue: ' + str(Props[ 'CurveParams' ][ 'Blue' ]) + '\n')
            # f.write('\n'.join("{}\t{}".format(k, v) for k, v in Props['CurveParams'].items()) + '\n')

        # go to the next layer
        FoundLayer = App.Do( Environment, 'SelectNextLayer' )
        LayerNum = LayerNum + 1

    f.write(MajorLine + '\n')
    f.close()

    # now that the loop is done, select the bottom layer and then
    # use the pathback to restore the layer that was active when we started
    App.Do( Environment, 'SelectLayer', { 'Path': (9999,-9999, [], False ) } )
    App.Do( Environment, 'SelectLayer', { 'Path': PathBack } )
   
    MsgBoxResult = App.Do(Environment, 'MsgBox', {
        'Buttons': App.Constants.MsgButtons.YesNo,
        'Icon': App.Constants.MsgIcons.Question,
        'Text': 'Open the log file?'
    })
    if MsgBoxResult == 1:
        CommandString = 'notepad.exe ' + LogFile
        subprocess.Popen(CommandString)


ADDED: Here's an output sample:

Code: Select all
========================================================================
D:\P\Orig\Etc\Gintalaite 01.png
   2019-05-30, 12:00
========================================================================
Background              [--Raster layer--]
--------------------------------------------------------------------
{'BlendRanges': {'BlendRangeBlue': (0, 0, 255, 255, 0, 0, 255, 255),
                 'BlendRangeGreen': (0, 0, 255, 255, 0, 0, 255, 255),
                 'BlendRangeGrey': (0, 0, 255, 255, 0, 0, 255, 255),
                 'BlendRangeRed': (0, 0, 255, 255, 0, 0, 255, 255)},
 'General': {'BlendMode': 0,
             'GroupLink': False,
             'IsTransparencyLocked': False,
             'IsVisible': True,
             'LinkSet': 0,
             'Name': u'Background',
             'Opacity': 100,
             'PaletteHighlightColor': (255, 255, 64),
             'UseHighlight': False},
 'IsBackground': True,
 'LayerPositionRect': ((0.0, 0.0), 1350.0, 1078.0),
 'LayerRect': ((0.0, 0.0), 1350.0, 1078.0),
 'LayerType': 0,
 'Path': (0, 0, [], False)}
--------------------------------------------------------------------
Levels 1              [--Levels layer--]
--------------------------------------------------------------------
{'General': {'BlendMode': 0,
             'GroupLink': False,
             'IsTransparencyLocked': False,
             'IsVisible': True,
             'LinkSet': 0,
             'Name': u'Levels 1',
             'Opacity': 100,
             'PaletteHighlightColor': (255, 255, 64),
             'UseHighlight': False},
 'IsBackground': False,
 'LayerPositionRect': ((0.0, 0.0), 1350.0, 1078.0),
 'LayerRect': ((0.0, 0.0), 0.0, 0.0),
 'LayerType': 11,
 'Levels': {'Blue': (0, 255, 1.0, 0, 255), 'Clipping': 0, 'Green': (0, 255, 1.0, 0, 255), 'RGB': (0, 245, 0.892243819644117, 0, 255), 'Red': (0, 255, 1.0, 0, 255)},
 'Path': (0, 1, [], False)}
--------------------------------------------------------------------
Hue/Saturation/Lightness 1              [--HueSatLum layer--]
--------------------------------------------------------------------
{'General': {'BlendMode': 0,
             'GroupLink': False,
             'IsTransparencyLocked': False,
             'IsVisible': True,
             'LinkSet': 0,
             'Name': u'Hue/Saturation/Lightness 1',
             'Opacity': 100,
             'PaletteHighlightColor': (255, 255, 64),
             'UseHighlight': False},
 'HSL': {'Blue': (0, 0, 0, 195, 225, 255, 285),
         'Colorize': False,
         'Cyan': (0, 0, 0, 135, 165, 195, 225),
         'Green': (0, 0, 0, 75, 105, 135, 165),
         'Magenta': (0, 0, 0, 255, 285, 315, 345),
         'Master': (0, 5, 0),
         'MasterColorize': (0, 0, 0),
         'Red': (0, 0, 0, 315, 345, 15, 45),
         'Yellow': (0, 0, 0, 15, 45, 75, 105)},
 'IsBackground': False,
 'LayerPositionRect': ((0.0, 0.0), 1350.0, 1078.0),
 'LayerRect': ((0.0, 0.0), 0.0, 0.0),
 'LayerType': 7,
 'Path': (0, 2, [], False)}
--------------------------------------------------------------------
Brightness/Contrast 1              [--BrightnessContrast layer--]
--------------------------------------------------------------------
{'BrightnessContrast': {'Brightness': 5, 'BrightnessNew': 0, 'Contrast': 5, 'ContrastNew': 0, 'UseLinearBC': True},
 'General': {'BlendMode': 0,
             'GroupLink': False,
             'IsTransparencyLocked': False,
             'IsVisible': True,
             'LinkSet': 0,
             'Name': u'Brightness/Contrast 1',
             'Opacity': 100,
             'PaletteHighlightColor': (255, 255, 64),
             'UseHighlight': False},
 'IsBackground': False,
 'LayerPositionRect': ((0.0, 0.0), 1350.0, 1078.0),
 'LayerRect': ((0.0, 0.0), 0.0, 0.0),
 'LayerType': 12,
 'Path': (0, 3, [], False)}
========================================================================
Last edited by Corelius on Thu May 30, 2019 11:10 pm, edited 1 time in total.
Corelius
 
Posts: 13
Joined: Mon May 13, 2019 6:18 pm
operating_system: Windows 7 Home Premium
System_Drive: C
32bit or 64bit: 64 Bit
Corel programs: Paintshop Pro X9

Re: How to document current properties

Postby JoeB » Thu May 30, 2019 10:36 pm

I would like to suggest that this last post with the script be moved to the Scripting sub-forum, along with a link in the post in that sub-forum back to this thread with a note that people can click the link to get all of the original conversation.

Alternatively, move or at least copy the complete thread to the sub-forum.
Regards,

JoeB
Using PSP 2019 64bit
JoeB
 
Posts: 2352
Joined: Fri Mar 28, 2008 10:04 pm
Location: Canada
operating_system: Windows 8.1
System_Drive: C
32bit or 64bit: 64 Bit
motherboard: LENOVO 4524PE4 ThinkCentre M91p
processor: 3.10 gigahertz Intel Quad Core i5-2400
ram: 8 GB
Hard_Drive_Capacity: 4.6 TB
Corel programs: PSP 9, X7 to 2019, 32 & 64-bit

Next

Return to PSP Scripting

Who is online

Users browsing this forum: No registered users and 2 guests