From a27cd8131ca630019e740fc3a69490704b1272e0 Mon Sep 17 00:00:00 2001 From: ontherun Date: Tue, 28 Jun 2011 20:48:11 +0200 Subject: [PATCH] Inital commit --- Eyeball.ico | Bin 0 -> 1078 bytes LockPencil.ico | Bin 0 -> 1078 bytes MPOLnch.fr | 480 +++++++++++++++++++++++++++++++++++ MPOLnch.rc | 69 +++++ MPOLnchActionComponent.cpp | 278 ++++++++++++++++++++ MPOLnchEyeballObserver.cpp | 148 +++++++++++ MPOLnchFactoryList.h | 37 +++ MPOLnchID.cpp | 39 +++ MPOLnchID.h | 126 +++++++++ MPOLnchListBoxObserver.cpp | 178 +++++++++++++ MPOLnchMacRez.rsrc | 0 MPOLnchNoStrip.cpp | 46 ++++ MPOLnchNodeID.cpp | 69 +++++ MPOLnchNodeID.h | 107 ++++++++ MPOLnchPenObserver.cpp | 149 +++++++++++ MPOLnchRezDefs.h | 40 +++ MPOLnchTreeViewAdapter.cpp | 85 +++++++ MPOLnchTreeViewWidgetMgr.cpp | 87 +++++++ MPOLnch_enUS.fr | 84 ++++++ MPOLnch_jaJP.fr | 84 ++++++ NoEyeball.ico | Bin 0 -> 1078 bytes NoPencil.ICO | Bin 0 -> 1078 bytes Pen.ico | Bin 0 -> 1078 bytes TriggerResourceDeps.cpp | 33 +++ 24 files changed, 2139 insertions(+) create mode 100644 Eyeball.ico create mode 100644 LockPencil.ico create mode 100644 MPOLnch.fr create mode 100644 MPOLnch.rc create mode 100644 MPOLnchActionComponent.cpp create mode 100644 MPOLnchEyeballObserver.cpp create mode 100644 MPOLnchFactoryList.h create mode 100644 MPOLnchID.cpp create mode 100644 MPOLnchID.h create mode 100644 MPOLnchListBoxObserver.cpp create mode 100644 MPOLnchMacRez.rsrc create mode 100644 MPOLnchNoStrip.cpp create mode 100644 MPOLnchNodeID.cpp create mode 100644 MPOLnchNodeID.h create mode 100644 MPOLnchPenObserver.cpp create mode 100644 MPOLnchRezDefs.h create mode 100644 MPOLnchTreeViewAdapter.cpp create mode 100644 MPOLnchTreeViewWidgetMgr.cpp create mode 100644 MPOLnch_enUS.fr create mode 100644 MPOLnch_jaJP.fr create mode 100644 NoEyeball.ico create mode 100644 NoPencil.ICO create mode 100644 Pen.ico create mode 100644 TriggerResourceDeps.cpp diff --git a/Eyeball.ico b/Eyeball.ico new file mode 100644 index 0000000000000000000000000000000000000000..5292a1f51b44f58f75ba62dd3b0c46ccf70f172b GIT binary patch literal 1078 zcmd^;u?~Vj5JU&Gmg_7myvop9Q0k}Mr(I|1Z%~rhSdgr5x!4d2VrLkbo!y-a3CWyP zsaA|Zj=q*IXb5F)E9tP4T6PiMVWmA)N}OFr!o*3b2$fbjXVeXwUYU6Zd3@z%n;2%l z-OT3AjAURv#+%veX*PCd?^9uaG#eUrSG)&$UjIE#dd@xh5q@)?>6eknI1ZVfgi8At MIWPCk@7!$K@-|=Af9Alc4s@= zhL9n9El8TX25fHIy^-x-VcSD6d?pw6{LS5qKx39 zOPUrNCi(Iz?#*S~7j+`Hk&JC3n`=GZj><T`9zBfdTl7DxxZ@oj$dH?_b literal 0 HcmV?d00001 diff --git a/MPOLnch.fr b/MPOLnch.fr new file mode 100644 index 0000000..395f24f --- /dev/null +++ b/MPOLnch.fr @@ -0,0 +1,480 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmp.fr $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 Adobe Systems Incorporated. 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. +// +// +// Umbrella include file for all the .fr files in the plug-in. +// +//======================================================================================== + +//=========================== +// General includes: +//=========================== + +#include "MenuDef.fh" +#include "ActionDef.fh" +#include "ActionDefs.h" +#include "AdobeMenuPositions.h" +#include "LocaleIndex.h" +#include "PMLocaleIds.h" +#include "StringTable.fh" +//#include "OMTypes.h" +#include "objectmodeltypes.fh" +#include "ShuksanID.h" +#include "ActionID.h" +#include "CommandID.h" +#include "WorkspaceID.h" +#include "widgetid.h" +#include "BuildNumber.h" +#include "PanelList.fh" +#include "Widgets.fh" // for PalettePanelWidget +#include "InterfaceColorDefines.h" +#include "IControlViewDefs.h" +#include "SysControlIds.h" +#include "AboutBoxID.h" // for kAboutBoxStaticTextViewImpl +#include "TreeViewDefs.h" + +// Project includes: +#include "WLBCmpID.h" +#include "WLBCmpRezDefs.h" + +#ifdef __ODFRC__ + +//================================================================================ +// Plugin version definition. +//================================================================================ +resource PluginVersion (kSDKDefPluginVersionResourceID) +{ + kTargetVersion, + kWLBCmpPluginID, + kSDKDefPlugInMajorVersionNumber, kSDKDefPlugInMinorVersionNumber, + kSDKDefHostMajorVersionNumber, kSDKDefHostMinorVersionNumber, + kWLBCmpCurrentMajorFormatNumber, kWLBCmpCurrentMinorFormatNumber, + { kInDesignProduct, kInCopyProduct }, + { kWildFS }, + kWLBCmpVersion +}; + +//================================================================================ +// Boss class definition. +//================================================================================ +resource ClassDescriptionTable(kSDKDefClassDescriptionTableResourceID) +{{{ + + +/** + This boss class provides the actions invoked by this plug-in's + sub-menu items. + @ingroup wlistboxcomposite +*/ + Class + { + kWLBCmpActionComponentBoss, + kBaseActionComponentBoss, + { + /** Handle the actions from the menu. + */ + IID_IACTIONCOMPONENT, kWLBCmpActionComponentImpl, + } + }, + + +/** + Controls addition of a pop-up menu to the panel. + @ingroup wlistboxcomposite +*/ + Class + { + kWLBCmpPanelWidgetBoss, + kPalettePanelWidgetBoss, + { + /** An implementation of ITextControlData, but with interface + identifier of IID_IPANELMENUDATA, serves to name the popout panel menu. + Implementation provided by the API. + */ + IID_IPANELMENUDATA, kCPanelMenuDataImpl, + } + }, + + /** + Gives a list-box (tree view) that has additional observer added... + to get selection change notifications + @ingroup wlistboxcomposite + */ + Class + { + kWLBCmpListBoxWidgetBoss, + kTreeViewWidgetBoss, + { + /** Furnishes application framework with widgets as needed */ + IID_ITREEVIEWWIDGETMGR, kWLBCmpTVWidgetMgrImpl, + /** Adapts our data model to the needs of the application framework */ + IID_ITREEVIEWHIERARCHYADAPTER, kWLBCmpTVHierarchyAdapterImpl, + /** Hold names of the list item */ + IID_ISTRINGLISTDATA, kStringListDataImpl, + /** Display selection message */ + IID_IOBSERVER, kWLBCmpListBoxObserverImpl, + } + }, + + /** + Text Widget boss. + */ + Class + { + kWLBCmpTextWidgetBoss, + kInfoStaticTextWidgetBoss, + { + // Add the following interfaces for a white background (they'd override the default.) + // IID_ICONTROLVIEW, kAboutBoxStaticTextViewImpl, + // IID_IBOOLDATA, kPersistBoolDataImpl, + } + } + + /** + Adds observer to the 'eyeball' button. + @ingroup wlistboxcomposite + */ + Class + { + kWLBCmpEyeballWidgetBoss, + kRollOverIconButtonBoss, + { + /** + Receive Update messages from the application core when end-user clicks on the eyeball iconic button. + */ + IID_IOBSERVER, kWLBCmpEyeballObserverImpl, + } + }, + + /** + Adds observer to the 'Pen' button + @ingroup wlistboxcomposite + */ + Class + { + kWLBCmpPenWidgetBoss, + kRollOverIconButtonBoss, + { + /** + Receive Update messages from the application core when end-user clicks on the pen iconic button. + */ + IID_IOBSERVER, kWLBCmpPenObserverImpl, + } + }, + +}}}; + +//================================================================================ +// Implementation definition. +//================================================================================ +resource FactoryList (kSDKDefFactoryListResourceID) +{ + kImplementationIDSpace, + { +#include "WLBCmpFactoryList.h" + } +}; + +//================================================================================ +// Menu definition. +//================================================================================ +resource MenuDef (kSDKDefMenuResourceID) +{ + { + // The About Plug-ins sub-menu item for this plug-in. + kWLBCmpAboutActionID, // ActionID (kInvalidActionID for positional entries) + kWLBCmpAboutMenuPath, // Menu Path. + kSDKDefAlphabeticPosition, // Menu Position. + kSDKDefIsNotDynamicMenuFlag, // kSDKDefIsNotDynamicMenuFlag or kSDKDefIsDynamicMenuFlag. + + kWLBCmpAddItemActionID, + kWLBCmpTargetMenuPath, + kWLBCmpAddItemMenuItemPosition, + kSDKDefIsNotDynamicMenuFlag, + + kWLBCmpRemoveItemActionID, + kWLBCmpTargetMenuPath, + kWLBCmpRemoveItemMenuItemPosition, + kSDKDefIsNotDynamicMenuFlag, + + // Separator for the popup menu on the panel + kWLBCmpSeparator1ActionID, + kWLBCmpInternalPopupMenuNameKey kSDKDefDelimiterAndSeparatorPath, // :- to mark an item as a separator. + kWLBCmpSeparator1MenuItemPosition, + kSDKDefIsNotDynamicMenuFlag, + + // About this plugin submenu for the popup menu on the panel + kWLBCmpPopupAboutThisActionID, + kWLBCmpTargetMenuPath + kWLBCmpAboutThisMenuItemPosition, + kSDKDefIsNotDynamicMenuFlag, + + } +}; + +//================================================================================ +// Action definition. +//================================================================================ +resource ActionDef (kSDKDefActionResourceID) +{ + { + kWLBCmpActionComponentBoss, // ClassID of boss class that implements the ActionID. + kWLBCmpAboutActionID, // ActionID. + kWLBCmpAboutMenuKey, // Sub-menu string. + kHelpMenuActionArea, // Area name (see ActionDefs.h). + kNormalAction, // Type of action (see ActionDefs.h). + kDisableIfLowMem, // Enabling type (see ActionDefs.h). + kInvalidInterfaceID, // Selection InterfaceID this action cares about or kInvalidInterfaceID. + kSDKDefInvisibleInKBSCEditorFlag, // kSDKDefVisibleInKBSCEditorFlag or kSDKDefInvisibleInKBSCEditorFlag. + + kWLBCmpActionComponentBoss, + kWLBCmpAddItemActionID, + kWLBCmpAddItemMenuItemKey, + kOtherActionArea, + kNormalAction, + kDisableIfLowMem, + kInvalidInterfaceID, + kSDKDefInvisibleInKBSCEditorFlag, + + kWLBCmpActionComponentBoss, + kWLBCmpRemoveItemActionID, + kWLBCmpRemoveItemMenuItemKey, + kOtherActionArea, + kNormalAction, + kCustomEnabling, // so that UpdateActionStates will get called + kInvalidInterfaceID, + kSDKDefInvisibleInKBSCEditorFlag, + + kWLBCmpActionComponentBoss, + kWLBCmpPopupAboutThisActionID, + kSDKDefAboutThisPlugInMenuKey, // Key to the name of this action + kOtherActionArea, + kNormalAction, + kDisableIfLowMem, + kInvalidInterfaceID, + kSDKDefInvisibleInKBSCEditorFlag, + + } +}; + + +//================================================================================ +// LocaleIndex +// The LocaleIndex should have indicies that point at your +// localizations for each language system that you are +// localized for. +//================================================================================ +//------------------------------------------------------------ +// String LocaleIndex. +//------------------------------------------------------------ +resource LocaleIndex (kSDKDefStringsResourceID) +{ + kStringTableRsrcType, + { + kWildFS, k_enUS, kSDKDefStringsResourceID + index_enUS + kWildFS, k_jaJP, kSDKDefStringsResourceID + index_jaJP + + kWildFS, k_Wild, kSDKDefStringsResourceID + index_enUS + } +}; + +resource LocaleIndex (kSDKDefStringsNoTransResourceID) +{ + kStringTableRsrcType, + { + kWildFS, k_Wild, kSDKDefStringsNoTransResourceID + index_enUS + } +}; + +// added to support the list elements in the list box +resource LocaleIndex (kWLBCmpListElementRsrcID) +{ + kViewRsrcType, + { + kWildFS, k_Wild, kWLBCmpListElementRsrcID + index_enUS + } +}; + +resource StringTable (kSDKDefStringsNoTransResourceID + index_enUS) +{ + k_enUS, // Locale Id + kEuropeanMacToWinEncodingConverter, // Character encoding converter + { + // No-Translate strings go here: + + + kWLBCmpInternalPopupMenuNameKey, kWLBCmpInternalPopupMenuNameKey, // No need to translate, internal menu name. + } +}; + + + +//------------------------------------------------------------ +// Panel LocaleIndex. +//------------------------------------------------------------ +resource LocaleIndex (kSDKDefPanelResourceID) +{ + kViewRsrcType, + { + kWildFS, k_Wild, kSDKDefPanelResourceID + index_enUS + } +}; + + +//======================================================================================== +// Type definition. +//======================================================================================== +type WLBCmpPanelWidget(kViewRsrcType) : PalettePanelWidget(ClassID = kWLBCmpPanelWidgetBoss) +{ + CPanelMenuData; +}; +type WLBCmpListBox (kViewRsrcType) : TreeViewWidget (ClassID = kWLBCmpListBoxWidgetBoss) { }; +type WLBCmpNodeWidget(kViewRsrcType) : PrimaryResourcePanelWidget(ClassID = kTreeNodeWidgetBoss) +{ +}; +type WLBCmpTextWidget (kViewRsrcType) : InfoStaticTextWidget (ClassID = kWLBCmpTextWidgetBoss) { }; +type WLBCmpEyeballWidget (kViewRsrcType) : RollOverIconButtonWidget (ClassID = kWLBCmpEyeballWidgetBoss) {}; +type WLBCmpPenWidget (kViewRsrcType) : RollOverIconButtonWidget (ClassID = kWLBCmpPenWidgetBoss) {}; + +//================================================================================ +// PanelList definition. +//================================================================================ +resource PanelList (kSDKDefPanelResourceID) +{ + { + // 1st panel in the list + kSDKDefPanelResourceID, // Resource ID for this panel (use SDK default rsrc ID) + kWLBCmpPluginID, // ID of plug-in that owns this panel + kNotResizable, + kWLBCmpPanelWidgetActionID, // Action ID to show/hide the panel + kWLBCmpPanelTitleKey, // Shows up in the Window list. + "", // Alternate menu path of the form "Main:Foo" if you want your palette menu item in a second place + 0.0, // Alternate Menu position Alternate Menu position for determining menu order + 0,0, // Rsrc ID, Plugin ID for a PNG icon resource to use for this palette + c_Panel + } +}; + +//================================================================================ +// PanelView definition. +// The view is not currently localised: therefore, it can reside here. +// However, if you wish to localise it, it is recommended to locate it in one of +// the localised framework resource files (i.e. WLBCmp_enUS.fr etc.). +//================================================================================ +resource WLBCmpPanelWidget(kSDKDefPanelResourceID + index_enUS) +{ + __FILE__, __LINE__, // Localization macro + kWLBCmpPanelWidgetID, // WidgetID + kPMRsrcID_None, // RsrcID + kBindNone, // Binding (0=none) + 0, 0, 207, 95, // Frame: left, top, right, bottom. + kTrue, kTrue, // Visible, Enabled + kFalse, // Erase background + kInterfacePaletteFill, // Erase to color + kFalse, // Draw dropshadow + kWLBCmpPanelTitleKey, // Panel name + { + WLBCmpListBox //Tree view + ( + kWLBCmpListBoxWidgetID, kPMRsrcID_None, // WidgetId, RsrcId + kBindAll, // Frame binding + Frame(-1,0,208,96) // Frame + kTrue, kTrue, // Visible, Enabled + kTrue, // EraseBeforeDraw + kInterfacePaletteFill, // InterfaceColor + "", + kHideRootNode | kDrawEndLine, // Options. Display root node + kFalse, // Use H Scroll bar + kTrue, // Use V scroll bar + 20, // fVScrollButtonIncrement + 20, // fVThumbScrollIncrement + 0, // fHScrollButtonIncrement + 0, // fHThumbScrollIncrement + 2, // Items selectable, 0 = No Selection, 1 = Single Selection, 2 = Multiple Selection + kFalse, // Allow children from multiple parents to be selected + kTrue, // Allow discontiguous selection + { + //The tree view is dynamically created. + }, + + ), + + } + + kWLBCmpInternalPopupMenuNameKey // Popup menu name (internal) +}; + +resource WLBCmpNodeWidget (kWLBCmpListElementRsrcID + index_enUS) +{ + __FILE__, __LINE__, + kWLBCmpListParentWidgetId, kPMRsrcID_None, // WidgetId, RsrcId + kBindLeft | kBindRight, // Frame binding + Frame(0, 0, 194, 20), // Frame + kTrue, kTrue, // Visible, Enabled + "", // Panel name + { + WLBCmpEyeballWidget + ( + kWLBCmpListElementEyeballWidgetID, kWLBCmpEyeBallIcon, kWLBCmpPluginID, // WidgetId, RsrcId + kBindLeft, // Frame binding + Frame(3,1,22,18) // Frame + kTrue, kTrue, // Visible, Enabled + kADBEIconSuiteButtonType, + ), + WLBCmpPenWidget + ( + kWLBCmpListElementPenWidgetID, kWLBCmpPenIcon, kWLBCmpPluginID, // WidgetId, RsrcId + kBindLeft, // Frame binding + Frame(25,1,44,18) // Frame + kTrue, kTrue, // Visible, Enabled + kADBEIconSuiteButtonType, + ), + + // Just a info-static text widget with about-box text view to get white bg. + WLBCmpTextWidget + ( + kWLBCmpTextWidgetID, kPMRsrcID_None, // WidgetId, RsrcId + kBindLeft | kBindRight, // Frame binding + Frame(45,1,194,18) // Frame + kTrue, kTrue, kAlignLeft,kEllipsizeEnd,kTrue, // Visible, Enabled, ellipsize style, convert ampersands + "", // Initial text + 0, // Associated widget for focus + kPaletteWindowSystemScriptFontId, // default font + kPaletteWindowSystemScriptHiliteFontId, // for highlight state. + ), + + } +}; + + + + + +#endif // __ODFRC__ + +#include "WLBCmp_enUS.fr" +#include "WLBCmp_jaJP.fr" + +// End, WLBCmp.fr. + + + + diff --git a/MPOLnch.rc b/MPOLnch.rc new file mode 100644 index 0000000..b0c0d52 --- /dev/null +++ b/MPOLnch.rc @@ -0,0 +1,69 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmp.rc $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 Adobe Systems Incorporated. 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. +// +//======================================================================================== + +#include "WinRezFlags.h" +#include "BuildNumber.h" +#include "WLBCmpID.h" +1510 ICON DISCARDABLE "Eyeball.ico" +1512 ICON DISCARDABLE "LockPencil.ico" +1514 ICON DISCARDABLE "Pen.ico" + +1 VERSIONINFO + FILEVERSION kMajorVersionNumberForResource, kMinorVersionNumberForResource, kDotVersionNumberForResource, kBuildNumber + PRODUCTVERSION kMajorVersionNumberForResource, kMinorVersionNumberForResource, kDotVersionNumberForResource, 0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Adobe Systems Incorporated\0" + VALUE "FileDescription", "Adobe InDesign SDK Plug-in\0" + VALUE "FileVersion", "1.0", "\0" + VALUE "InternalName", kWLBCmpPluginName, "\0" + VALUE "LegalCopyright", kShortCopyRightStr, "\0" + + VALUE "OriginalFilename", kWLBCmpPluginName ".pln\0" + VALUE "ProductName", "Adobe InDesign\0" + VALUE "ProductVersion", kVersionNumberForResourceStr, "\0" + VALUE "Copyright", kVersionCopyRightStr, "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 1200 + END +END + + +// End, WLBCmp.rc + + diff --git a/MPOLnchActionComponent.cpp b/MPOLnchActionComponent.cpp new file mode 100644 index 0000000..4c09cad --- /dev/null +++ b/MPOLnchActionComponent.cpp @@ -0,0 +1,278 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpActionComponent.cpp $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 Adobe Systems Incorporated. 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. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + + +// Interface includes: +#include "IWidgetUtils.h" +#include "IPanelControlData.h" +#include "IControlView.h" +#include "IActionStateList.h" +#include "ITreeViewController.h" +#include "ITreeViewMgr.h" +#include "ITreeViewHierarchyAdapter.h" +#include "IStringListData.h" + +// General includes: +#include "CActionComponent.h" +#include "CAlert.h" +#include "WLBCmpNodeID.h" + +#include "K2Vector.tpp" // For NodeIDList to compile + +// Project includes: +#include "WLBCmpID.h" + + +/** WLBCmpActionComponent + All about the user actions + + @ingroup wlistboxcomposite + +*/ +class WLBCmpActionComponent : public CActionComponent +{ + public: + /** + Constructor. + @param boss interface ptr from boss object on which this interface is aggregated. + */ + WLBCmpActionComponent(IPMUnknown* boss); + + /** + The action component should do the requested action. + This is where the menu item's action is taken. + When a menu item is selected, the Menu Manager determines + which plug-in is responsible for it, and calls its DoAction + with the ID for the menu item chosen. + + @param actionID identifies the menu item that was selected. + */ + virtual void DoAction(IActiveContext *myContext, ActionID actionID, GSysPoint mousePoint, IPMUnknown *widget); + /** + + Framework will call this method to ask us to update the states of the items. + */ + virtual void UpdateActionStates(IActiveContext *myContext, IActionStateList *listToUpdate, GSysPoint mousePoint, IPMUnknown *widget); + + private: + /** Encapsulates functionality for the about menu item. */ + void DoAbout(); + + /** Encapsulates functionality for the AddItem menu item. + + @param invokedWidget Widget that initiated the event (the panel menu), useful for getting the panel & other widgets. + */ + void DoAddItem(IPMUnknown *invokedWidget); + + /** Encapsulates functionality for the RemoveItem menu item. + + @param invokedWidget Widget that initiated the event. (The panel menu.) + */ + void DoRemoveItem(IPMUnknown *invokedWidget); + +}; + +/* CREATE_PMINTERFACE + Binds the C++ implementation class onto its + ImplementationID making the C++ code callable by the + application. +*/ +CREATE_PMINTERFACE(WLBCmpActionComponent, kWLBCmpActionComponentImpl) + +/* WLBCmpActionComponent Constructor +*/ +WLBCmpActionComponent::WLBCmpActionComponent(IPMUnknown* boss) +: CActionComponent(boss) +{ +} + +/* DoAction +*/ +void WLBCmpActionComponent::DoAction(IActiveContext *myContext, ActionID actionID, GSysPoint mousePoint, IPMUnknown *widget) +{ + switch (actionID.Get()) + { + case kWLBCmpPopupAboutThisActionID: + case kWLBCmpAboutActionID: + { + this->DoAbout(); + break; + } + + case kWLBCmpAddItemActionID: + { + this->DoAddItem(widget); + break; + } + + case kWLBCmpRemoveItemActionID: + { + this->DoRemoveItem(widget); + break; + } + + default: + { + break; + } + } +} + + +/* UpdateActionStates + +*/ + +void WLBCmpActionComponent::UpdateActionStates(IActiveContext *myContext, IActionStateList *listToUpdate, GSysPoint mousePoint, IPMUnknown *widget) +{ + do { + + int listElementCount = 0; + InterfacePtr treeWidget(static_cast(Utils()->QueryRelatedWidget(widget, kWLBCmpListBoxWidgetID, IID_ICONTROLVIEW))); + ASSERT(treeWidget); + if(!treeWidget) { + break; + } + + InterfacePtr controller(treeWidget, UseDefaultIID()); + ASSERT(controller); + if(!controller) + { + break; + } + + NodeIDList selectedItems; + controller->GetSelectedItems(selectedItems); + listElementCount = selectedItems.size(); + + for(int i=0; i < listToUpdate->Length(); i++) { + + ActionID action = listToUpdate->GetNthAction(i); + switch (action.Get()) + { + + case kWLBCmpRemoveItemActionID: + if(listElementCount>0) { + listToUpdate->SetNthActionState(i,kEnabledAction); + } + else { + listToUpdate->SetNthActionState(i,kDisabled_Unselected); + } + break; + } + } + + } while(0); + + +} + + + +/* DoAbout +*/ +void WLBCmpActionComponent::DoAbout() +{ + CAlert::ModalAlert + ( + kWLBCmpAboutBoxStringKey, // Alert string + kOKString, // OK button + kNullString, // No second button + kNullString, // No third button + 1, // Set OK button to default + CAlert::eInformationIcon // Information icon. + ); +} + +/* DoAddItem +*/ +void WLBCmpActionComponent::DoAddItem(IPMUnknown *invokedWidget) +{ + InterfacePtr treeWidget(static_cast(Utils()->QueryRelatedWidget(invokedWidget, kWLBCmpListBoxWidgetID, IID_ICONTROLVIEW))); + InterfacePtr treeMgr(treeWidget, UseDefaultIID()); + InterfacePtr iListData(treeWidget, IID_ISTRINGLISTDATA); + K2Vector lists = iListData->GetStringList(); + PMString item(kWLBCmpAddedElementKey); + item.Translate(); + K2Vector::const_iterator iter = std::find(lists.begin(), lists.end(), item); + int32 addIndex = 2; + while (iter != lists.end()) + { + item.Insert("+ ", 2, 2); + iter = std::find(lists.begin(), lists.end(), item); + } + + if (iter == lists.end()) + { + lists.insert(lists.begin(), item); + iListData->SetStringList(lists); + //make sure that the node added has been processed + NodeID node = WLBCmpNodeID::Create(item); + treeMgr->NodeAdded(node); + } +} + +/* DoRemoveItem +*/ +void WLBCmpActionComponent::DoRemoveItem(IPMUnknown *invokedWidget) +{ + InterfacePtr treeWidget(static_cast(Utils()->QueryRelatedWidget(invokedWidget, kWLBCmpListBoxWidgetID, IID_ICONTROLVIEW))); + InterfacePtr treeMgr(treeWidget, UseDefaultIID()); + + InterfacePtr controller(treeWidget, UseDefaultIID()); + + + NodeIDList selectedItems; + controller->GetSelectedItems(selectedItems); + int32 listElementCount = selectedItems.size(); + if (selectedItems.size() > 0) + { + //Notify node to be deleted + treeMgr->BeforeNodesDeleted(selectedItems); + + // delete items + K2Vector::const_iterator iter, startIter, endIter; + startIter = selectedItems.begin(); + endIter = selectedItems.end(); + InterfacePtr iListData(treeWidget, IID_ISTRINGLISTDATA); + K2Vector lists = iListData->GetStringList(); + for(iter = startIter; iter != endIter; ++iter) + { + const WLBCmpNodeID* oneNode = static_cast(iter->Get()); + PMString item = oneNode->GetName(); + + K2Vector::iterator s_iter = std::find(lists.begin(), lists.end(), item); + if (s_iter != lists.end()) + lists.erase(s_iter); + } + iListData->SetStringList(lists); + } + +} + + +// End, WLBCmpActionComponent.cpp. + + diff --git a/MPOLnchEyeballObserver.cpp b/MPOLnchEyeballObserver.cpp new file mode 100644 index 0000000..ea851e8 --- /dev/null +++ b/MPOLnchEyeballObserver.cpp @@ -0,0 +1,148 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpEyeballObserver.cpp $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 Adobe Systems Incorporated. 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. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + +// Implementation includes +#include "widgetid.h" + +// Interface includes +#include "ISubject.h" +#include "ITriStateControlData.h" +// Implem includes +#include "CAlert.h" +#include "CObserver.h" +#include "WLBCmpID.h" + + +/** + Observes the "eyeball" widget. + + @ingroup wlistboxcomposite + +*/ +class WLBCmpEyeballObserver : public CObserver +{ +public: + + /** + Constructor for WLBListBoxObserver class. + @param interface ptr from boss object on which this interface is aggregated. + */ + WLBCmpEyeballObserver(IPMUnknown *boss); + + /** + Destructor for WLBCmpEyeballObserver class - + performs cleanup + */ + ~WLBCmpEyeballObserver(); + + /** + AutoAttach is only called for registered observers + of widgets. This method is called by the application + core when the widget is shown. + + */ + virtual void AutoAttach(); + + /** + AutoDetach is only called for registered observers + of widgets. Called when widget hidden. + */ + virtual void AutoDetach(); + + /** + Update when there's been a change on the eyeball widget. + + @param theChange this is specified by the agent of change; it can be the class ID of the agent, + or it may be some specialised message ID. + @param theSubject this provides a reference to the object which has changed; in this case, the button + widget boss object that is being observed. + @param protocol the protocol along which the change occurred. + @param changedBy this can be used to provide additional information about the change or a reference + to the boss object that caused the change. + */ + virtual void Update(const ClassID& theChange, ISubject* theSubject, const PMIID &protocol, void* changedBy); + + +}; + +CREATE_PMINTERFACE(WLBCmpEyeballObserver, kWLBCmpEyeballObserverImpl) + + +WLBCmpEyeballObserver::WLBCmpEyeballObserver(IPMUnknown* boss) +: CObserver(boss) +{ + +} + + +WLBCmpEyeballObserver::~WLBCmpEyeballObserver() +{ + +} + + +void WLBCmpEyeballObserver::AutoAttach() +{ + InterfacePtr subject(this, UseDefaultIID()); + if (subject != nil) + { + subject->AttachObserver(this, IID_ITRISTATECONTROLDATA); + } + +} + + +void WLBCmpEyeballObserver::AutoDetach() +{ + InterfacePtr subject(this, UseDefaultIID()); + if (subject != nil) + { + subject->DetachObserver(this,IID_ITRISTATECONTROLDATA); + } +} + + +void WLBCmpEyeballObserver::Update +( + const ClassID& theChange, + ISubject* theSubject, + const PMIID &protocol, + void* changedBy +) +{ + if(theChange == kTrueStateMessage) { + // Then the button has been activated. + do { + PMString dbgInfoString("WLBCmpEyeballObserver::Update() "); + dbgInfoString.SetTranslatable(kFalse); // only for debug- not real code + CAlert::InformationAlert(dbgInfoString); + + } while(0); + } +} + + + + diff --git a/MPOLnchFactoryList.h b/MPOLnchFactoryList.h new file mode 100644 index 0000000..fbbe176 --- /dev/null +++ b/MPOLnchFactoryList.h @@ -0,0 +1,37 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpFactoryList.h $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 Adobe Systems Incorporated. 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. +// +// +// Each C++ implementation class in the plug-in and its corresponding ImplementationID +// should be registered in this file. +// +//======================================================================================== + +REGISTER_PMINTERFACE(WLBCmpActionComponent, kWLBCmpActionComponentImpl) +REGISTER_PMINTERFACE(WLBCmpListBoxObserver, kWLBCmpListBoxObserverImpl) +REGISTER_PMINTERFACE(WLBCmpEyeballObserverImpl, kWLBCmpEyeballObserverImpl) +REGISTER_PMINTERFACE(WLBCmpPenObserverImpl, kWLBCmpPenObserverImpl) +REGISTER_PMINTERFACE(WLBCmpTreeViewAdapter, kWLBCmpTVHierarchyAdapterImpl) +REGISTER_PMINTERFACE(WLBCmpTVWidgetMgr, kWLBCmpTVWidgetMgrImpl) + +// End, WLBCmpFactoryList.h. + + diff --git a/MPOLnchID.cpp b/MPOLnchID.cpp new file mode 100644 index 0000000..298391d --- /dev/null +++ b/MPOLnchID.cpp @@ -0,0 +1,39 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpID.cpp $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 Adobe Systems Incorporated. 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. +// +// +// Makes your IDs available as named symbols in the Debug build. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + +// General includes: +#include "ShuksanID.h" +#include "IDFactory_cpp.h" + +#pragma export on + #include "WLBCmpID.h" +#pragma export off + +// End, WLBCmpID.cpp. + + diff --git a/MPOLnchID.h b/MPOLnchID.h new file mode 100644 index 0000000..d210a81 --- /dev/null +++ b/MPOLnchID.h @@ -0,0 +1,126 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpID.h $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 Adobe Systems Incorporated. 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. +// +// +// Defines IDs used by the WLBCmp plug-in. +// +//======================================================================================== + +#ifndef __WLBCmpID_h__ +#define __WLBCmpID_h__ + +#include "SDKDef.h" + +// Company: +#define kWLBCmpCompanyKey kSDKDefPlugInCompanyKey // Company name used internally for menu paths and the like. Must be globally unique, only A-Z, 0-9, space and "_". +#define kWLBCmpCompanyValue kSDKDefPlugInCompanyValue // Company name displayed externally. + +// Plug-in: +#define kWLBCmpPluginName "MPOLauncher" // Name of this plug-in. +#define kWLBCmpPrefixNumber 0x174600 // Unique prefix number for this plug-in(*Must* be obtained from Adobe Developer Support). +#define kWLBCmpVersion kSDKDefPluginVersionString // Version of this plug-in (for the About Box). +#define kWLBCmpAuthor "fabiantheblind" // Author of this plug-in (for the About Box). + +// Plug-in Prefix: (please change kWLBCmpPrefixNumber above to modify the prefix.) +#define kWLBCmpPrefix RezLong(kWLBCmpPrefixNumber) // The unique numeric prefix for all object model IDs for this plug-in. +#define kWLBCmpStringPrefix SDK_DEF_STRINGIZE(kWLBCmpPrefixNumber) // The string equivalent of the unique prefix number for this plug-in. + +// PluginID: +DECLARE_PMID(kPlugInIDSpace, kWLBCmpPluginID, kWLBCmpPrefix + 0) + +// ClassIDs: +DECLARE_PMID(kClassIDSpace, kWLBCmpActionComponentBoss, kWLBCmpPrefix + 0) +DECLARE_PMID(kClassIDSpace, kWLBCmpStringRegisterBoss, kWLBCmpPrefix + 1) +DECLARE_PMID(kClassIDSpace, kWLBCmpPanelRegisterBoss, kWLBCmpPrefix + 2) +DECLARE_PMID(kClassIDSpace, kWLBCmpMenuRegisterBoss, kWLBCmpPrefix + 3) +DECLARE_PMID(kClassIDSpace, kWLBCmpActionRegisterBoss, kWLBCmpPrefix + 4) +DECLARE_PMID(kClassIDSpace, kWLBCmpPanelWidgetBoss, kWLBCmpPrefix + 5) +DECLARE_PMID(kClassIDSpace, kWLBCmpListBoxWidgetBoss, kWLBCmpPrefix + 6) +DECLARE_PMID(kClassIDSpace, kWLBCmpTextWidgetBoss, kWLBCmpPrefix + 7) +DECLARE_PMID(kClassIDSpace, kWLBCmpEyeballWidgetBoss, kWLBCmpPrefix + 8) +DECLARE_PMID(kClassIDSpace, kWLBCmpPenWidgetBoss, kWLBCmpPrefix + 9) +// InterfaceIDs: +// None in this plug-in. + +// ImplementationIDs: +DECLARE_PMID(kImplementationIDSpace, kWLBCmpActionComponentImpl, kWLBCmpPrefix + 0) +DECLARE_PMID(kImplementationIDSpace, kWLBCmpListBoxObserverImpl, kWLBCmpPrefix + 1) +DECLARE_PMID(kImplementationIDSpace, kWLBCmpEyeballObserverImpl, kWLBCmpPrefix + 2) +DECLARE_PMID(kImplementationIDSpace, kWLBCmpPenObserverImpl, kWLBCmpPrefix + 3) +DECLARE_PMID(kImplementationIDSpace, kWLBCmpTVWidgetMgrImpl, kWLBCmpPrefix + 4) +DECLARE_PMID(kImplementationIDSpace, kWLBCmpTVHierarchyAdapterImpl, kWLBCmpPrefix + 5) +// ActionIDs: +DECLARE_PMID(kActionIDSpace, kWLBCmpAboutActionID, kWLBCmpPrefix + 0) +DECLARE_PMID(kActionIDSpace, kWLBCmpPanelWidgetActionID, kWLBCmpPrefix + 1) +DECLARE_PMID(kActionIDSpace, kWLBCmpSeparator1ActionID, kWLBCmpPrefix + 2) +DECLARE_PMID(kActionIDSpace, kWLBCmpPopupAboutThisActionID, kWLBCmpPrefix + 3) +DECLARE_PMID(kActionIDSpace, kWLBCmpAddItemActionID, kWLBCmpPrefix + 11) +DECLARE_PMID(kActionIDSpace, kWLBCmpRemoveItemActionID, kWLBCmpPrefix + 12) +// WidgetIDs: +DECLARE_PMID(kWidgetIDSpace, kWLBCmpPanelWidgetID, kWLBCmpPrefix + 0) +DECLARE_PMID(kWidgetIDSpace, kWLBCmpTextWidgetID, kWLBCmpPrefix + 1) +DECLARE_PMID(kWidgetIDSpace, kWLBCmpListParentWidgetId, kWLBCmpPrefix + 2) +DECLARE_PMID(kWidgetIDSpace, kWLBCmpListBoxWidgetID, kWLBCmpPrefix + 3) +DECLARE_PMID(kWidgetIDSpace, kWLBCmpListElementEyeballWidgetID, kWLBCmpPrefix + 4) +DECLARE_PMID(kWidgetIDSpace, kWLBCmpListElementPenWidgetID, kWLBCmpPrefix + 5) +// "About Plug-ins" sub-menu: +#define kWLBCmpAboutMenuKey kWLBCmpStringPrefix "kWLBCmpAboutMenuKey" +#define kWLBCmpAboutMenuPath kSDKDefStandardAboutMenuPath kWLBCmpCompanyKey + +// "Plug-ins" sub-menu: +#define kWLBCmpPluginsMenuKey kWLBCmpStringPrefix "kWLBCmpPluginsMenuKey" +#define kWLBCmpPluginsMenuPath kSDKDefPlugInsStandardMenuPath kWLBCmpCompanyKey kSDKDefDelimitMenuPath kWLBCmpPluginsMenuKey + +// Menu item keys: +#define kWLBCmpAddItemMenuItemKey kWLBCmpStringPrefix "kWLBCmpAddItemMenuItemKey" +#define kWLBCmpRemoveItemMenuItemKey kWLBCmpStringPrefix "kWLBCmpRemoveItemMenuItemKey" + +// Other StringKeys: +#define kWLBCmpAboutBoxStringKey kWLBCmpStringPrefix "kWLBCmpAboutBoxStringKey" +#define kWLBCmpAddItemStringKey kWLBCmpStringPrefix "kWLBCmpAddItemStringKey" +#define kWLBCmpRemoveItemStringKey kWLBCmpStringPrefix "kWLBCmpRemoveItemStringKey" +#define kWLBCmpPanelTitleKey kWLBCmpStringPrefix "kWLBCmpPanelTitleKey" +#define kWLBCmpInternalPopupMenuNameKey kWLBCmpStringPrefix "kWLBCmpInternalPopupMenuNameKey" +#define kWLBCmpTargetMenuPath kWLBCmpInternalPopupMenuNameKey +#define kWLBCmpItemBaseKey kWLBCmpStringPrefix "kWLBCmpItemBaseKey" +#define kWLBCmpAddedElementKey kWLBCmpStringPrefix"kWLBCmpAddedElementKey" + + + +// Menu item positions: +#define kWLBCmpAddItemMenuItemPosition 1.0 +#define kWLBCmpRemoveItemMenuItemPosition 2.0 +#define kWLBCmpSeparator1MenuItemPosition 10.0 +#define kWLBCmpAboutThisMenuItemPosition 11.0 + +// Initial data format version numbers +#define kWLBCmpFirstMajorFormatNumber kSDKDef_30_PersistMajorVersionNumber +#define kWLBCmpFirstMinorFormatNumber kSDKDef_30_PersistMinorVersionNumber + +// Data format version numbers for the PluginVersion resource +#define kWLBCmpCurrentMajorFormatNumber kWLBCmpFirstMajorFormatNumber // most recent major format change +#define kWLBCmpCurrentMinorFormatNumber kWLBCmpFirstMinorFormatNumber // most recent minor format change + +#endif // __WLBCmpID_h__ + +// End, WLBCmpID.h. + + diff --git a/MPOLnchListBoxObserver.cpp b/MPOLnchListBoxObserver.cpp new file mode 100644 index 0000000..c8dd0d1 --- /dev/null +++ b/MPOLnchListBoxObserver.cpp @@ -0,0 +1,178 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpListBoxObserver.cpp $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 Adobe Systems Incorporated. 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. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + +// Implementation includes +#include "widgetid.h" + +// Interface includes +#include "ISubject.h" +#include "IControlView.h" +#include "ITreeViewController.h" + +// Implem includes +#include "CAlert.h" +#include "CObserver.h" +#include "K2Vector.tpp" // For NodeIDList to compile +#include "WLBCmpNodeID.h" +#include "WLBCmpID.h" + + +/** + + Observes the listbox via IID_ITREEVIEWCONTROLLER. + + @ingroup wlistboxcomposite + +*/ +class WLBCmpListBoxObserver : public CObserver +{ +public: + + /** + Constructor for WLBListBoxObserver class. + @param interface ptr from boss object on which this interface is aggregated. + */ + WLBCmpListBoxObserver(IPMUnknown *boss); + + /** + Destructor for WLBCmpListBoxObserver class + + */ + ~WLBCmpListBoxObserver(); + + /** + AutoAttach is only called for registered observers + of widgets. This method is called by the application + core when the widget is shown. + + */ + virtual void AutoAttach(); + + /** + AutoDetach is only called for registered observers + of widgets. Called when widget hidden. + */ + virtual void AutoDetach(); + + /** + This class is interested in changes along IID_ILISTCONTROLDATA protocol with classID of + kListSelectionChangedMessage. This message is sent when a user clicks on an element + in the list-box. + + + @param theChange this is specified by the agent of change; it can be the class ID of the agent, + or it may be some specialised message ID. + @param theSubject this provides a reference to the object which has changed; in this case, the button + widget boss object that is being observed. + @param protocol the protocol along which the change occurred. + @param changedBy this can be used to provide additional information about the change or a reference + to the boss object that caused the change. + */ + virtual void Update(const ClassID& theChange, ISubject* theSubject, const PMIID &protocol, void* changedBy); + +}; + +CREATE_PMINTERFACE(WLBCmpListBoxObserver, kWLBCmpListBoxObserverImpl) + + +WLBCmpListBoxObserver::WLBCmpListBoxObserver(IPMUnknown* boss) +: CObserver(boss) +{ + +} + + +WLBCmpListBoxObserver::~WLBCmpListBoxObserver() +{ + +} + + +void WLBCmpListBoxObserver::AutoAttach() +{ + InterfacePtr subject(this, UseDefaultIID()); + if (subject != nil) + { + subject->AttachObserver(this, IID_ITREEVIEWCONTROLLER); + } +} + + +void WLBCmpListBoxObserver::AutoDetach() +{ + InterfacePtr subject(this, UseDefaultIID()); + if (subject != nil) + { + subject->DetachObserver(this, IID_ITREEVIEWCONTROLLER); + } +} + + +void WLBCmpListBoxObserver::Update +( + const ClassID& theChange, + ISubject* theSubject, + const PMIID &protocol, + void* changedBy +) +{ + if ((protocol == IID_ITREEVIEWCONTROLLER) && (theChange == kListSelectionChangedMessage) ) { + do { + InterfacePtr controller(this, UseDefaultIID()); + ASSERT(controller); + if(!controller) + { + break; + } + + NodeIDList selectedItems; + controller->GetSelectedItems(selectedItems); + const int kSelectionLength = selectedItems.size() ; + if (kSelectionLength> 0 ) + { + PMString dbgInfoString("Selected item(s): "); + K2Vector::const_iterator iter, startIter, endIter; + startIter = selectedItems.begin(); + endIter = selectedItems.end(); + for(iter = startIter; iter != endIter; ++iter) + { + const WLBCmpNodeID* oneNode = static_cast(iter->Get()); + PMString item = oneNode->GetName(); + item.Translate(); + dbgInfoString.Append(item); + dbgInfoString += ", "; + } + dbgInfoString.Truncate(2); //remove the last ', ' + dbgInfoString.SetTranslatable(kFalse); // only for debug- not real code + CAlert::InformationAlert(dbgInfoString); + } + + } while(0); + } +} + + + + diff --git a/MPOLnchMacRez.rsrc b/MPOLnchMacRez.rsrc new file mode 100644 index 0000000..e69de29 diff --git a/MPOLnchNoStrip.cpp b/MPOLnchNoStrip.cpp new file mode 100644 index 0000000..59937e4 --- /dev/null +++ b/MPOLnchNoStrip.cpp @@ -0,0 +1,46 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpNoStrip.cpp $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 Adobe Systems Incorporated. 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. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + +#include "InterfaceFactory.h" + +extern bool16 gFalse; + +/** DontDeadStrip + references all implementations to stop the compiler dead stripping them from the executable image. + +*/ +void DontDeadStrip(); + +void DontDeadStrip() +{ + if (gFalse) + { +#include "WLBCmpFactoryList.h" + } +} + +// End, WLBCmpNoStrip.cpp. + + diff --git a/MPOLnchNodeID.cpp b/MPOLnchNodeID.cpp new file mode 100644 index 0000000..8a8bae0 --- /dev/null +++ b/MPOLnchNodeID.cpp @@ -0,0 +1,69 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpNodeID.cpp $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 Adobe Systems Incorporated. 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. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + +// Interface includes: +#include "IPMStream.h" + +// Project includes: +#include "WLBCmpNodeID.h" +/** + @ingroup wlistboxcomposite +*/ + +/* Compare +*/ +int32 WLBCmpNodeID::Compare(const NodeIDClass* nodeID) const +{ + const WLBCmpNodeID* oneNode = static_cast(nodeID); + ASSERT(nodeID); + return fName.Compare(kTrue, oneNode->GetName()); + +} + + +/* Clone +*/ +NodeIDClass* WLBCmpNodeID::Clone() const +{ + return new WLBCmpNodeID(this->GetName()); +} + + +/* Read +*/ +void WLBCmpNodeID::Read(IPMStream* stream) +{ + fName.ReadWrite(stream); +} + + +/* Write +*/ +void WLBCmpNodeID::Write(IPMStream* stream) const +{ + (const_cast(this)->fName).ReadWrite(stream); +} + +// end, File: PnlTrvDataNode.cpp diff --git a/MPOLnchNodeID.h b/MPOLnchNodeID.h new file mode 100644 index 0000000..d57f89d --- /dev/null +++ b/MPOLnchNodeID.h @@ -0,0 +1,107 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpNodeID.h $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 Adobe Systems Incorporated. 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. +// +// +// Each C++ implementation class in the plug-in and its corresponding ImplementationID +// should be registered in this file. +// +//======================================================================================== + +#ifndef __WLBCmpNodeID__ +#define __WLBCmpNodeID__ + +#include "NodeID.h" +#include "IPMStream.h" +#include "WLBCmpID.h" + +/** Represents a node in the tree view. It is the list item. + + @ingroup wlistboxcomposite +*/ +class WLBCmpNodeID : public NodeIDClass +{ + public: + enum { kNodeType = kWLBCmpListBoxWidgetBoss }; + + + /** Factory method to create + new object of this class + @return new instance of this class + */ + static NodeID_rv Create() { return new WLBCmpNodeID(); } + + /** Factory method to create new object of this class + @param path [IN] specifies initial path + @return new instance of this class + */ + static NodeID_rv Create(PMString name) + { return new WLBCmpNodeID(name); } + + /** Destructor + */ + virtual ~WLBCmpNodeID() {} + + + /** @return type of this node + */ + virtual NodeType GetNodeType() const { return kNodeType; } + + /** Comparator function + @param NodeID [IN] specifies the node that we should compare against + @return Comparison results + */ + virtual int32 Compare(const NodeIDClass* NodeID) const; + + /** Create a copy of this + @return + */ + virtual NodeIDClass* Clone() const; + + /** Read this from the given stream + @param stream [IN] specified stream + @return + */ + virtual void Read(IPMStream* stream); + + /** Write this to the given stream + @param [OUT] stream + @return + */ + virtual void Write(IPMStream* stream) const; + + /** Accessor for the value associated with this node + @return const PMString& + */ + const PMString& GetName() const { return fName; } + + + private: + // Note we're keeping the destructor private to force use of the factory methods + WLBCmpNodeID() {} + + WLBCmpNodeID(PMString name):fName(name) {} + + PMString fName; +}; + +#endif // __WLBCmpNodeID__ + + diff --git a/MPOLnchPenObserver.cpp b/MPOLnchPenObserver.cpp new file mode 100644 index 0000000..caee49c --- /dev/null +++ b/MPOLnchPenObserver.cpp @@ -0,0 +1,149 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpPenObserver.cpp $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 Adobe Systems Incorporated. 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. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + +// Implementation includes +#include "widgetid.h" + +// Interface includes +#include "ISubject.h" +#include "ITriStateControlData.h" +// Implem includes +#include "CAlert.h" +#include "CObserver.h" +#include "WLBCmpID.h" + + +/** + + Observes the "pen" buttons in the widget list. + + @ingroup wlistboxcomposite + +*/ +class WLBCmpPenObserver : public CObserver +{ +public: + + /** + Constructor for WLBListBoxObserver class. + @param interface ptr from boss object on which this interface is aggregated. + */ + WLBCmpPenObserver(IPMUnknown *boss); + + /** + Destructor. + */ + ~WLBCmpPenObserver(); + + /** + AutoAttach is only called for registered observers + of widgets. This method is called by the application + core when the widget is shown. + + */ + virtual void AutoAttach(); + + /** + AutoDetach is only called for registered observers + of widgets. Called when widget hidden. + */ + virtual void AutoDetach(); + + /** + Update when there's been a change on the pen widget. + + @param theChange this is specified by the agent of change; it can be the class ID of the agent, + or it may be some specialised message ID. + @param theSubject this provides a reference to the object which has changed; in this case, the button + widget boss object that is being observed. + @param protocol the protocol along which the change occurred. + @param changedBy this can be used to provide additional information about the change or a reference + to the boss object that caused the change. + */ + virtual void Update(const ClassID& theChange, ISubject* theSubject, const PMIID &protocol, void* changedBy); + + + +}; + +CREATE_PMINTERFACE(WLBCmpPenObserver, kWLBCmpPenObserverImpl) + + +WLBCmpPenObserver::WLBCmpPenObserver(IPMUnknown* boss) +: CObserver(boss) +{ + +} + + +WLBCmpPenObserver::~WLBCmpPenObserver() +{ + +} + + +void WLBCmpPenObserver::AutoAttach() +{ + InterfacePtr subject(this, UseDefaultIID()); + if (subject != nil) + { + subject->AttachObserver(this, IID_ITRISTATECONTROLDATA); + } + +} + + +void WLBCmpPenObserver::AutoDetach() +{ + InterfacePtr subject(this, UseDefaultIID()); + if (subject != nil) + { + subject->DetachObserver(this,IID_ITRISTATECONTROLDATA); + } +} + + +void WLBCmpPenObserver::Update +( + const ClassID& theChange, + ISubject* theSubject, + const PMIID &protocol, + void* changedBy +) +{ + if(theChange == kTrueStateMessage) { + // Then the button has been activated. + do { + PMString dbgInfoString("WLBCmpPenObserver::Update() "); + dbgInfoString.SetTranslatable(kFalse); // only for debug- not real code + CAlert::InformationAlert(dbgInfoString); + + } while(0); + } +} + + + + diff --git a/MPOLnchRezDefs.h b/MPOLnchRezDefs.h new file mode 100644 index 0000000..70035fa --- /dev/null +++ b/MPOLnchRezDefs.h @@ -0,0 +1,40 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpRezDefs.h $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 Adobe Systems Incorporated. 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. +// +// +// Defines Resource IDs used by the WLBCmp plug-in. +// +//======================================================================================== + +#ifndef __WLBCmpRezDefs_h__ +#define __WLBCmpRezDefs_h__ + +#define kWLBCmpListElementRsrcID 1200 + +// See. the platform resource file where these are used! +#define kWLBCmpEyeBallIcon 1510 +#define kWLBCmpLockPenIcon 1512 +#define kWLBCmpPenIcon 1514 +#endif // __WLBCmpRezDefs_h__ + +// End, WLBCmpRezDefs.h. + + diff --git a/MPOLnchTreeViewAdapter.cpp b/MPOLnchTreeViewAdapter.cpp new file mode 100644 index 0000000..115f154 --- /dev/null +++ b/MPOLnchTreeViewAdapter.cpp @@ -0,0 +1,85 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpTreeViewAdapter.cpp $ +// +// Owner: Danielle Darling +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 Adobe Systems Incorporated. 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. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + +#include "IStringListData.h" +#include "ListTreeViewAdapter.h" +#include "WLBCmpNodeID.h" +#include "WLBCmpID.h" + +/** + * TreeViewAdapter. + @ingroup wlistboxcomposite + */ +class WLBCmpTreeViewAdapter : public ListTreeViewAdapter +{ +public: + WLBCmpTreeViewAdapter(IPMUnknown* boss); + + virtual ~WLBCmpTreeViewAdapter() + {} + + virtual int32 GetNumListItems() const; + NodeID_rv GetRootNode() const; + virtual NodeID_rv GetNthListItem(const int32& nth) const; + +}; + +CREATE_PMINTERFACE(WLBCmpTreeViewAdapter, kWLBCmpTVHierarchyAdapterImpl) + +WLBCmpTreeViewAdapter::WLBCmpTreeViewAdapter(IPMUnknown* boss):ListTreeViewAdapter(boss) +{ + //initialize the list with the default list string name + K2Vector lists; + for (int32 i = 0; i< 12; i++) + { + PMString name(kWLBCmpItemBaseKey); + name.AppendNumber(i+1); + name.Translate(); + lists.push_back(name); + } + InterfacePtr iListData(this, IID_ISTRINGLISTDATA); + iListData->SetStringList(lists); + +} +int32 WLBCmpTreeViewAdapter::GetNumListItems()const +{ + InterfacePtr iListData(this, IID_ISTRINGLISTDATA); + + return iListData->GetStringList().size(); +} + +NodeID_rv WLBCmpTreeViewAdapter::GetRootNode() const +{ + PMString rootString("Root"); + rootString.Translate(); + return WLBCmpNodeID::Create(rootString); +} + +NodeID_rv WLBCmpTreeViewAdapter::GetNthListItem(const int32& nth) const +{ + InterfacePtr iListData(this, IID_ISTRINGLISTDATA); + + return WLBCmpNodeID::Create(iListData->GetStringList()[nth]); +} diff --git a/MPOLnchTreeViewWidgetMgr.cpp b/MPOLnchTreeViewWidgetMgr.cpp new file mode 100644 index 0000000..511c2b5 --- /dev/null +++ b/MPOLnchTreeViewWidgetMgr.cpp @@ -0,0 +1,87 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpTreeViewWidgetMgr.cpp $ +// +// Owner: Danielle Darling +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 Adobe Systems Incorporated. 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. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + +#include "IControlView.h" +#include "IInLineEditController.h" +#include "IPanelControlData.h" +#include "ITextControlData.h" + +#include "CTreeViewWidgetMgr.h" +#include "WLBCmpNodeID.h" +#include "WLBCmpID.h" +#include "WLBCmpRezDefs.h" + + +/** + * Tree view manager + @ingroup wlistboxcomposite + */ +class WLBCmpTVWidgetMgr : public CTreeViewWidgetMgr +{ +public: + WLBCmpTVWidgetMgr(IPMUnknown *boss); + virtual ~WLBCmpTVWidgetMgr() + {} + + virtual bool16 ApplyDataToWidget( const NodeID& node, IPanelControlData* widgetList, int32 message ) const; + + void RegisterStyles() + { + RegisterStyleWidget(kLargePaletteRowsTreeStyle, kWLBCmpListElementRsrcID, kWLBCmpPluginID); + } +}; + + +CREATE_PMINTERFACE(WLBCmpTVWidgetMgr, kWLBCmpTVWidgetMgrImpl) + +WLBCmpTVWidgetMgr::WLBCmpTVWidgetMgr(IPMUnknown *boss) : +CTreeViewWidgetMgr(boss, kList) +{ +} + + + +bool16 WLBCmpTVWidgetMgr::ApplyDataToWidget(const NodeID& node, + IPanelControlData* widgetList, + int32 message) const +{ + do + { + TreeNodePtr nodeID(node); + PMString listName = nodeID->GetName(); + + IControlView* nameView = widgetList->FindWidget(kWLBCmpTextWidgetID); + + InterfacePtr textControlData( nameView, UseDefaultIID() ); + ASSERT(textControlData); + if( textControlData== nil) { + break; + } + textControlData->SetString(listName); + } while (false); + + return kTrue; +} + diff --git a/MPOLnch_enUS.fr b/MPOLnch_enUS.fr new file mode 100644 index 0000000..7c10628 --- /dev/null +++ b/MPOLnch_enUS.fr @@ -0,0 +1,84 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmp_enUS.fr $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 Adobe Systems Incorporated. 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. +// +//======================================================================================== + +#ifdef __ODFRC__ + +//======================================================================================== +// English strings +//======================================================================================== + +// English string table is defined here + +resource StringTable (kSDKDefStringsResourceID + index_enUS) +{ + k_enUS, // Locale Id + kEuropeanMacToWinEncodingConverter, // Character encoding converter + + { + + // ----- Menu strings + kWLBCmpCompanyKey, kWLBCmpCompanyValue, + kWLBCmpAboutMenuKey, kWLBCmpPluginName "[US]...", + kWLBCmpPluginsMenuKey, kWLBCmpPluginName "[US]", + kWLBCmpAddItemMenuItemKey, "Add item[US]", + kWLBCmpRemoveItemMenuItemKey, "Remove item[US]", + kSDKDefAboutThisPlugInMenuKey, kSDKDefAboutThisPlugInMenuValue_enUS, + + // ----- Command strings + + + // ----- Window strings + + + // ----- Panel/dialog strings + kWLBCmpPanelTitleKey, "WLB-Composite" "[US]",// irp was kWLBCmpPluginName "[US]", + // ----- Error strings + + + // ----- Misc strings + kWLBCmpAboutBoxStringKey, kWLBCmpPluginName "[US], version " kWLBCmpVersion " by " kWLBCmpAuthor "\n\n" kSDKDefCopyrightStandardValue "\n\n" kSDKDefPartnersStandardValue_enUS, + // + kWLBCmpItemBaseKey "1", " Glasgow Celtic", + kWLBCmpItemBaseKey "2", " Hibernian", + kWLBCmpItemBaseKey "3", " Glasgow Rangers", + kWLBCmpItemBaseKey "4", " Kilmarnock", + + kWLBCmpItemBaseKey "5", " Heart of Midlothian", + kWLBCmpItemBaseKey "6", " Dunfermline Athletic", + kWLBCmpItemBaseKey "7", " Motherwell", + kWLBCmpItemBaseKey "8", " St. Johnstone", + + kWLBCmpItemBaseKey "9", " Dundee", + kWLBCmpItemBaseKey "10", " Aberdeen", + kWLBCmpItemBaseKey "11", " Dundee United", + kWLBCmpItemBaseKey "12", " St. Mirren", + kWLBCmpAddedElementKey, " + Added Element", + } + +}; + +#endif // __ODFRC__ + +// End , WLBCmp_enUS.fr + + diff --git a/MPOLnch_jaJP.fr b/MPOLnch_jaJP.fr new file mode 100644 index 0000000..6bed7bf --- /dev/null +++ b/MPOLnch_jaJP.fr @@ -0,0 +1,84 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmp_jaJP.fr $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 Adobe Systems Incorporated. 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. +// +//======================================================================================== + +#ifdef __ODFRC__ + +//======================================================================================== +// Japanese strings +//======================================================================================== + +// Japanese string table is defined here + +resource StringTable (kSDKDefStringsResourceID + index_jaJP) +{ + k_jaJP, // Locale Id + 0, // Character encoding converter + + { + + // ----- Menu strings + kWLBCmpCompanyKey, kWLBCmpCompanyValue, + kWLBCmpAboutMenuKey, kWLBCmpPluginName "[JP]...", + kWLBCmpPluginsMenuKey, kWLBCmpPluginName "[JP]", + kWLBCmpAddItemMenuItemKey, "項目を追加[JP]", + kWLBCmpRemoveItemMenuItemKey, "項目を削除[JP]", + kSDKDefAboutThisPlugInMenuKey, kSDKDefAboutThisPlugInMenuValue_jaJP, + + // ----- Command strings + + + // ----- Window strings + + + // ----- Panel/dialog strings + kWLBCmpPanelTitleKey, kWLBCmpPluginName "[JP]", + // ----- Error strings + + + // ----- Misc strings + kWLBCmpAboutBoxStringKey, kWLBCmpPluginName "[JP], version " kWLBCmpVersion " by " kWLBCmpAuthor "\n\n" kSDKDefCopyrightStandardValue "\n\n" kSDKDefPartnersStandardValue_jaJP, + // + kWLBCmpItemBaseKey "1", " Glasgow Celtic", + kWLBCmpItemBaseKey "2", " Hibernian", + kWLBCmpItemBaseKey "3", " Glasgow Rangers", + kWLBCmpItemBaseKey "4", " Kilmarnock", + + kWLBCmpItemBaseKey "5", " Heart of Midlothian", + kWLBCmpItemBaseKey "6", " Dunfermline Athletic", + kWLBCmpItemBaseKey "7", " Motherwell", + kWLBCmpItemBaseKey "8", " St. Johnstone", + + kWLBCmpItemBaseKey "9", " Dundee", + kWLBCmpItemBaseKey "10", " Aberdeen", + kWLBCmpItemBaseKey "11", " Dundee United", + kWLBCmpItemBaseKey "12", " St. Mirren", + kWLBCmpAddedElementKey, " + 追加要素", + } + +}; + +#endif // __ODFRC__ + +// End , WLBCmp_jaJP.fr + + diff --git a/NoEyeball.ico b/NoEyeball.ico new file mode 100644 index 0000000000000000000000000000000000000000..016976e74e8d6e0829f21fcc0302e4cb72019026 GIT binary patch literal 1078 zcmdUuI}XAy5Jbm;8u#W^(ryRG@^QF9=*(MN1_UV(MIy%8->fZfq_Gq9CVVxP+aspgmqP_AbL{(lKiRPpX_V(Ho_HD#bI5c z;j?B?(D`{f*AxF!xBq?4TgQL6&Ua$f8aZqV*SRY{VO{5$d>Mwu>7eNv@T6bqoKu^k Ky*Gbzzu6s6gHmJw literal 0 HcmV?d00001 diff --git a/NoPencil.ICO b/NoPencil.ICO new file mode 100644 index 0000000000000000000000000000000000000000..4ee9928aef4bea4f05ac2336ba7de4855de11a6b GIT binary patch literal 1078 zcmdUuK@P$&3eV-RR-VHTIEHbp2!x7+I1sVzdhIw>V`(ELO)4eJ zah;?insd~1k`6m*X05;zOxhDAWA8SMCLOa7BB^Svs5jdBsx{9bk1r9HALH_j^UKfQ z)f^PumfjEjpE_oKoVSnN=NVXIhoNwvyYma|KCk54Fg#8NPp?8G{mAEhH575*{LX#H EJCub-ga7~l literal 0 HcmV?d00001 diff --git a/Pen.ico b/Pen.ico new file mode 100644 index 0000000000000000000000000000000000000000..ece6ecb8b25b180e9b51296bcd265035557a3ef7 GIT binary patch literal 1078 zcmdUuF%H5o3`Ku|ne+y9LcImtj2x{;VPwq6fH2Q3R7q7pLJaWRZ~Mn_l%|eUX`!a6 za1Sf3uu^31JR(UlF%Aw(sIKeqp0NIvnMaVvhur)m*jdUq zhIpj|$^26SwayXAQdwW>5R&EdL$HZ1^GaY`oM5U$$d_X?6HP&0?hBN