adding Pico server (editorial) separately from Premiera host

This commit is contained in:
Jakub Jezek 2019-01-08 16:37:15 +01:00
parent ea0afa0c3f
commit eaa22dc082
192 changed files with 33575 additions and 32185 deletions

View file

@ -0,0 +1,66 @@
/*************************************************************************
* ADOBE CONFIDENTIAL
* ___________________
*
* Copyright 2014 Adobe
* All Rights Reserved.
*
* NOTICE: Adobe permits you to use, modify, and distribute this file in
* accordance with the terms of the Adobe license agreement accompanying
* it. If you have received this file from a source other than Adobe,
* then your use, modification, or distribution of it requires the prior
* written permission of Adobe and also Pype-Club
**************************************************************************/
if(typeof($)=='undefined'){
$={};
}
$._ext = {
//Evaluate a file and catch the exception.
evalFile : function(path) {
try {
$.evalFile(path);
} catch (e) {alert("Exception:" + e);}
},
// Evaluate all the files in the given folder
evalFiles: function(jsxFolderPath) {
var folder = new Folder(jsxFolderPath);
if (folder.exists) {
var jsxFiles = folder.getFiles("*.jsx");
for (var i = 0; i < jsxFiles.length; i++) {
var jsxFile = jsxFiles[i];
$._ext.evalFile(jsxFile);
}
}
},
// entry-point function to call scripts more easily & reliably
callScript: function(dataStr) {
try {
var dataObj = JSON.parse(decodeURIComponent(dataStr));
if (
!dataObj ||
!dataObj.namespace ||
!dataObj.scriptName ||
!dataObj.args
) {
throw new Error('Did not provide all needed info to callScript!');
}
// call the specified jsx-function
var result = $[dataObj.namespace][dataObj.scriptName].apply(
null,
dataObj.args
);
// build the payload-object to return
var payload = {
err: 0,
result: result
};
return encodeURIComponent(JSON.stringify(payload));
} catch (err) {
var payload = {
err: err
};
return encodeURIComponent(JSON.stringify(payload));
}
}
};

View file

@ -0,0 +1,215 @@
# Create panels for Premiere Pro
*Last updated October 2018, current released version = Premiere Pro 13.0, also known as "Premiere Pro CC 2019".
# Premiere Pro 13.0 : API Improvements
We've added many new capabilities for the 13.0 release. All of these are exercised in the PProPanel sample, [available on GitHub](https://github.com/Adobe-CEP/Samples/tree/master/PProPanel).
### Get and set footage interpretation
All aspects of Premiere Pro's footage interpretation are now available via API. Among other workflows, this enables panels to replace a footage reference, while preserving existing interpretation information the user may have already set.
### Get and set sequence settings
Previously, it was possible to clone existing sequences, and create sequences from a sequence preset. It is now possible to get and set each individual sequence setting, providing much more granular control over sequences.
### Detect trackItems which are reversed, have speed adjustments, or are adjustment layers
This important information was previously unavailable.
### Open projectItems in the Source monitor
This allows for sequences, multi-cam sequences, still image sequences and merged clips to be opened in the Source monitor.
### Create sub-sequences
Lift/extract sections of existing sequences into new ones, with control over whether or not to adopt the track mapping present in the original.
### Close open sequences
Close superfluous/distracting sequences.
### Consolidate Duplicates via API
Invoke the same duplicate consolidation functionality available to users.
# Create panels for Premiere Pro
Further [relevant information](https://medium.com/adobetech/how-to-create-your-first-adobe-panel-in-6-easy-steps-f8bd4ed5778) is available from the Extensibility team; these items are included here as an overview.
## 1. Obtain and install these
- [Creative Cloud](http://creative.adobe.com). Use the Creative Cloud
application to install Premiere Pro CC and other Adobe applications with
which you'll be developing and testing, as well as ExtendScript Toolkit
(available under 'previous versions').
- The [CEP Test
Panel](https://github.com/Adobe-CEP/CEP-Resources/tree/master/CEP_8.x/Samples/CEP_HTML_Test_Extension-8.0)
shows the full capabilities of CEP panels.
- The [PProPanel](https://github.com/Adobe-CEP/Samples/tree/master/PProPanel)
sample project is exhaustive in its exercise of Premiere Pro's ExtendScript
API.
- The
[ZXPSignCmd](https://github.com/Adobe-CEP/CEP-Resources/tree/master/ZXPSignCMD/4.0.7)
signing utility creates signed .zxp bundles for Add-Ons or direct
distribution.
- Use the [ExManCmd](https://www.adobeexchange.com/resources/28) command line
utility to test .zxp installation.
## 2. Enable loading of unsigned panels
*Note: Premiere Pro 13.0 integrates CEP9, so even if you had unsigned panels
loading before (using CEP7 or CEP8), you'll need to perform this step again, but for key CSXS.9.*
On Mac, type the following into Terminal, then relaunch Finder (either via
rebooting, or from the Force Quit dialog):
```html
defaults write /Users/<username>/Library/Preferences/com.adobe.CSXS.9.plist PlayerDebugMode 1
```
On Windows, make the following registry entry (a new Key, of type String):
![Registry image](payloads/Registry.png)
## 3. Put panel into extensions directory
Put `/PProPanel` or your own panel's containing directory here, to have Premiere
Pro load it:
```html
Windows: C:\Program Files (x86)\Common Files\Adobe\CEP\extensions
Mac: /Library/Application Support/Adobe/CEP/extensions
```
## 4. Write and test your panel's JavaScript using Chrome debugger
To enable debugging of panels using Chromes developer tools, put a file named
`.debug` into your extensions folder (as a peer of the `/CSXS` folder). The
contents of the file should resemble the following (and the Extension ID must
match the one in the panel's manifest):
```xml
<?xml version="1.0" encoding="UTF-8"?>
<ExtensionList>
<Extension Id="com.example.PProPanel">
<HostList>
<Host Name="PPRO" Port="7777"/>
</HostList>
</Extension>
</ExtensionList>
```
When the panel is active, you can debug the panel in your web browser by
browsing to `localhost:7777`, and selecting your panel:
![Localhost screenshot](payloads/localhost.png)
Optional diagnostics: Turn on CEP logging. Find CEP logs (distinct from Premiere
Pro's logs) here. Note that Mac Library path is the system's library, not the
user's. Also, note that logging WILL impact performance.
```html
Windows: %\AppData\Local\Temp\csxs8-PPRO.log
Mac: /Library/Logs/CSXS/csxs8-PPRO.log
```
Set logging level in Windows Registry (see above), or MacOS X .plist:
```html
defaults write /Users/<username>/Library/Preferences/com.adobe.CSXS.7.plist LogLevel 6
```
## 5. Create your panel's ExtendScript using ExtendScript Toolkit (ESTK)
Launch ExtendScript Toolkit, select the correct version of Premiere Pro from the
drop-down menu, then then click the chain link to connect.
![ESTK Screenshot](payloads/estk.png)
Once in the session, you can hit breakpoints, and use ExtendScript Toolkit's
Data Browser to view the ExtendScript DOM.
Here's a [screen video](https://www.dropbox.com/s/lwo8jg0klxkq91s/walkthru.mp4)
showing how to debug panels at both the JavaScript and ExtendScript levels.
## 6. Package and deploy your panel
Further [relevant information](https://github.com/Adobe-CEP/Getting-Started-guides/tree/master/Package%20Distribute%20Install) is available from the Extensibility team.
You can either generate a self-signed certificate (ZXPSignCmd will make them for
you), or get one from a commercial security provider. Here's an example:
```bash
./ZXPSignCmd -selfSignedCert US California Adobe "Bruce Bullis" password certificate.p12
```
To sign directory `/PanelDir` with `certificate.p12`, do the following:
```bash
./ZXPSignCmd -sign panelDir/ PanelName.zxp certificate.p12 password -tsa http://timestamp.digicert.com/
```
Submit your panel to the [Adobe Add-Ons
site](https://www.adobeexchange.com/producer) for approval, and distribution.
You can also directly supply the .zxp file enterprise customers, and those who
do not connect their systems to the public internet, for installation using
[ExManCmd](https://www.adobeexchange.com/resources/28), the command line version
of Extension Manager.
If you encounter any issues with the Add-Ons store or ExManCmd, please [contact
the Add-Ons team](mailto:jferman@adobe.com).
# Previous Updates
## What was new in 12.1
### Get and set the current Project panel selection
It's now possible for a panel to know which `projectItems` are selected, and to select projectItems as appropriate.
### Consolidate and Transcode API
All functionality available from Premiere Pro's Project Manager dialog, is now available to panels.
### Improved time resolution for trackItems
We now provide (and accept) time values for track items in ticks, eliminating an opportunity for rounding error.
### Import and change Motion Graphics templates (.mogrts)
Panels can now insert .mogrt files into sequences, and change the parameters of those .mogrts as desired.
### Forcibly replace footage
It's now possible to force Premiere Pro to update the path to a given `projectItem`, even if Premiere Pro doesn't think such a change is advisable.
### Identify sequences
All `projectItems` now have an `isSequence()` method; this eliminates the need to compare a list of 'all project items' against a list of 'all sequences', to determine which `projectItems` are and are not sequences.
### Set the frame rate for projectItems
Use the handy new `setOverrideFramerate()`.
### API Documentation
While the sample panel should continue to be your first option for working example code, Premiere Pro's ExtendScript API [is documented here](http://ppro.aenhancers.com), to enable developer participation.
## What was new in 12.0
- We've extended our new, not-in-the-QE-DOM Source monitor object, to close the [front-most](https://github.com/Adobe-CEP/Samples/blob/master/PProPanel/jsx/PPRO/Premiere.jsx#L1465) or [all open clips](https://github.com/Adobe-CEP/Samples/blob/master/PProPanel/jsx/PPRO/Premiere.jsx#L1469).
- [Change the Label](https://github.com/Adobe-CEP/Samples/blob/master/PProPanel/jsx/PPRO/Premiere.jsx#L1473) assigned to projectItems.
- Query PPro for the [current insertion bin](https://github.com/Adobe-CEP/Samples/blob/master/PProPanel/jsx/PPRO/Premiere.jsx#L1486), the default target for items imported into the project (but not via drag). *Previously, you could set, but not get, the insertion bin.*
- [Import Compositions](https://github.com/Adobe-CEP/Samples/blob/master/PProPanel/jsx/PPRO/Premiere.jsx#L1502) by name, from After Effects projects.
- Open PPro's Events panel to see PProPanel's feedback; I've minimized modal alerts.

View file

@ -0,0 +1,60 @@
/*************************************************************************
* ADOBE CONFIDENTIAL
* ___________________
*
* Copyright 2014 Adobe
* All Rights Reserved.
*
* NOTICE: Adobe permits you to use, modify, and distribute this file in
* accordance with the terms of the Adobe license agreement accompanying
* it. If you have received this file from a source other than Adobe,
* then your use, modification, or distribution of it requires the prior
* written permission of Adobe.
**************************************************************************/
// time display types
TIMEDISPLAY_24Timecode = 100;
TIMEDISPLAY_25Timecode = 101;
TIMEDISPLAY_2997DropTimecode = 102;
TIMEDISPLAY_2997NonDropTimecode = 103;
TIMEDISPLAY_30Timecode = 104;
TIMEDISPLAY_50Timecode = 105;
TIMEDISPLAY_5994DropTimecode = 106;
TIMEDISPLAY_5994NonDropTimecode = 107;
TIMEDISPLAY_60Timecode = 108;
TIMEDISPLAY_Frames = 109;
TIMEDISPLAY_23976Timecode = 110;
TIMEDISPLAY_16mmFeetFrames = 111;
TIMEDISPLAY_35mmFeetFrames = 112;
TIMEDISPLAY_48Timecode = 113;
TIMEDISPLAY_AudioSamplesTimecode = 200;
TIMEDISPLAY_AudioMsTimecode = 201;
// field type constants
FIELDTYPE_Progressive = 0;
FIELDTYPE_UpperFirst = 1;
FIELDTYPE_LowerFirst = 2;
// audio channel types
AUDIOCHANNELTYPE_Mono = 0;
AUDIOCHANNELTYPE_Stereo = 1;
AUDIOCHANNELTYPE_51 = 2;
AUDIOCHANNELTYPE_Multichannel = 3;
AUDIOCHANNELTYPE_4Channel = 4;
AUDIOCHANNELTYPE_8Channel = 5;
// vr projection type
VRPROJECTIONTYPE_None = 0;
VRPROJECTIONTYPE_Equirectangular = 1;
// vr stereoscopic type
VRSTEREOSCOPICTYPE_Monoscopic = 0;
VRSTEREOSCOPICTYPE_OverUnder = 1;
VRSTEREOSCOPICTYPE_SideBySide = 2;
NOT_SET = -400000;

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,19 @@
/*************************************************************************
* ADOBE CONFIDENTIAL
* ___________________
*
* Copyright 2014 Adobe
* All Rights Reserved.
*
* NOTICE: Adobe permits you to use, modify, and distribute this file in
* accordance with the terms of the Adobe license agreement accompanying
* it. If you have received this file from a source other than Adobe,
* then your use, modification, or distribution of it requires the prior
* written permission of Adobe.
**************************************************************************/
if (typeof $ == 'undefined') {
$ = {};
}
// this file should contain jsx-code that can run in all apps
// like polyfills of e.g. JSON

View file

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="UTF-8"?>
<PremiereData Version="3">
<Tree ObjectRef="1"/>
<Tree ObjectID="1" ClassID="177f2841-dd5b-43bd-9d9a-79e231bd47dd" Version="1">
<RootBin ObjectRef="2"/>
<Node Version="1">
</Node>
</Tree>
<BinTreeItem ObjectID="2" ClassID="5e0f46fa-384f-4c09-bc53-0b8e2b7005b5" Version="4">
<TreeItemBase Version="4">
<Locked>false</Locked>
<Node Version="1">
</Node>
<Name>Root</Name>
</TreeItemBase>
<Sorted>false</Sorted>
<Expanded>false</Expanded>
<Items Version="1">
<Item Index="0" ObjectRef="3"/>
</Items>
</BinTreeItem>
<BinTreeItem ObjectID="3" ClassID="5e0f46fa-384f-4c09-bc53-0b8e2b7005b5" Version="4">
<TreeItemBase Version="4">
<Locked>false</Locked>
<Data ObjectRef="4"/>
<Node Version="1">
<Properties Version="1">
<HandlerEffects.EffectItemTree.PresetsBin>1</HandlerEffects.EffectItemTree.PresetsBin>
</Properties>
</Node>
<Name>Presets</Name>
</TreeItemBase>
<Sorted>true</Sorted>
<Expanded>false</Expanded>
<Items Version="1">
<Item Index="0" ObjectRef="5"/>
</Items>
</BinTreeItem>
<EffectBinItem ObjectID="4" ClassID="5f513d71-0018-4405-a10b-bf5597f99960" Version="1">
<Flavor>1</Flavor>
</EffectBinItem>
<TreeItem ObjectID="5" ClassID="025f59ac-1f29-42c0-9897-ada1059bd547" Version="3">
<TreeItemBase Version="4">
<Locked>false</Locked>
<Data ObjectRef="6"/>
<Node Version="1">
</Node>
<Name>fubnunkus</Name>
</TreeItemBase>
</TreeItem>
<FilterPresetItem ObjectID="6" ClassID="e56c9ba0-91cb-4f21-9174-c1b52448c6c9" Version="2">
<FilterPresets Version="1">
<FilterPreset Index="0" ObjectRef="7"/>
</FilterPresets>
<EffectItem Version="1">
<EffectIsShorcut>false</EffectIsShorcut>
<EffectFlavor>5</EffectFlavor>
</EffectItem>
</FilterPresetItem>
<FilterPreset ObjectID="7" ClassID="ee52a7d2-069e-47f7-aa30-e3e3286b65a3" Version="3">
<Node Version="1">
</Node>
<TransitionDuration>0</TransitionDuration>
<Speed>1.</Speed>
<AnchorOutPoint>1678182105600</AnchorOutPoint>
<AnchorInPoint>0</AnchorInPoint>
<MediaType>228cda18-3625-4d2d-951e-348879e4ed93</MediaType>
<Type>0</Type>
<Component ObjectRef="8"/>
<FilterMatchName>AE.ADBE Spherize</FilterMatchName>
<Description></Description>
</FilterPreset>
<VideoFilterComponent ObjectID="8" ClassID="d10da199-beea-4dd1-b941-ed3a78766d50" Version="7">
<VideoFilterType>2</VideoFilterType>
<MatchName>AE.ADBE Spherize</MatchName>
<Component Version="5">
<Node Version="1">
</Node>
<InstanceName></InstanceName>
<Intrinsic>false</Intrinsic>
<Params Version="1">
<Param Index="0" ObjectRef="9"/>
<Param Index="1" ObjectRef="10"/>
</Params>
<DisplayName>Spherize</DisplayName>
<Bypass>false</Bypass>
<ID>0</ID>
</Component>
</VideoFilterComponent>
<VideoComponentParam ObjectID="9" ClassID="fe47129e-6c94-4fc0-95d5-c056a517aaf3" Version="9">
<Node Version="1">
</Node>
<ParameterID>1</ParameterID>
<RangeLocked>false</RangeLocked>
<UnitsString></UnitsString>
<UpperUIBound>250.</UpperUIBound>
<UpperBound>2500.</UpperBound>
<LowerBound>0.</LowerBound>
<CurrentValue>0.</CurrentValue>
<StartKeyframe>-91445760000000000,0.,0,0,0,0,0,0</StartKeyframe>
<ParameterControlType>2</ParameterControlType>
<DiscontinuousInterpolate>false</DiscontinuousInterpolate>
<IsLocked>false</IsLocked>
<IsTimeVarying>false</IsTimeVarying>
<Keyframes></Keyframes>
<Name>Radius</Name>
</VideoComponentParam>
<PointComponentParam ObjectID="10" ClassID="ca81d347-309b-44d2-acc7-1c572efb973c" Version="3">
<Node Version="1">
</Node>
<ParameterID>2</ParameterID>
<UnitsString></UnitsString>
<CurrentValue>0,0</CurrentValue>
<StartKeyframe>-91445760000000000,0.5:0.5,0,0,0,0,0,0,5,4,0,0,0,0</StartKeyframe>
<ParameterControlType>6</ParameterControlType>
<DiscontinuousInterpolate>false</DiscontinuousInterpolate>
<IsLocked>false</IsLocked>
<IsTimeVarying>false</IsTimeVarying>
<Keyframes></Keyframes>
<Name>Center of Sphere</Name>
</PointComponentParam>
</PremiereData>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<macromedia-extension name="PProPanel" requires-restart="true" version="1.0">
<author name="Bruce Bullis"/>
<description/>
<license-agreement/>
<products>
<product maxversion="99.0" name="Premiere" primary="true" version="10.0"/>
</products>
<description>
<![CDATA[This is a .zxp bundle for the Premiere Pro PProPanel sample. In addition to the panel itself, this bundle installs: an XMP schema, a readme file, an Adobe Media Encoder preset, and the platform-appropriate Export Controller sample plug-in.]]>
</description>
<files>
<file destination="" file-type="CSXS" products="Premiere" source="/MXI/PProPanel.zxp"/>
<file destination="$adobecommon/XMP/Custom File Info Panels/4.0/custom" file-type="ordinary" products="Premiere" source="/MXI/PProPanel_schema.xml"/>
<file destination="$adobecommon/Installed_by_PProPanel" file-type="ordinary" products="Premiere" source="/MXI/PProPanel.txt"/>
<file destination="$userlibraryfolder/Preferences/Adobe/Common/AME/13.0/presets" file-type="ordinary" products="Premiere" source="/MXI/PProPanel.epr"/>
<file destination="$mediacoreplug-ins" file-type="plugin" products="Premiere" platform="mac" source="/MXI/Mac/ExportController.bundle/"/>
<file destination="$mediacoreplug-ins" file-type="plugin" products="Premiere" platform="win" source="/MXI/Win/ExportController.prm"/>
</files>
</macromedia-extension>

View file

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<PremiereData Version="3">
<SequencePreset ObjectRef="1"/>
<SequencePreset ObjectID="1" ClassID="5e73dd7e-4f86-4917-80eb-08ddb2f4a5f3" Version="8">
<PreviewVideoFrameSize>0,0,1920,1080</PreviewVideoFrameSize>
<ImmersiveVideoVRConfiguration>{"capturedHorizontalView":0,"capturedVerticalView":0,"fieldOfHorizontalView":90,"fieldOfVerticalView":60,"projectionType":0,"stereoscopicEye":0,"stereoscopicType":0,"version":2}</ImmersiveVideoVRConfiguration>
<VideoTracks>[]</VideoTracks>
<AudioTracks>[{"mAudioSends":[],"mChannelType":1,"mExpandedHeight":25,"mIsOpen":false,"mIsSubmix":false,"mMatrix":[],"mName":"","mPan":0,"mPannerAssignments":[],"mSolo":false,"mTrackID":-1,"mVolume":1},{"mAudioSends":[],"mChannelType":1,"mExpandedHeight":25,"mIsOpen":false,"mIsSubmix":false,"mMatrix":[],"mName":"","mPan":0,"mPannerAssignments":[],"mSolo":false,"mTrackID":-1,"mVolume":1},{"mAudioSends":[],"mChannelType":1,"mExpandedHeight":25,"mIsOpen":false,"mIsSubmix":false,"mMatrix":[],"mName":"","mPan":0,"mPannerAssignments":[],"mSolo":false,"mTrackID":-1,"mVolume":1},{"mAudioSends":[],"mChannelType":1,"mExpandedHeight":25,"mIsOpen":false,"mIsSubmix":false,"mMatrix":[],"mName":"","mPan":0,"mPannerAssignments":[],"mSolo":false,"mTrackID":-1,"mVolume":1}]</AudioTracks>
<InitialNumberOfVideoTracks>3</InitialNumberOfVideoTracks>
<AdaptiveNumChannels>2</AdaptiveNumChannels>
<VideoAllowLinearCompositing>false</VideoAllowLinearCompositing>
<VideoUseMaxRenderQuality>false</VideoUseMaxRenderQuality>
<VideoUseMaxBitDepth>false</VideoUseMaxBitDepth>
<VideoPixelAspectRatio>1,1</VideoPixelAspectRatio>
<PreviewPresetVideoCodec.Win>1297107278</PreviewPresetVideoCodec.Win>
<PreviewPresetFileName.Win>I-Frame Only MPEG</PreviewPresetFileName.Win>
<PreviewPresetVideoCodec.Mac>1297107278</PreviewPresetVideoCodec.Mac>
<PreviewPresetFileName.Mac>I-Frame Only MPEG</PreviewPresetFileName.Mac>
<EditingModeGUID.Win>cc7991f5-c236-4db1-957e-2c71f924e81c</EditingModeGUID.Win>
<EditingModeGUID.Mac>cc7991f5-c236-4db1-957e-2c71f924e81c</EditingModeGUID.Mac>
<Descriptions Version="1">
<DescriptionItem Version="1" Index="0">
<Second></Second>
<First>en_US</First>
</DescriptionItem>
</Descriptions>
<Names Version="1">
<NameItem Version="1" Index="0">
<Second>fupduddy</Second>
<First>en_US</First>
</NameItem>
</Names>
<VideoFieldType>0</VideoFieldType>
<AudioTimeDisplay>200</AudioTimeDisplay>
<VideoTimeDisplay>102</VideoTimeDisplay>
<AudioChannelType>1</AudioChannelType>
<AudioFrameRate>5292000</AudioFrameRate>
<VideoFrameSize>0,0,1920,1080</VideoFrameSize>
<VideoFrameRate>8475667200</VideoFrameRate>
</SequencePreset>
</PremiereData>

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 765 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

View file

@ -0,0 +1,343 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>PProPanel opened this page...</title>
<style type="text/css">
body {
font-family: Helvetica, arial, sans-serif;
font-size: 14px;
line-height: 1.6;
padding-top: 10px;
padding-bottom: 10px;
background-color: white;
padding: 30px; }
body > *:first-child {
margin-top: 0 !important; }
body > *:last-child {
margin-bottom: 0 !important; }
a {
color: #4183C4; }
a.absent {
color: #cc0000; }
a.anchor {
display: block;
padding-left: 30px;
margin-left: -30px;
cursor: pointer;
position: absolute;
top: 0;
left: 0;
bottom: 0; }
h1, h2, h3, h4, h5, h6 {
margin: 20px 0 10px;
padding: 0;
font-weight: bold;
-webkit-font-smoothing: antialiased;
cursor: text;
position: relative; }
h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA09pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoMTMuMCAyMDEyMDMwNS5tLjQxNSAyMDEyLzAzLzA1OjIxOjAwOjAwKSAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUM2NjlDQjI4ODBGMTFFMTg1ODlEODNERDJBRjUwQTQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUM2NjlDQjM4ODBGMTFFMTg1ODlEODNERDJBRjUwQTQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QzY2OUNCMDg4MEYxMUUxODU4OUQ4M0REMkFGNTBBNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QzY2OUNCMTg4MEYxMUUxODU4OUQ4M0REMkFGNTBBNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsQhXeAAAABfSURBVHjaYvz//z8DJYCRUgMYQAbAMBQIAvEqkBQWXI6sHqwHiwG70TTBxGaiWwjCTGgOUgJiF1J8wMRAIUA34B4Q76HUBelAfJYSA0CuMIEaRP8wGIkGMA54bgQIMACAmkXJi0hKJQAAAABJRU5ErkJggg==) no-repeat 10px center;
text-decoration: none; }
h1 tt, h1 code {
font-size: inherit; }
h2 tt, h2 code {
font-size: inherit; }
h3 tt, h3 code {
font-size: inherit; }
h4 tt, h4 code {
font-size: inherit; }
h5 tt, h5 code {
font-size: inherit; }
h6 tt, h6 code {
font-size: inherit; }
h1 {
font-size: 28px;
color: black; }
h2 {
font-size: 24px;
border-bottom: 1px solid #cccccc;
color: black; }
h3 {
font-size: 18px; }
h4 {
font-size: 16px; }
h5 {
font-size: 14px; }
h6 {
color: #777777;
font-size: 14px; }
p, blockquote, ul, ol, dl, li, table, pre {
margin: 15px 0; }
hr {
background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OENDRjNBN0E2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OENDRjNBN0I2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Q0NGM0E3ODY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Q0NGM0E3OTY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqqezsUAAAAfSURBVHjaYmRABcYwBiM2QSA4y4hNEKYDQxAEAAIMAHNGAzhkPOlYAAAAAElFTkSuQmCC) repeat-x 0 0;
border: 0 none;
color: #cccccc;
height: 4px;
padding: 0;
}
body > h2:first-child {
margin-top: 0;
padding-top: 0; }
body > h1:first-child {
margin-top: 0;
padding-top: 0; }
body > h1:first-child + h2 {
margin-top: 0;
padding-top: 0; }
body > h3:first-child, body > h4:first-child, body > h5:first-child, body > h6:first-child {
margin-top: 0;
padding-top: 0; }
a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
margin-top: 0;
padding-top: 0; }
h1 p, h2 p, h3 p, h4 p, h5 p, h6 p {
margin-top: 0; }
li p.first {
display: inline-block; }
li {
margin: 0; }
ul, ol {
padding-left: 30px; }
ul :first-child, ol :first-child {
margin-top: 0; }
dl {
padding: 0; }
dl dt {
font-size: 14px;
font-weight: bold;
font-style: italic;
padding: 0;
margin: 15px 0 5px; }
dl dt:first-child {
padding: 0; }
dl dt > :first-child {
margin-top: 0; }
dl dt > :last-child {
margin-bottom: 0; }
dl dd {
margin: 0 0 15px;
padding: 0 15px; }
dl dd > :first-child {
margin-top: 0; }
dl dd > :last-child {
margin-bottom: 0; }
blockquote {
border-left: 4px solid #dddddd;
padding: 0 15px;
color: #777777; }
blockquote > :first-child {
margin-top: 0; }
blockquote > :last-child {
margin-bottom: 0; }
table {
padding: 0;border-collapse: collapse; }
table tr {
border-top: 1px solid #cccccc;
background-color: white;
margin: 0;
padding: 0; }
table tr:nth-child(2n) {
background-color: #f8f8f8; }
table tr th {
font-weight: bold;
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }
table tr td {
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }
table tr th :first-child, table tr td :first-child {
margin-top: 0; }
table tr th :last-child, table tr td :last-child {
margin-bottom: 0; }
img {
max-width: 100%; }
span.frame {
display: block;
overflow: hidden; }
span.frame > span {
border: 1px solid #dddddd;
display: block;
float: left;
overflow: hidden;
margin: 13px 0 0;
padding: 7px;
width: auto; }
span.frame span img {
display: block;
float: left; }
span.frame span span {
clear: both;
color: #333333;
display: block;
padding: 5px 0 0; }
span.align-center {
display: block;
overflow: hidden;
clear: both; }
span.align-center > span {
display: block;
overflow: hidden;
margin: 13px auto 0;
text-align: center; }
span.align-center span img {
margin: 0 auto;
text-align: center; }
span.align-right {
display: block;
overflow: hidden;
clear: both; }
span.align-right > span {
display: block;
overflow: hidden;
margin: 13px 0 0;
text-align: right; }
span.align-right span img {
margin: 0;
text-align: right; }
span.float-left {
display: block;
margin-right: 13px;
overflow: hidden;
float: left; }
span.float-left span {
margin: 13px 0 0; }
span.float-right {
display: block;
margin-left: 13px;
overflow: hidden;
float: right; }
span.float-right > span {
display: block;
overflow: hidden;
margin: 13px auto 0;
text-align: right; }
code, tt {
margin: 0 2px;
padding: 0 5px;
white-space: nowrap;
border: 1px solid #eaeaea;
background-color: #f8f8f8;
border-radius: 3px; }
pre code {
margin: 0;
padding: 0;
white-space: pre;
border: none;
background: transparent; }
.highlight pre {
background-color: #f8f8f8;
border: 1px solid #cccccc;
font-size: 13px;
line-height: 19px;
overflow: auto;
padding: 6px 10px;
border-radius: 3px; }
pre {
background-color: #f8f8f8;
border: 1px solid #cccccc;
font-size: 13px;
line-height: 19px;
overflow: auto;
padding: 6px 10px;
border-radius: 3px; }
pre code, pre tt {
background-color: transparent;
border: none; }
sup {
font-size: 0.83em;
vertical-align: super;
line-height: 0;
}
* {
-webkit-print-color-adjust: exact;
}
@media screen and (min-width: 914px) {
body {
width: 854px;
margin:0 auto;
}
}
@media print {
table, pre {
page-break-inside: avoid;
}
pre {
word-wrap: break-word;
}
}
</style>
</head>
<body onLoad="loaded()">
<h1 id="toc_0">PProPanel opened this page...</h1>
<p>...upon receiving <code>onbeforeunload</code> from PPro. </p>
<p>[This page will auto-close in 10 seconds.]</p>
<p>This would be a great time for your panel to close any open sockets, sign out of databases, and perform any other pre-shutdown cleanup you may want to do.</p>
<p>There are some restrictions: not all of CSInterface is available, and you can't pop any alerts.</p>
</body>
<script>
function loaded()
{
window.setTimeout(CloseMe, 10000);
}
function CloseMe()
{
window.close();
}
</script>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB