Mini Kabibi Habibi

Current Path : C:/Users/ITO/Desktop/VF9/program files/microsoft visual foxpro 9/gallery/
Upload File :
Current File : C:/Users/ITO/Desktop/VF9/program files/microsoft visual foxpro 9/gallery/_gallery.vct

�EVERSION =   3.00_node
_gallery.h1&Component Gallery action base classes.1
_gallery.h����&..\..\..\vfp\foxpro.h��	�$scripthook
Init
Pixels..\catalog.ico..\catalog.icoNode class.Classcustom_nodecustom�PROCEDURE removeview
LOCAL lcViewItem,lnCount

IF this.lDeleted
	RETURN
ENDIF
lcText=LOWER(this.cText)
IF NOT EMPTY(lcText) AND TYPE("this.oHost.cboViewType")=="O"
	WITH this.oHost.cboViewType
		FOR lnCount = 1 TO .ListCount
			IF LOWER(.List[lnCount])==lcText
				.RemoveItem(lnCount)
				EXIT
			ENDIF
		ENDFOR
	ENDWITH
ENDIF
RETURN this.Remove(.F.,.T.)

ENDPROC
PROCEDURE clookin_assign
LPARAMETERS vNewVal
LOCAL lcLookIn,lcLookInAlias,oFolder,lnCount

this.cLookIn=m.vNewVal
lcLookIn=LOWER(ALLTRIM(m.vNewVal))
IF EMPTY(lcLookIn) OR lcLookIn==LOWER(M_ALL_CATALOGS_LOC)
	this.cLookInAlias=""
	RETURN
ENDIF
lcLookInAlias=""
FOR lnCount = 1 TO this.oHost.nFolderCount
	oFolder=this.oHost.aFolderList[lnCount]
	IF NOT ISNULL(oFolder) AND oFolder.lCatalog AND ;
			ALLTRIM(LOWER(oFolder.cText))==lcLookIn
		lcLookInAlias=oFolder.cSourceAlias
		EXIT
	ENDIF
ENDFOR
this.cLookInAlias=lcLookInAlias

ENDPROC
custom_gallery.vcx\Height = 22
Width = 24
conselection = 
cmenu = 
ohost = .NULL.
Name = "_shortcutmenu"
_folderClass1
_gallery.h����&..\..\..\vfp\foxpro.h��	�$_record
_gallery.hPixelsClass1custom_recordPixelscustom
_gallery.h1
_gallery.h_item_view
_gallery.h
..\folder.ico11
_gallery.h����&..\..\..\vfp\foxpro.h��	�$PixelsClass1_node_viewcustom_gallery.vcxName = "_itemshortcutmenu"
7cobjecttype = object
lobject = .T.
Name = "_object"
_gallery.vcxClassPixels1
_shortcutmenu_gallery.vcx
..\folder.ico_foldercustom
Folder class.11
_gallery.h����&..\..\..\vfp\foxpro.h��	�$�cfoldertype
lsortoncleanup
lsearchsubdirectories
*initvcxfolder 
*initfilefolder 
*initpjxfolder 
*initdbcfolder 
*getfoldertype 
*find 
*initfolder 
*cleanup 
*backup 
*restore 
custom1PixelsClasscustom
_shortcutmenucustom_gallery.vcx1
_gallery.h�Ӫ��&..\..\..\vfp\foxpro.h�Ԃ	�$_item
_gallery.h_itemshortcutmenu
_gallery.hPixelscustom_object1
_gallery.h����&..\..\..\vfp\foxpro.h��	�$PixelsClass
_shortcutmenu_itemshortcutmenu$*createnode 
*pastelink 
*paste 
_object_node�cfoldertype = 
lsortoncleanup = .T.
lsearchsubdirectories = .T.
citemtype = 
cobjecttype = folder
lfolder = .T.
lgetfileaddress = .T.
Name = "_folder"
..\item.ico..\item.icoItem class.Class_node_item�nlastdatasessionid
nlastselect
nlastrecno
loriginaldeleted
ldeleted_access
ldeleted_assign
setdeleted
getdeleted
setpointer
restorepointer
scatter
gather
�nrecno
calias
ndatasessionid
orecord
ldeleted
nlastdatasessionid
nlastselect
nlastrecno
lautocommit
loriginaldeleted
*newinstance 
*revert 
*commit 
*ldeleted_access 
*ldeleted_assign 
*setdeleted 
*getdeleted 
*delete Delete Event.
*recall 
*setpointer 
*restorepointer 
*reset Resets the Timer control so that it starts counting from 0.
*scatter 
*gather 
*newrecord 
*release Releases a FormSet or Form from memory.
�Height = 24
Width = 24
nrecno = 1
calias = 
ndatasessionid = 1
orecord = .NULL.
nlastdatasessionid = 1
nlastselect = 1
nlastrecno = 1
lautocommit = .T.
Name = "_record"
�cviewalias
litemname
lclassname
ldescription
lproperties
lfilename
ccontaining
clookin
ckeywordlist
citemtypes
llookinenabled
leditmode
clookinalias
*removeview 
*clookin_assign 
�cviewalias = 
litemname = .T.
ldescription = .T.
ccontaining = 
clookin = 
ckeywordlist = 
citemtypes = 
llookinenabled = .T.
cobjecttype = view
lview = .T.
clookinalias = 
Name = "_view"
RPROCEDURE newinstance
LPARAMETERS tnDataSessionID
LOCAL oNewObject,lnLastDataSessionID

lnLastDataSessionID=SET("DATASESSION")
IF TYPE("tnDataSessionID")=="N" AND tnDataSessionID>=1
	SET DATASESSION TO tnDataSessionID
ELSE
	SET DATASESSION TO (this.nDataSessionID)
ENDIF
oNewObject=NEWOBJECT(this.Class,this.ClassLibrary)
SET DATASESSION TO (lnLastDataSessionID)
RETURN oNewObject

ENDPROC
PROCEDURE revert
IF NOT this.SetPointer()
	this.oRecord=.NULL.
	RETURN .F.
ENDIF
IF this.lOriginalDeleted
	DELETE
ELSE
	RECALL
ENDIF
this.Scatter
this.RestorePointer

ENDPROC
PROCEDURE commit
IF NOT this.SetPointer()
	RETURN .F.
ENDIF
this.Gather
this.RestorePointer

ENDPROC
PROCEDURE ldeleted_access
RETURN this.GetDeleted()

ENDPROC
PROCEDURE ldeleted_assign
LPARAMETERS m.vNewVal

this.SetDeleted(m.vNewVal)

ENDPROC
PROCEDURE setdeleted
LPARAMETERS lDeleted

IF NOT this.SetPointer()
	RETURN .F.
ENDIF
IF NOT lDeleted=DELETED()
	IF lDeleted
		DELETE
	ELSE
		RECALL
	ENDIF
ENDIF
this.RestorePointer

ENDPROC
PROCEDURE getdeleted
LOCAL llDeleted

IF NOT this.SetPointer()
	RETURN .F.
ENDIF
llDeleted=DELETED()
this.RestorePointer
RETURN llDeleted

ENDPROC
PROCEDURE delete
RETURN this.SetDeleted(.T.)

ENDPROC
PROCEDURE recall
RETURN this.SetDeleted(.F.)

ENDPROC
PROCEDURE setpointer
IF ISNULL(this.oRecord)
	this.lOriginalDeleted=.F.
	RETURN .F.
ENDIF
this.nLastDataSessionID=SET("DATASESSION")
SET DATASESSION TO (this.nDataSessionID)
this.nLastSelect=SELECT()
this.nLastRecNo=RECNO()
IF NOT USED(this.cAlias) OR NOT BETWEEN(this.nRecNo,1,RECCOUNT(this.cAlias))
	this.lOriginalDeleted=.F.
	SET DATASESSION TO (this.nDataSessionID)
	RETURN .F.
ENDIF
SELECT (this.cAlias)
GO this.nRecNo

ENDPROC
PROCEDURE restorepointer
SET DATASESSION TO (this.nLastDataSessionID)
SELECT (this.nLastSelect)
IF USED() AND BETWEEN(this.nLastRecNo,1,RECCOUNT())
	GO this.nLastRecNo
ENDIF

ENDPROC
PROCEDURE reset
LOCAL lnDataSessionID,lcAlias,lnRecNo,oRecord

lnDataSessionID=SET("DATASESSION")
lcAlias=LOWER(ALIAS())
lnRecNo=RECNO()
IF USED()
	this.lOriginalDeleted=DELETED()
	SCATTER MEMO NAME oRecord
ELSE
	this.lOriginalDeleted=.F.
	oRecord=.NULL.
ENDIF
IF this.lAutoCommit
	this.Commit
ENDIF
this.nDataSessionID=lnDataSessionID
this.cAlias=lcAlias
this.nRecNo=lnRecNo
this.oRecord=oRecord

ENDPROC
PROCEDURE scatter
SCATTER MEMO NAME this.oRecord

ENDPROC
PROCEDURE gather
GATHER MEMO NAME this.oRecord

ENDPROC
PROCEDURE newrecord
LOCAL oNewRecord

IF NOT this.SetPointer()
	RETURN .F.
ENDIF
APPEND BLANK
oNewRecord=this.NewInstance()
this.RestorePointer
RETURN oNewRecord

ENDPROC
PROCEDURE release
RELEASE this

ENDPROC
PROCEDURE Destroy
IF this.lAutoCommit
	this.Commit
ENDIF

ENDPROC
PROCEDURE Init
IF NOT this.Reset()
	RETURN .F.
ENDIF

ENDPROC
�conselection
cmenu
ohost
^amenu[1,0] 
*release Releases a FormSet or Form from memory.
*deactivatemenu 
*activatemenu 
*clearmenu 
*newmenu 
*addmenubar 
*addmenuseparator 
*showmenu 
*setmenu 
*releaseobjects 
�� ��%3�$_�U�����%������B��T��C��@��4%�C��
�!C�this.oHost.cboViewTypeb�O	������������������(������%�CC��	@�������C��
��!�������B�C-a����U
LCVIEWITEMLNCOUNTTHISLDELETEDLCTEXTCTEXTOHOSTCBOVIEWTYPE	LISTCOUNTLIST
REMOVEITEMREMOVE���������T����
���T��CC�
��@��*%�C����C�{All Catalogs}@��}�T������B��
T����������(����	���T��C����
��,%�C��
���	�CC��@��	���T����
��!����T������UVNEWVALLCLOOKIN
LCLOOKINALIASOFOLDERLNCOUNTTHISCLOOKINCLOOKINALIASOHOSTNFOLDERCOUNTAFOLDERLISTLCATALOGCTEXTCSOURCEALIAS
removeview,��clookin_assign��1�AA!A1���AAAAA�3q1"1�AA����AAA2v��)tHeight = 23
Width = 23
ctype = 
cid = 
cparent = 
cdesc = 
ccatalog = 
oparent = .NULL.
cproperties = 
cscript = 
ohost = .NULL.
_cversion = 
builder = 
builderx = 
cclick = 
cdragdrop = 
cdblclick = 
crightclick = 
cdragdrop2 = 
clink = 
olink = .NULL.
nitemindex = 0
nitemcount = -1
ctext = 
cscriptmethod = 
nindex = 0
ctooltiptext = 
cstatusbartext = 
cpicture = 
cfolderpicture = 
visible = .T.
ckeypress = 
osource = .NULL.
otarget = .NULL.
citemclass = 
nnodeindex = 0
ccatalogpath = 
oobject = .NULL.
citemclasslibrary = 
lfullpath = .T.
ctypedesc = 
enabled = .T.
cviews = 
oaction = .NULL.
nrecno = 0
calias = 
ofolder = .NULL.
cclasslib = 
cclassname = 
citemtpdesc = 
ccomment = 
cuser = 
cobjecttype = node
vresult = .T.
tupdated = ({:})
nsourcerecno = 0
csourcealias = 
csourcecatalog = 
oshortcutmenu = .NULL.
cid2 = 
onode = .NULL.
orecord = .NULL.
ckeywords = 
cclass = 
cfilename = 
coledragover = 
coledragdrop = 
ocontrol = .NULL.
csourcecatalogpath = 
citemtype = 
ctarget = 
crefreshed = 
cselected = 
lignorescripterrors = .T.
Name = "_node"
�lrightclickmenu = .T.
crightclickmenu = 
lautosetmenu = .T.
cmethod = 
citemtypedesc = 
lmodify = .T.
lpropertiesmenu = .T.
ldefaultmenu = .T.
cformclasslibrary = 
lnewmenu = .T.
lpastemenus = .T.
cobjecttype = item
Name = "_item"
�lrightclickmenu
crightclickmenu
lautosetmenu
cmethod
citemtypedesc
lmodify
lpropertiesmenu
ldefaultmenu
cformclasslibrary
lnewmenu
lpastemenus
lwebview Specifies Web View mode on/off.
*modify 
*run Occurs when an Active Document is ready to execute your application code.
*showmenu 
*setmenu 
*about 
*help 
*clearmenu 
*quickview 
*uponelevel 
*open 
*setfocus Sets the focus to a control.
*show Displays a Form and determines if the Form is modal or modeless.
*hide Hides a Form, FormSet, or ToolBar by setting the Visible property to false (.F.).
*disable 
*enable 
*newmenu 
*addmenuseparator 
*addpropertiesmenu 
*addmenubar 
*adddefaultmenu 
*cut 
*copy 
*paste 
*createlink 
*rename 
*pastelink 
*addpastemenus 
*oledragover Occurs when data is dragged over a dragged over a drop target and the drop target's OLEDropMode property is set to 1 - Enabled.
*oledragdrop Occurs when data is dropped on a drop target and the drop target's OLEDropMode property is set to 1 - Enabled.
*olecompletedrag Occurs when data is dropped on the drop target or the OLE drag and drop operation is canceled.
*olegivefeedback Occurs after every OLEDragOver event. Allows the drag source to specify the type of OLE drag and drop operation and the visual feedback.
*olesetdata Occurs when a drop target calls the GetData method and there is no data in the specified format.
*olestartdrag Occurs on a drag source object as soon as the OLE drag operation begins.
*afterlabeledit 
v�� ]]O%+
d��U
����<��UTHISRELEASEOBJECTS?%�C������B��u�����T��������UTHISCMENU����������������	�
���
��T��CC�D��T��CC�D��%�C�
this.aMenub�C����B�-���T��C�����%�������B�-���>%����C�thisformb�O	�C��@�toolbar	�� �!T��C����C���6���"T�	�CC���	C��]�C��6��T����	��T��C�����T������u��	���%�C������s��	��������W�'1���	��DEACTIVATE MENU (lcMenu)��
T����������(����L�.T��C��C�����C���6��N%�C�
lcMenuItemb�C�C���$������C���\-	����T������.��T������T�
�-��%�C��=�^����T��C��\��T�
�a���&%����CC�����
	��-�T��CC��������B�
T������%�C����m�s�����	�"�������?DEFINE BAR lnBar OF (lcMenu) PROMPT (lcMenuItem) &lcClauses
�
%��
����G:������	�(�a���%��
����.��T��C������-%�C�luMenuSelectionb�O�C��
	����T�
�C��]��
s��
��W�(1���
��DEACTIVATE MENU (lcMenu2)�1�����	����
��%�C�������T����������C�
����.��%�C������T��C������%�C��
��H�7ON SELECTION BAR lnBar OF (lcMenu) &luMenuSelection
���%����C��
��o�B��t��	��%�C���
����u������T������UTCPARENTMENULNARRAYCOLUMNSLLMULTIARRAYLNBARLNSKIPCOUNTLNCOUNTLNMROWLNMCOLLNMENUCOUNTLCMENULCMENU2
LCMENUITEMLUMENUSELECTION	LLSETMARK	LCCLAUSESTHISAMENUTHISFORM	BASECLASSDOCKPOSITIONCMENUCONSELECTIONACTIVATEMENU3������T������T������UTHISAMENUCONSELECTIONB�C�������UTHISCLASSCLASSLIBRARYb�������������	�
���
�%�C����T�B�-���&%�C�tcPromptb�O�C��
	����
T�
����T��������(�C�
������7��CC���
�C���
�C���
�������B��
T�����T��CC������6��
%����A�T���^����
%����p�T����
 SKIP FOR .T.���
%������T����
 STYLE "B"���T�
�C�����T��C�����!%��
��
CC����	���
T�
����
T�������T�
��
����
T���
�����������#%�C�tnElementNumberb�N����T�	�CC�8�D��%��	�

����%�C���	������B�-���
T���	����%�������T���������B��T������������T������������%�����[�T�������������UTCPROMPT
TCONSELECTION	TCCLAUSESTNELEMENTNUMBERTLMARK
TLDISABLEDTLBOLDLCPROMPT	LCCLAUSESLNELEMENTNUMBERLNMENUCOUNTLNARRAYCOLUMNSLNINDEX
OSHORTCUTMENUAMENUTHIS
ADDMENUBAR"�����C�\-�������UTNELEMENTNUMBERTHIS
ADDMENUBAR
B�C����UTHISACTIVATEMENU���
����B�-��UTOOBJECTTHIS	CLEARMENU

����UTHIS	CLEARMENUT����UTHISOHOST

����UTHISRELEASEOBJECTSrelease,��deactivatemenuZ��activatemenu���	clearmenua��newmenu���
addmenubar���addmenuseparator��showmenu^��setmenu���Init���releaseobjects���Destroy
��1�q3!AA�A3q���qAQqA�A!Q!�Q��qA�q��AA�q!�Aa���A����A��A�AA�����!1AAA�!AqAA�AA�1�A33R3���qAa���rAAA���!A��A��AQQ���A�a1A�qA�AAaAA���A3q�3�3q�q3�3�3�26[���
]�
�
ka7qcX�v��B��a}����������2��Pe�)]ctype
cid
cparent
cdesc
ccatalog Catalog file name.
oparent
cproperties
cscript
ohost
_cversion Version information.
builder
builderx
cclick
cdragdrop
cdblclick
crightclick
cdragdrop2
clink
olink
nitemindex
nitemcount
ctext
lscriptmode
cscriptmethod
nindex
ctooltiptext
cstatusbartext
cpicture
cfolderpicture
visible Specifies whether an object is visible or hidden.
ckeypress
osource
otarget
citemclass
nnodeindex
ccatalogpath Catalog file path.
oobject
citemclasslibrary
lfullpath
ctypedesc
lobject
enabled Specifies whether the form or control can respond to user-generated events.
cviews
oaction
lruncodemode
nrecno
calias
ofolder
cclasslib
cclassname
citemtpdesc
ccomment
cuser
cobjecttype
vresult
tupdated
nsourcerecno
csourcealias
csourcecatalog
oshortcutmenu
cid2
onode
orecord
lcatalog
lfolder
lfolderitem
lview
ckeywords
cclass
cfilename
coledragover
coledragdrop
ocontrol
ldeleted
csourcecatalogpath
citemtype
ctarget
lgetfileaddress
lrelease
ldynamic
crefreshed
lrefreshed
cselected
lignorescripterrors
*click Occurs when the user presses and then releases a mouse button over an object or when you programmatically trigger the event.
*dblclick Occurs when the user presses and releases the left (primary) mouse button twice in quick succession.
*rightclick Occurs when the user presses and then releases the right (secondary) mouse button over a control.
*keypress Occurs when the user presses and releases a key.
*dragdrop Occurs when a drag-and-drop operation is completed.
*dragdrop2 
*runcode 
*setproperties 
*scripthook 
*runscript 
^aitemindexes[1,0] 
*fullpath 
*writeproperties 
*readproperties 
*properties 
*refresh Repaints a Form or control and refreshes any values.
*release Releases a FormSet or Form from memory.
*remove 
*getfile 
*getfileaddress 
*newinstance 
*releaseobjects 
*refreshpicture 
*refreshfolderpicture 
*initproperties 
*refreshed 
*selected Specifies if an item is selected in a ComboBox or ListBox control.
�� ����%jRI��U]�������T��C���a�����%�C����O��L�B�-���
����UTVALIASTNRECNOONODETHISOHOST
CREATENODERELEASEB�C��������UTHISOHOST	PASTELINKOFOLDERB�C��������UTHISOHOSTPASTEOFOLDER���������������	�
�T�������T�����
��T��������$T�	�����
	���
	��
����T��C����D��C�
Lar\<ge Icons�oTHIS.oHost.SetImageView(0)�������D��C�
S\<mall Icons�oTHIS.oHost.SetImageView(1)�������=��C�\<List�oTHIS.oHost.SetImageView(2)�������@��C�	\<Details�oTHIS.oHost.SetImageView(3)���������C�\<View�����
����T�
�C������
%��
���
�����%��	�C�	itemtypes�	����T��C����T��-��T��CW��F��
G((�Text�-�~������T��C����%�C��=�*����T��CC��\����%�C��=�~����T��CC��\����%��
��
�T��a��
�����%���\-��.�
�������K��C��+oTHIS.CreateNode(oTHIS.oHost.oFolderSource,CCCOZ��)������
F������C�
Ne\<w Item�����
�����%������=��C�P\<roperties�oTHIS.oHost.oFolder.Properties�����UTOOBJECT	OVIEWMENUONEWMENUOFOLDERLNIMAGEVIEW
LLNEWNODESLNLASTSELECTLCTEXT
LLVIEWMODE	LLNEWMENULLADDSEPARATOROHOST
OFOLDERSOURCE
NIMAGEVIEW	NVIEWTYPELNEWMENULDYNAMICTHIS	CLEARMENUNEWMENU
ADDMENUBARADDMENUSEPARATOR
ADDPASTEMENUS	ITEMTYPESTEXTVISIBLELPROPERTIESMENU������+%�C�
this.oHostb�O�
C���
	��V�B�C���������'%�C�	_oBrowserb�O�C��
	����B�C��������UNERRORCMETHODNLINETHISOHOSTERROR	_OBROWSER
createnode,��	pastelink���paste	��setmenuF��Error���1�q�QqA�3�3�3q�121�A�AA������A���q�A��qAAqAA���A1���AA���A�A3���Aq�A3�	�I
g
A&'	L)�=PROCEDURE initvcxfolder
LOCAL lcFileName,lcAlias,lcAlias2,lnLastSelect,lnRecNo,lcClass
LOCAL lcDefaultCatalogPath,lcPicture

IF NOT this.InitFolder() OR EMPTY(SYS(2000,this.cFileName))
	RETURN .F.
ENDIF
lcFileName=this.cFileName
lcDefaultCatalogPath=this.oHost.cDefaultCatalogPath
IF EMPTY(this.cFolderPicture)
	this.cFolderPicture="cfldr.ico"
ENDIF
lnLastSelect=SELECT()
lnRecNo=IIF(EOF() OR RECNO()>RECCOUNT(),0,RECNO())
lcAlias=LOWER(SYS(2015))
lcAlias2=LOWER(SYS(2015))
SELECT 0
USE (lcFileName) AGAIN SHARED ALIAS (lcAlias2)
IF NOT USED(lcAlias2) OR TYPE("Reserved1")#"M"
	USE
	SELECT (lnLastSelect)
	IF lnRecNo>0
		GO lnRecNo
	ENDIF
	RETURN .F.
ENDIF
SELECT LEFT(ObjName,128),* FROM (lcAlias2) ;
		WHERE NOT DELETED() ;
		ORDER BY 1 ;
		INTO CURSOR (lcAlias)
USE IN (lcAlias2)
SCAN ALL FOR LOWER(Reserved1)=="class"
	lcClass=LOWER(ALLTRIM(ObjName))
	lcPicture=ALLTRIM(Reserved5)
	IF NOT EMPTY(lcPicture)
		lcPicture=LOWER(FULLPATH(lcPicture,lcFileName))
	ENDIF
	SELECT (this.cAlias)
	APPEND BLANK
	REPLACE Type WITH "ITEM", Parent WITH this.cID, Text WITH lcClass, ;
			Desc WITH lcClass+" ("+lcFileName+")", Picture WITH lcPicture, ;
			Class WITH lcClass, FileName WITH lcFileName, ;
			ClassName WITH "_ClassItem", ClassLib WITH "vfpglry.vcx", ;
			Updated WITH DATETIME()
	SELECT (lcAlias)
ENDSCAN
USE IN (lcAlias)
SELECT (lnLastSelect)
IF lnRecNo>0
	GO lnRecNo
ENDIF

ENDPROC
PROCEDURE initfilefolder
LOCAL lcFileName,lcFileExt,lnLastSelect,lnRecNo,lcFile,lcPath,lnCount
LOCAL lcDefaultCatalogPath,lnFileCount,lcMatchFile,lcPrefix,lnSuffix,lnAtPos
LOCAL laDir[1]

IF NOT this.InitFolder()
	RETURN .F.
ENDIF
lcFileName=LOWER(this.cFileName)
lcDefaultCatalogPath=this.oHost.cDefaultCatalogPath
lcPath=JUSTPATH(lcFileName)+"\"
IF EMPTY(this.cFolderPicture)
	this.cFolderPicture="ffldr.ico"
ENDIF
lcMatchFile=JUSTFNAME(lcFileName)
lnAtPos=AT(".",lcMatchFile)
IF lnAtPos=0
	lcPrefix=lcMatchFile
	lcSuffix="*"
ELSE
	lcPrefix=ALLTRIM(LEFT(lcMatchFile,lnAtPos-1))
	lcSuffix=ALLTRIM(SUBSTR(lcMatchFile,lnAtPos+1))
	IF EMPTY(lcSuffix)
		lcSuffix="*"
	ENDIF
ENDIF
IF EMPTY(lcPrefix)
	lcPrefix="*"
ENDIF
lnLastSelect=SELECT()
lnRecNo=IIF(EOF() OR RECNO()>RECCOUNT(),0,RECNO())
SELECT (this.cAlias)
lnFileCount=ADIR(laDir,lcPath+"*.*","D")
ASORT(laDir)
FOR lnCount = 1 TO lnFileCount
	lcFile=LOWER(ALLTRIM(laDir[lnCount,1]))
	IF LEFT(lcFile,1)=="."
		LOOP
	ENDIF
	IF "D"$laDir[lnCount,5]
		IF NOT this.lSearchSubDirectories
			LOOP
		ENDIF
		APPEND BLANK
		REPLACE Type WITH "FOLDER", ID WITH LOWER(SYS(2015)), ;
				Parent WITH this.cID, Text WITH PROPER(lcFile), ;
				Desc WITH lcPath, ;
				FileName WITH lcPath+lcFile+"\"+lcPrefix+"."+lcSuffix, ;
				Updated WITH DATETIME()
		LOOP
	ENDIF
	lcMatchFile=JUSTFNAME(lcFile)
	lcFileExt=JUSTEXT(lcFile)
	IF NOT LIKE(lcPrefix,FORCEEXT(lcMatchFile,"")) OR ;
			NOT LIKE(lcSuffix,JUSTEXT(lcMatchFile))
		LOOP
	ENDIF
	DO CASE
		CASE INLIST(lcFileExt+" ","dbc ","pjx ","vcx ")
			APPEND BLANK
			REPLACE Type WITH "FOLDER", ID WITH LOWER(SYS(2015)), ;
					Parent WITH this.cID, Text WITH PROPER(lcFile), ;
					Desc WITH lcPath, ;
					FileName WITH lcPath+lcFile, ;
					Updated WITH DATETIME()
		CASE INLIST(lcFileExt+" ","fpt ","cdx ","idx ","dct ","dcx ","frt ","fxp ", ;
				"qpx ","mpx ","lbt ","mnt ","pjt ","tbk ","spx ","vct ","sct ")
			LOOP
		OTHERWISE
			APPEND BLANK
			REPLACE Type WITH "ITEM", Parent WITH this.cID, Text WITH lcFile, ;
					Desc WITH lcPath+lcFile, ;
					FileName WITH lcPath+lcFile, ;
					ClassName WITH "_FileItem", ClassLib WITH "vfpglry.vcx", ;
					Updated WITH DATETIME()
	ENDCASE
ENDFOR
SELECT (lnLastSelect)
IF lnRecNo>0
	GO lnRecNo
ENDIF

ENDPROC
PROCEDURE initpjxfolder
LOCAL lcFileName,oNode,lcAlias,lcAlias2,lnLastSelect,lnRecNo,lcName,lcParent
LOCAL lcItemType,lcID,lcDesc,lcClassName,lcClassLib,lcDefaultCatalogPath,lcType
LOCAL lcDataID,lcDatabasesID,lcFreeTablesID,lcQueriesID,lcPath
LOCAL lcDocumentsID,lcFormsID,lcReportsID,lcLablesID,lcClassLibrariesID
LOCAL lcCodeID,lcProgramsID,lcAPILibrariesID,lcApplicationsID
LOCAL lcOtherID,lcMenusID,lcTextFilesID,lcOtherFilesID

IF NOT this.InitFolder() OR EMPTY(SYS(2000,this.cFileName))
	RETURN .F.
ENDIF
lcFileName=this.cFileName
lcDefaultCatalogPath=this.oHost.cDefaultCatalogPath
lcPath=JUSTPATH(lcFileName)+"\"
IF EMPTY(this.cFolderPicture)
	this.cFolderPicture="pfldr.ico"
ENDIF
lnLastSelect=SELECT()
lnRecNo=IIF(EOF() OR RECNO()>RECCOUNT(),0,RECNO())
lcDesc="Project: "+lcFileName
oNode=this.oHost.CreateNode(this.cAlias,"FOLDER")
WITH oNode
	.cParent=this.cID
	.cText="Data"
	.cFolderPicture="data.ico"
	.WriteProperties(.F.,.T.)
	lcDataID=.cID
ENDWITH
oNode.Release
oNode=this.oHost.CreateNode(this.cAlias,"FOLDER")
WITH oNode
	.cParent=lcDataID
	.cText="Databases"
	.cFolderPicture="database.ico"
	.WriteProperties(.F.,.T.)
	lcDatabasesID=.cID
ENDWITH
oNode.Release
oNode=this.oHost.CreateNode(this.cAlias,"FOLDER")
WITH oNode
	.cParent=lcDataID
	.cText="Free Tables"
	.cFolderPicture="table.ico"
	.WriteProperties(.F.,.T.)
	lcFreeTablesID=.cID
ENDWITH
oNode.Release
oNode=this.oHost.CreateNode(this.cAlias,"FOLDER")
WITH oNode
	.cParent=lcDataID
	.cText="Queries"
	.cFolderPicture="queries.ico"
	.WriteProperties(.F.,.T.)
	lcQueriesID=.cID
ENDWITH
oNode.Release
oNode=this.oHost.CreateNode(this.cAlias,"FOLDER")
WITH oNode
	.cParent=this.cID
	.cText="Documents"
	.cFolderPicture="docs.ico"
	.WriteProperties(.F.,.T.)
	lcDocumentsID=.cID
ENDWITH
oNode.Release
oNode=this.oHost.CreateNode(this.cAlias,"FOLDER")
WITH oNode
	.cParent=lcDocumentsID
	.cText="Forms"
	.cFolderPicture="forms.ico"
	.WriteProperties(.F.,.T.)
	lcFormsID=.cID
ENDWITH
oNode.Release
oNode=this.oHost.CreateNode(this.cAlias,"FOLDER")
WITH oNode
	.cParent=lcDocumentsID
	.cText="Reports"
	.cFolderPicture="reports.ico"
	.WriteProperties(.F.,.T.)
	lcReportsID=.cID
ENDWITH
oNode.Release
oNode=this.oHost.CreateNode(this.cAlias,"FOLDER")
WITH oNode
	.cParent=lcDocumentsID
	.cText="Labels"
	.cFolderPicture="labels.ico"
	.WriteProperties(.F.,.T.)
	lcLabelsID=.cID
ENDWITH
oNode.Release
oNode=this.oHost.CreateNode(this.cAlias,"FOLDER")
WITH oNode
	.cParent=this.cID
	.cText="Class Libraries"
	.cFolderPicture="classlib.ico"
	.WriteProperties(.F.,.T.)
	lcClassLibrariesID=.cID
ENDWITH
oNode.Release
oNode=this.oHost.CreateNode(this.cAlias,"FOLDER")
WITH oNode
	.cParent=this.cID
	.cText="Code"
	.cFolderPicture="code.ico"
	.WriteProperties(.F.,.T.)
	lcCodeID=.cID
ENDWITH
oNode.Release
oNode=this.oHost.CreateNode(this.cAlias,"FOLDER")
WITH oNode
	.cParent=lcCodeID
	.cText="Programs"
	.cFolderPicture="programs.ico"
	.WriteProperties(.F.,.T.)
	lcProgramsID=.cID
ENDWITH
oNode.Release
oNode=this.oHost.CreateNode(this.cAlias,"FOLDER")
WITH oNode
	.cParent=lcCodeID
	.cText="API Libraries"
	.cFolderPicture="apilibra.ico"
	.WriteProperties(.F.,.T.)
	lcAPILibrariesID=.cID
ENDWITH
oNode.Release
oNode=this.oHost.CreateNode(this.cAlias,"FOLDER")
WITH oNode
	.cParent=lcCodeID
	.cText="Applications"
	.cFolderPicture="apps.ico"
	.WriteProperties(.F.,.T.)
	lcApplicationsID=.cID
ENDWITH
oNode.Release
oNode=this.oHost.CreateNode(this.cAlias,"FOLDER")
WITH oNode
	.cParent=this.cID
	.cText="Other"
	.cFolderPicture="other.ico"
	.WriteProperties(.F.,.T.)
	lcOtherID=.cID
ENDWITH
oNode.Release
oNode=this.oHost.CreateNode(this.cAlias,"FOLDER")
WITH oNode
	.cParent=lcOtherID
	.cText="Menus"
	.cFolderPicture="menus.ico"
	.WriteProperties(.F.,.T.)
	lcMenusID=.cID
ENDWITH
oNode.Release
oNode=this.oHost.CreateNode(this.cAlias,"FOLDER")
WITH oNode
	.cParent=lcOtherID
	.cText="Text"
	.cFolderPicture="text.ico"
	.WriteProperties(.F.,.T.)
	lcTextID=.cID
ENDWITH
oNode.Release
oNode=this.oHost.CreateNode(this.cAlias,"FOLDER")
WITH oNode
	.cParent=lcOtherID
	.cText="Other Files"
	.cFolderPicture="othrfile.ico"
	.WriteProperties(.F.,.T.)
	lcOtherFilesID=.cID
ENDWITH
oNode.Release
oNode=.NULL.
lcAlias=LOWER(SYS(2015))
lcAlias2=LOWER(SYS(2015))
SELECT 0
USE (lcFileName) AGAIN SHARED ALIAS (lcAlias2)
IF NOT USED(lcAlias2)
	USE
	SELECT (lnLastSelect)
	IF lnRecNo>0
		GO lnRecNo
	ENDIF
	RETURN .F.
ENDIF
SELECT LEFT(JUSTFNAME(Name),254),* FROM (lcAlias2) ;
		WHERE NOT DELETED() ;
		ORDER BY 1 ;
		INTO CURSOR (lcAlias)
USE IN (lcAlias2)
SCAN ALL FOR NOT EMPTY(Name)
	lcName=ALLTRIM(STRTRAN(Name,CHR(0),""))
	IF NOT ":"$lcName AND NOT "\\"$lcName
		lcName=LOWER(FULLPATH(lcName,lcPath))
	ENDIF
	lcType=Type
	lcClassName=""
	lcClassLib=""
	lcID=""
	lcParent=this.cID
	lcItemType="ITEM"
	DO CASE
		CASE lcType=="H"
			IF NOT EMPTY(this.cDesc)
				this.cDesc=this.cDesc+CR
			ENDIF
			this.cDesc=this.cDesc+lcDesc+CR+ ;
					"Debug info "+IIF(Debug,"on","off")+CR+ ;
					"Encrypt "+IIF(Encrypt,"on","off")
			LOOP
		CASE lcType=="B"
			lcParent=lcLabelsID
			lcClassname="_ReportItem"
			lcClassLib="vfpglry.vcx"
		CASE lcType=="d"
			lcID=LOWER(SYS(2015))
			lcParent=lcDatabasesID
			lcItemType="FOLDER"
		CASE lcType=="D"
			lcParent=lcFreeTablesID
			lcClassname="_DataItem"
			lcClassLib="vfpglry.vcx"
		CASE lcType=="K"
			lcParent=lcFormsID
			lcClassname="_FormItem"
			lcClassLib="vfpglry.vcx"
		CASE lcType=="L"
			lcParent=lcAPILibrariesID
			lcClassname="_FileItem"
			lcClassLib="vfpglry.vcx"
		CASE lcType=="M"
			lcParent=lcMenusID
			lcClassname="_MenuItem"
			lcClassLib="vfpglry.vcx"
		CASE lcType=="P"
			lcParent=lcProgramsID
			lcClassname="_FileItem"
			lcClassLib="vfpglry.vcx"
		CASE lcType=="Q"
			lcParent=lcQueriesID
			lcClassname="_FileItem"
			lcClassLib="vfpglry.vcx"
		CASE lcType=="R"
			lcParent=lcReportsID
			lcClassname="_ReportItem"
			lcClassLib="vfpglry.vcx"
		CASE lcType=="T"
			lcParent=lcTextID
			lcClassname="_FileItem"
			lcClassLib="vfpglry.vcx"
		CASE lcType=="V"
			lcID=LOWER(SYS(2015))
			lcParent=lcClassLibrariesID
			lcItemType="FOLDER"
		CASE lcType=="Z"
			lcParent=lcApplicationsID
			lcClassname="_FileItem"
			lcClassLib="vfpglry.vcx"
		OTHERWISE
			lcParent=lcOtherFilesID
			lcClassname="_FileItem"
			lcClassLib="vfpglry.vcx"
	ENDCASE
	SELECT (this.cAlias)
	APPEND BLANK
	REPLACE Type WITH lcItemType, ID WITH lcID, Parent WITH lcParent, ;
			Text WITH JUSTFNAME(lcName), Desc WITH lcName+CR+lcDesc, ;
			FileName WITH lcName, ;
			ClassName WITH lcClassName, ClassLib WITH lcClassLib, ;
			Updated WITH DATETIME()
	SELECT (lcAlias)
ENDSCAN
USE IN (lcAlias)
SELECT (lnLastSelect)
IF lnRecNo>0
	GO lnRecNo
ENDIF

ENDPROC
PROCEDURE initdbcfolder
LOCAL lcFileName,lcAlias,lcAlias2,lnRecNo,lcTable,lcTableName,lcTablePath
LOCAL lcDefaultCatalogPath,lnAtPos,lnLastSelect

IF NOT this.InitFolder() OR EMPTY(SYS(2000,this.cFileName))
	RETURN .F.
ENDIF
lcFileName=this.cFileName
lcTablePath=JUSTPATH(lcFileName)+"\"
lcDefaultCatalogPath=this.oHost.cDefaultCatalogPath
IF EMPTY(this.cFolderPicture)
	this.cFolderPicture="dfldr.ico"
ENDIF
lnLastSelect=SELECT()
lnRecNo=IIF(EOF() OR RECNO()>RECCOUNT(),0,RECNO())
lcAlias=LOWER(SYS(2015))
lcAlias2=LOWER(SYS(2015))
SELECT 0
USE (lcFileName) AGAIN SHARED ALIAS (lcAlias2)
IF NOT USED(lcAlias2)
	USE
	SELECT (lnLastSelect)
	IF lnRecNo>0
		GO lnRecNo
	ENDIF
	RETURN .F.
ENDIF
SELECT LEFT(ObjectName,128),* FROM (lcAlias2) ;
		WHERE NOT DELETED() ;
		ORDER BY 1 ;
		INTO CURSOR (lcAlias)
USE IN (lcAlias2)
SCAN ALL FOR LOWER(ALLTRIM(ObjectType))=="table"
	lcTable=LOWER(ALLTRIM(SUBSTR(Property,16)))
	lnAtPos=AT(CHR(0),lcTable)
	IF lnAtPos>0
		lcTable=ALLTRIM(LEFT(lcTable,lnAtPos-1))
	ENDIF
	lcTable=FORCEPATH(lcTable,lcTablePath)
	lcTableName=LOWER(ALLTRIM(ObjectName))
	SELECT (this.cAlias)
	APPEND BLANK
	REPLACE Type WITH "ITEM", Parent WITH this.cID, Text WITH JUSTFNAME(lcTableName), ;
			Desc WITH lcTableName, FileName WITH lcTable, ;
			ClassName WITH "_DataItem", ClassLib WITH "vfpglry.vcx", ;
			Updated WITH DATETIME()
	SELECT (lcAlias)
ENDSCAN
SCAN ALL FOR NOT DELETED() AND LOWER(ALLTRIM(ObjectType))=="view"
	lcTableName=LOWER(ALLTRIM(ObjectName))
	SELECT (this.cAlias)
	APPEND BLANK
	REPLACE Type WITH "ITEM", Parent WITH this.cID, Text WITH lcTableName, ;
			Desc WITH lcTableName, FileName WITH lcFileName, ;
			ClassName WITH "_DataItem", ClassLib WITH "vfpglry.vcx", ;
			Properties WITH "cViewName="+lcTableName, ;
			Updated WITH DATETIME()
	SELECT (lcAlias)
ENDSCAN
USE IN (lcAlias)
SELECT (lnLastSelect)
IF lnRecNo>0
	GO lnRecNo
ENDIF

ENDPROC
PROCEDURE getfoldertype
LOCAL lcFileName,lcFileExt

lcFileName=LOWER(ALLTRIM(this.cFileName))
IF EMPTY(lcFileName)
	RETURN ""
ENDIF
lcFileExt=JUSTEXT(lcFileName)
IF AT(":",lcFileName)>=3 OR LEFT(lcFileName,4)=="www." OR ;
		RIGHT(lcFileName,1)=="/" OR RIGHT(lcFileName,1)=="\"
	RETURN "web"
ENDIF
IF EMPTY(JUSTFNAME(lcFileName)) OR "*"$lcFileName OR "?"$lcFileName OR "%"$lcFileName
	RETURN "file"
ENDIF
DO CASE
	CASE lcFileExt=="dbc"
		RETURN "dbc"
	CASE lcFileExt=="pjx"
		RETURN "pjx"
	CASE lcFileExt=="vcx"
		RETURN "vcx"
ENDCASE
RETURN "web"

ENDPROC
PROCEDURE find
this.oHost.oView=this.oHost.CreateNode("catalog1","VIEW")
IF ISNULL(this.oHost.oView)
	RETURN .F.
ENDIF
WITH this.oHost.oView
	.oParent=this
	.lLookInEnabled=.F.
	.cLookIn=this.oHost.oCatalog.cText
ENDWITH
this.oHost.Find

ENDPROC
PROCEDURE initfolder
IF this.nItemCount>0 OR EMPTY(this.cFileName)
	RETURN .F.
ENDIF
this.lDynamic=.T.

ENDPROC
PROCEDURE cleanup
LPARAMETERS tlNoRefresh,tlIgnoreErrors

this.vResult=.T.
DO brwCleanupCatalog IN browser WITH (this),(tlNoRefresh),(tlIgnoreErrors)
RETURN this.vResult

ENDPROC
PROCEDURE backup
LPARAMETERS tcFileName

this.vResult=.T.
DO brwBackupCatalog IN browser WITH (this),.F.,(tcFileName)
RETURN this.vResult

ENDPROC
PROCEDURE restore
LPARAMETERS tcFileName

this.vResult=.T.
DO brwBackupCatalog IN browser WITH (this),.T.,(tcFileName)
RETURN this.vResult

ENDPROC
PROCEDURE initproperties
LOCAL lcFolderType

IF NOT DODEFAULT()
	RETURN .F.
ENDIF
lcFolderType=this.GetFolderType()
this.cFolderType=lcFolderType
IF EMPTY(lcFolderType)
	RETURN
ENDIF
DO CASE
	CASE this.lWebView
		RETURN
	CASE lcFolderType=="web"
		this.lWebView=.T.
		RETURN
	CASE this.lFolderItem
		RETURN
	CASE lcFolderType=="file"
		RETURN this.InitFileFolder()
	CASE lcFolderType=="dbc"
		RETURN this.InitDBCFolder()
	CASE lcFolderType=="pjx"
		RETURN this.InitPJXFolder()
	CASE lcFolderType=="vcx"
		RETURN this.InitVCXFolder()
ENDCASE

ENDPROC
PROCEDURE open
LOCAL lnIndex

IF NOT this.lFolderItem
	RETURN
ENDIF
IF ISNULL(this.oFolder)
	RETURN .F.
ENDIF
lnIndex=this.oHost.nItemListIndex
IF lnIndex>0
	this.oHost.oleItems.object.ListItems.Item[lnIndex].Selected=.F.
	this.oHost.nItemListIndex=-1
ENDIF
lnIndex=this.oFolder.nNodeIndex
IF lnIndex<1
	RETURN .F.
ENDIF
WITH this.oHost
	.oleFolderList.object.Nodes[lnIndex].Selected=.T.
	.RefreshItemList
	.oleItems.SetFocus
ENDWITH

ENDPROC
PROCEDURE dblclick
IF NOT DODEFAULT()
	RETURN .F.
ENDIF
this.Open

ENDPROC
PROCEDURE run
IF this.lWebView AND NOT EMPTY(this.cFileName)
	RETURN this.oHost.ShellExecute(this.cFileName)
ENDIF

ENDPROC
PROCEDURE modify
IF NOT this.lModify OR NOT this.lWebView OR EMPTY(this.cFileName) OR NOT "."$this.cFileName
	RETURN .F.
ENDIF
MODIFY FILE (this.cFileName)
IF this.oHost.lWebView
	this.oHost.RefreshItemList
	this.oHost.oleWebBrowser.Refresh2
ENDIF

ENDPROC
i�� PP��%��
}�	�U��������T��C�DATASESSIONv��.%�C�tnDataSessionIDb�N���	��e�G�(�����|�G�(������T��C�������G�(����	B����UTNDATASESSIONID
ONEWOBJECTLNLASTDATASESSIONIDTHISNDATASESSIONIDCLASSCLASSLIBRARYf%�C��
��'�T����B�-���%�����?���K�:��
����
����UTHIS
SETPOINTERORECORDLORIGINALDELETEDSCATTERRESTOREPOINTER4%�C��
���B�-���
����
����UTHIS
SETPOINTERGATHERRESTOREPOINTER
B�C����UTHIS
GETDELETED	��
����C�
�����UVNEWVALTHIS
SETDELETEDg���%�C��
�� �B�-���%��C'
��V�
%����F���R�:���
����ULDELETEDTHIS
SETPOINTERRESTOREPOINTERF���%�C��
�� �B�-���T��C'��
����	B����U	LLDELETEDTHIS
SETPOINTERRESTOREPOINTERB�Ca����UTHIS
SETDELETEDB�C-����UTHIS
SETDELETED�%�C����'�T���-��B�-���T���C�DATASESSIONv��G�(�����T���CW��T���CO��+%�C���
�C���C��N�
����T���-��G�(�����B�-���
F�����#�����U	THISORECORDLORIGINALDELETEDNLASTDATASESSIONIDNDATASESSIONIDNLASTSELECT
NLASTRECNOCALIASNRECNOLG�(�����
F�����%�C��C���CN�	��E�#������UTHISNLASTDATASESSIONIDNLASTSELECT
NLASTRECNO�������T��C�DATASESSIONv��T��CC@��T��CO��%�C���k�T���C'��	^J�����T���-��T����%�������
�����T������T��	����T��
����T������ULNDATASESSIONIDLCALIASLNRECNOORECORDTHISLORIGINALDELETEDLAUTOCOMMITCOMMITNDATASESSIONIDCALIASNRECNO^J���UTHISORECORD_J���UTHISORECORDP���%�C��
�� �B�-����T��C����
����	B����U
ONEWRECORDTHIS
SETPOINTERNEWINSTANCERESTOREPOINTER
<��UTHIS!%������
�����UTHISLAUTOCOMMITCOMMIT %�C��
���B�-���UTHISRESETnewinstance,��revert>��commit���ldeleted_accessP��ldeleted_assignv��
setdeleted���
getdeletedK��delete���recall���
setpointer��restorepointerf��reset���scatterW��gathery��	newrecord���release*��Destroy>��Init~��1q������A���3!�qAA�AA��3!qA��3�3�23q"qA�A�AAA�3q"qA���3�3�3!�qA�������qA��3����A31���������A�A3�3�3q"qAQ��3q3�A3!qA2�
�Gd���&!O*$p01?�@9��K;0O=Q�SM�eS�^	mf|	�	�h�	�	�j�	�
�s�
�
�u�
�yG�)PpPROCEDURE release
this.ReleaseObjects
RELEASE this

ENDPROC
PROCEDURE deactivatemenu
IF EMPTY(this.cMenu)
	RETURN
ENDIF
DEACTIVATE POPUP (this.cMenu)
this.cMenu=""
DOEVENTS

ENDPROC
PROCEDURE activatemenu
LPARAMETERS tcParentMenu
LOCAL lnArrayColumns,llMultiArray,lnBar,lnSkipCount,lnCount,lnMRow,lnMCol
LOCAL lnMenuCount,lcMenu,lcMenu2,lcMenuItem,luMenuSelection,llSetMark,lcClauses

lnMRow=MAX(MROW(),0)
lnMCol=MAX(MCOL(),0)
IF TYPE("this.aMenu")#"C"
	RETURN .F.
ENDIF
lnMenuCount=ALEN(this.aMenu,1)
IF lnMenuCount=0
	RETURN .F.
ENDIF
IF lnMRow<=0 AND TYPE("thisform")=="O" AND ;
		LOWER(thisform.BaseClass)=="toolbar"
	lnMRow=IIF(thisform.DockPosition=3,SROWS(),0)
ENDIF
lcMenu=IIF(EMPTY(tcParentMenu),SYS(2015),ALLTRIM(tcParentMenu))
this.cMenu=lcMenu
lnArrayColumns=ALEN(this.aMenu,2)
llMultiArray=(lnArrayColumns>0)
DEACTIVATE POPUP (lcMenu)
CLEAR TYPEAHEAD
IF EMPTY(tcParentMenu)
	DEFINE POPUP (lcMenu) ;
			FROM lnMRow,lnMCol ;
			MARGIN ;
			SHORTCUT
	ON SELECTION POPUP (lcMenu) DEACTIVATE MENU (lcMenu)
ENDIF
lnSkipCount=0
FOR lnCount = 1 TO lnMenuCount
	lcMenuItem=IIF(llMultiArray,this.aMenu[lnCount,1],this.aMenu[lnCount])
	IF TYPE("lcMenuItem")#"C" OR EMPTY(lcMenuItem) OR ;
			((lnCount=1 OR lnCount=lnMenuCount) AND ALLTRIM(lcMenuItem)=="\-")
		lnSkipCount=lnSkipCount+1
		LOOP
	ENDIF
	lnBar=lnCount-lnSkipCount
	llSetMark=.F.
	IF LEFT(lcMenuItem,1)=="^"
		lcMenuItem=SUBSTR(lcMenuItem,2)
		llSetMark=.T.
	ENDIF
	IF lnArrayColumns>=3 AND NOT EMPTY(this.aMenu[lnCount,3])
		lcClauses=ALLTRIM(this.aMenu[lnCount,3])
	ELSE
		lcClauses=""
	ENDIF
	IF EMPTY(lcClauses)
		DEFINE BAR lnBar OF (lcMenu) PROMPT (lcMenuItem)
	ELSE
		DEFINE BAR lnBar OF (lcMenu) PROMPT (lcMenuItem) &lcClauses
	ENDIF
	IF llSetMark
		SET MARK OF BAR (lnBar) OF (lcMenu) TO .T.
	ENDIF
	IF NOT llMultiArray
		LOOP
	ENDIF
	luMenuSelection=this.aMenu[lnCount,2]
	IF TYPE("luMenuSelection")=="O" AND NOT ISNULL(luMenuSelection)
		lcMenu2=SYS(2015)
		DEFINE POPUP (lcMenu2) ;
				MARGIN ;
				SHORTCUT
		ON SELECTION POPUP (lcMenu2) DEACTIVATE MENU (lcMenu2)
		ON BAR lnBar OF (lcMenu) ACTIVATE POPUP (lcMenu2)
		IF EMPTY(luMenuSelection.cOnSelection)
			luMenuSelection.cOnSelection=this.cOnSelection
		ENDIF
		luMenuSelection.ActivateMenu(lcMenu2)
		LOOP
	ENDIF
	IF EMPTY(luMenuSelection)
		luMenuSelection=ALLTRIM(this.cOnSelection)
	ENDIF
	IF NOT EMPTY(luMenuSelection)
		ON SELECTION BAR lnBar OF (lcMenu) &luMenuSelection
	ENDIF
ENDFOR
IF lnSkipCount>=lnMenuCount OR NOT EMPTY(tcParentMenu)
	RETURN
ENDIF
ACTIVATE POPUP (lcMenu)
IF NOT EMPTY(this.cMenu)
	DEACTIVATE POPUP (this.cMenu)
ENDIF
this.cMenu=""

ENDPROC
PROCEDURE clearmenu
DIMENSION this.aMenu[1]
this.aMenu=""
this.cOnSelection=""

ENDPROC
PROCEDURE newmenu

RETURN NEWOBJECT(this.Class,this.ClassLibrary)

ENDPROC
PROCEDURE addmenubar
LPARAMETERS tcPrompt,tcOnSelection,tcClauses,tnElementNumber,tlMark,tlDisabled,tlBold
LOCAL lcPrompt,lcClauses,lnElementNumber,lnMenuCount,lnArrayColumns,lnIndex,oShortCutMenu

IF EMPTY(tcPrompt)
	RETURN .F.
ENDIF
IF TYPE("tcPrompt")=="O" AND NOT ISNULL(tcPrompt)
	oShortCutMenu=tcPrompt
	tcPrompt=.NULL.
	FOR lnIndex = 1 TO ALEN(oShortCutMenu.aMenu,1)
		this.AddMenuBar(oShortCutMenu.aMenu[lnIndex,1],oShortCutMenu.aMenu[lnIndex,2], ;
				oShortCutMenu.aMenu[lnIndex,3])
	ENDFOR
	RETURN
ENDIF
lcPrompt=tcPrompt
lcClauses=IIF(EMPTY(tcClauses),"",tcClauses)
IF tlMark
	lcPrompt="^"+lcPrompt
ENDIF
IF tlDisabled
	lcClauses=lcClauses+[ SKIP FOR .T.]
ENDIF
IF tlBold
	lcClauses=lcClauses+[ STYLE "B"]
ENDIF
lnMenuCount=ALEN(this.aMenu,1)
lnArrayColumns=ALEN(this.aMenu,2)
IF lnMenuCount<=1 AND EMPTY(this.aMenu[1])
	lnMenuCount=1
	lnArrayColumns=3
ELSE
	lnMenuCount=lnMenuCount+1
ENDIF
lnIndex=lnMenuCount
DIMENSION this.aMenu[lnIndex,lnArrayColumns]
IF TYPE("tnElementNumber")=="N"
	lnElementNumber=MAX(INT(tnElementNumber),1)
	IF lnElementNumber<lnMenuCount
		IF AINS(this.aMenu,lnElementNumber)#1
			RETURN .F.
		ENDIF
		lnIndex=lnElementNumber
	ENDIF
ENDIF
IF lnArrayColumns<=1
	this.aMenu[lnIndex]=lcPrompt
	RETURN
ENDIF
this.aMenu[lnIndex,1]=lcPrompt
this.aMenu[lnIndex,2]=tcOnSelection
IF lnArrayColumns>=3
	this.aMenu[lnIndex,3]=lcClauses
ENDIF

ENDPROC
PROCEDURE addmenuseparator
LPARAMETERS tnElementNumber

this.AddMenuBar("\-",,,tnElementNumber)

ENDPROC
PROCEDURE showmenu
RETURN this.ActivateMenu()

ENDPROC
PROCEDURE setmenu
LPARAMETERS toObject

this.ClearMenu
RETURN .F.

ENDPROC
PROCEDURE Init
this.ClearMenu

ENDPROC
PROCEDURE releaseobjects
this.oHost=.NULL.

ENDPROC
PROCEDURE Destroy
this.ReleaseObjects

ENDPROC
#Q�� 8#8#��%�!_��UB���%���
���B�-���T��CCt����	B����ULLNODEFAULTTHISENABLED
SCRIPTHOOKB���%���
���B�-���T��CCt����	B����ULLNODEFAULTTHISENABLED
SCRIPTHOOKB���%���
���B�-���T��CCt����	B����ULLNODEFAULTTHISENABLED
SCRIPTHOOKo�������%���
��*�B�-���%��� ��L�
B�C�����T��CCt����	B����UNKEYCODE
NSHIFTALTCTRLLLNODEFAULTTHISENABLEDDBLCLICK
SCRIPTHOOKT��������T����%���
��<�B�-���
H�M�#�O�C�oSource.parent.lBrowserb�L�!CC����=@�classbrowser	���:%����
�#C�oSource.parent.oItem.cIDb�C	����T������	����T��������2�#�T�������T��CCt��
��T����	B����UOSOURCENXCOORDNYCOORDLLNODEFAULTTHISENABLEDPARENTNAMELBROWSEROITEM
SCRIPTHOOK���������T����%���
��<�B�-���'%�C�oSourceb�O�	C�������T����T���C������T������T�������T��CCt����T����	B����U	OSOURCENXCOORDNYCOORDLLNODEFAULTTHISOTARGETENABLEDCTARGET
SCRIPTHOOKi�����5��
T�����T���a����C��������T���-��T���UTCCODETLFILETVIGNOREERRORSOTHISTHISLRUNCODEMODEOHOSTRUNCODE���������������	�
��
������5�
�(%����C����C�C����|�B�-���
T�����
T�
����T�
�C��������	���(��
����T��C�	��� %�C���C��=�*����.��(%�C��=�<�C��R�>	��N�"T��CC��C�>�\����.��T��C�=���%�����z�.��T��CC���=���T��C�[���%������T��C�(���%�������!T��CC��(�[��)�]�����*T��C�����CC���=�6��y%�C���g�.�
�
�,�
	�LC����h
�
C����h�
C����h�C����h�Property
	����.��T��C�this.�b��T��CC���\���
H�����(�C��=�(�C��R�)	��4�T��CC��C�>�\�����C��S�
T��������N��t�T��C�g�����L����T��C���#T��C�lvValueb�L��	��2���
T������this.&lcProperty=lvValue
.���T�
��UTCPROPERTIESLCPROPERTIESLNATPOSLNATPOS2
LCPROPERTYLCPROPERTY2LCVALUELVVALUE	LCMEMLINE	LNMEMLINELNMEMLINECOUNT	LCVARTYPE
LAMEMLINESOTHISTHISLRELEASE	RUNSCRIPT������������%�����6�B��T��C�.����%�����b�B��T��C���\��T���c���#%�C����h�Property
����B��T��CC�this.���%�C������B��T���a��T��	����T��C����T����
���T��
������
H�M���3����C��=�<	�C��R�>	����"��CCCC��\C�>�=���
��2�����C������T��
�����T��	����T���-��B�-��U	TCPROGRAMLCMETHOD
LCPROPERTYLCSCRIPTLNATPOS
LNMEMLINESLLLASTIGNOREERRORSTHISLSCRIPTMODE
CSCRIPTMETHODOHOST
LIGNOREERRORSLIGNORESCRIPTERRORS	RUNSCRIPTRUNCODE7���������
T�����
H�4���C���J�B�-���C����O����%�C��cScript��h����T��������C����C����%�C������T���������T��C�������2��T�������%�C�����B�-���B�C�����	��U
TVITEMTVIGNOREERRORSLCIDOITEMLCSCRIPTTHISCSCRIPTOHOST	GETSCRIPTRUNCODE0���������%�C����2�	B�����T��C����(%�C��=�(�C��R�)	����T��CC��C�>�\��%�C������	B������*%���
�	�:��
�\\�����B�C�@���.%�C���\�:�C��=�www.��+�T��CC��@��	B�����T��CC����@��9T��CC�����tmp�C�����\���	6��T��CC���@��/%��*�
�
�?�
	�CC���]�	�� �%�C��
���O����T��CC���
��@���%�CC���]����T��CC��@����	B����U
TCFILENAME
LCNEWFILENAME
LCFILENAMELCSOURCECATALOGFILEEXTLCPATHTHIS	LFULLPATHCSOURCECATALOGCLASSLIBRARYCSOURCECATALOGPATHOHOSTCDEFAULTCATALOGPATHO����T���a��'��browser����������B�����UTLUPDATESOURCE	TLAUTOADDTHISVRESULTBRWWRITEPROPERTIESBROWSER6T���a����browser����B�����UTHISVRESULTBRWREADPROPERTIESBROWSERB�C������UTHISOHOST
PROPERTIEST���a��
����UTHISLRELEASERELEASEOBJECTSL����������!%�������	�	��C�B��HT��� Are you sure you want to remove C��
@� "���"��
H������������1T����  from the Component Gallery view��������
��h�(T���� from the catalog table��%���
��d�4T����# including all subfolders and items���2���(T���� from the catalog table���+%���C��?�$����	����B�-���T���a��%��������B��T������T������%�����z�T������%�C��
��d���C����������%�C������Q�����%�C������Q�����QT���#Do you want to delete catalog table� "C�@�" �permanently��>%���C��
	�C�0	�C��?�$����	��P�
 ���� �C��fpt�����
�����
%����r�B��B��#%�C���C���C�N�	����#�������������#%�C���C���C�N�	���#�������������
%�����B��%���
��;�
������
����U	TLCONFIRMTLNOREFRESHLCALIAS
LCSOURCEALIAS	LCMESSAGE	LCCATALOGTHISLCATALOGOHOST	NVIEWTYPECTYPECTEXTLFOLDERLFOLDERITEMLWEBVIEWMSGBOXLDELETEDNSOURCERECNOCALIASCSOURCEALIASCCATALOGUPDATEFORMCOUNTREFRESHBROWSERNRECNOOPARENTSETFOCUSREFRESHM����%���
��4�B�C��������B�Ca�����U	TCFILEEXTTLAUTOEXTDIALOGTHISLGETFILEADDRESSOHOSTGETFILEGETFILEADDRESS&����B�C�������UTLNOSHELLEXECUTE	TCFILEEXTTHISOHOSTGETFILEADDRESSB�C�������UTHISCLASSCLASSLIBRARY�T����T����T����T����T����T����T����T����T��	��T��
��T����T����U
THISOACTIONOCONTROLOFOLDEROHOSTOLINKONODEOOBJECTOPARENTORECORD
OSHORTCUTMENUOSOURCEOTARGETB���%���
���B�-���T��CCt����	B����ULLNODEFAULTTHISENABLED
SCRIPTHOOKB���%���
���B�-���T��CCt����	B����ULLNODEFAULTTHISENABLED
SCRIPTHOOKT���a��
����UTHISLRELEASERELEASEOBJECTS������+%�C�
this.oHostb�O�
C���
	��V�B�C���������'%�C�	_oBrowserb�O�C��
	����B�C��������UNERRORCMETHODNLINETHISOHOSTERROR	_OBROWSERclick,��dblclick���
rightclick��keypressv��dragdrop4��	dragdrop2���runcode%��
setproperties���
scripthook�
��	runscriptP
��fullpath���writeproperties���readpropertiesX��
properties���release���remove0��getfile���getfileaddress?��newinstance���releaseobjects���	refreshed���selectedj��Destroy���Error��1qqA1�3qqA1�3qqA1�3�qqA�A1�3�q�qA���a�1A�A1��3�q�qAq��A1��3�q�����3q�1�q�qA��Qq!AA�!AA1AA�11AA��AA�����!�!�!�1��A�AA�3q�AA1AAa!1AA��AA��1a�1!�A1�q3�����qQ�AQ���A�A�qAa3����A�����AA��A��AQ�A���AQAA�3��q�3���3A3��3�1AA����AA��A�qA�AAA�A��A��A��1A��AAAA11�A11�A�AA�A�3��A!3��3Q3������������3qqA1�3qqA1�3��3���Aq�A2��$E���!��-5�ZEFx-YNQ/d�P��������L��r�1�������-� .� r!b4�!�!k7!"Q"q9v"s#uF�#
$�M,$�$�T�$�$�W%&�)8#	2PROCEDURE createnode
LPARAMETERS tvAlias,tnRecNo
LOCAL oNode

oNode=this.oHost.CreateNode(tvAlias,tnRecNo,,.T.)
IF VARTYPE(oNode)#"O"
	RETURN .F.
ENDIF
oNode.Release

ENDPROC
PROCEDURE pastelink
RETURN this.oHost.PasteLink(this.oHost.oFolder)

ENDPROC
PROCEDURE paste
RETURN this.oHost.Paste(this.oHost.oFolder)

ENDPROC
PROCEDURE setmenu
LPARAMETERS toObject
LOCAL oViewMenu,oNewMenu,oFolder,lnImageView,llNewNodes,lnLastSelect
LOCAL lcText,llViewMode,llNewMenu,llAddSeparator

oFolder=toObject.oHost.oFolderSource
lnImageView=toObject.oHost.nImageView
llViewMode=(toObject.oHost.nViewType>1)
llNewMenu=(toObject.lNewMenu AND NOT llViewMode AND NOT toObject.lDynamic)
this.ClearMenu
oViewMenu=this.NewMenu()
oViewMenu.AddMenuBar(B_LARGEICONS1_LOC,"oTHIS.oHost.SetImageView(0)",,,lnImageView=0)
oViewMenu.AddMenuBar(B_SMALLICONS1_LOC,"oTHIS.oHost.SetImageView(1)",,,lnImageView=1)
oViewMenu.AddMenuBar(B_LIST1_LOC,"oTHIS.oHost.SetImageView(2)",,,lnImageView=2)
oViewMenu.AddMenuBar(B_DETAILS1_LOC,"oTHIS.oHost.SetImageView(3)",,,lnImageView=3)
this.AddMenuBar(B_VIEW1_LOC,oViewMenu)
this.AddMenuSeparator
llAddSeparator=toObject.AddPasteMenus(toObject,this)
IF llAddSeparator
	this.AddMenuSeparator
ENDIF
IF llNewMenu AND USED("itemtypes")
	oNewMenu=this.NewMenu()
	llNewNodes=.F.
	lnLastSelect=SELECT()
	SELECT itemtypes
	SET ORDER TO Text
	LOCATE
	SCAN ALL FOR Visible
		lcText=ALLTRIM(Text)
		IF LEFT(lcText,1)=="*"
			lcText=ALLTRIM(SUBSTR(lcText,2))
		ENDIF
		IF LEFT(lcText,1)=="~"
			lcText=ALLTRIM(SUBSTR(lcText,2))
		ENDIF
		IF NOT llNewNodes
			llNewNodes=.T.
			oNewMenu.AddMenuSeparator
		ENDIF
		IF lcText=="\-"
			oNewMenu.AddMenuSeparator
		ELSE
			oNewMenu.AddMenuBar(lcText,[oTHIS.CreateNode(oTHIS.oHost.oFolderSource,]+ ;
					ALLTRIM(STR(RECNO()))+[)])
		ENDIF
	ENDSCAN
	SELECT (lnLastSelect)
	this.AddMenuBar(B_NEWITEM1_LOC,oNewMenu)
	this.AddMenuSeparator
ENDIF
IF oFolder.lPropertiesMenu
	this.AddMenuBar(B_PROPERTIES1_LOC,"oTHIS.oHost.oFolder.Properties")
ENDIF

ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine

IF TYPE("this.oHost")=="O" AND NOT ISNULL(this.oHost)
	RETURN this.oHost.Error(nError,cMethod,nLine)
ENDIF
IF TYPE("_oBrowser")=="O" AND NOT ISNULL(_oBrowser)
	RETURN _oBrowser.Error(nError,cMethod,nLine)
ENDIF


ENDPROC
5#�� 
5
5)�%v.�3'�/�U�������������$%�C��	
�CC����
]���Q�B�-���T����
��T�������%�C��
�����T��
��	cfldr.ico���T��CW��"T��CC+�COCN���CO6��T��CC��]@��T��CC��]@��F��Q��������'%�C��
�C�	Reserved1b�M��n�Q�
F����%�����c�	#�����B�-���+o����C���=���C'
����������Q����~�C�@�class����T��CC��@��T��C����%�C��
���T��CC���@���
F�������>���ITEM�������������� (��)����������������
_ClassItem����vfpglry.vcx���C��
F�����Q����
F����%�������	#�����U
LCFILENAMELCALIASLCALIAS2LNLASTSELECTLNRECNOLCCLASSLCDEFAULTCATALOGPATH	LCPICTURETHIS
INITFOLDER	CFILENAMEOHOSTCDEFAULTCATALOGPATHCFOLDERPICTUREOBJNAME	RESERVED1	RESERVED5CALIASTYPEPARENTCIDTEXTDESCPICTURECLASSFILENAME	CLASSNAMECLASSLIBUPDATED'�������������	�
���
��
����%�C��
��`�B�-���T��C��@��T�������T��C����\��%�C�������T����	ffldr.ico���T�	�C����T��C�.�	��%������
T�
��	��T���*���u�T�
�CC�	��=���T��CC�	��\���%�C����q�T���*����%�C�
�����T�
��*���T��CW��"T��CC+�COCN���CO6��
F����� T��C��
��*.*�D���
��C�
��������(������T��CCC���
�@��%�C��=�.��M�.��%��DC���
����%���
����.���o>���FOLDER���CC��]@��������C������������\�
�.����C��.��T�	�C����T��C����)%�C�
C�	���}
�
C�C�	��}
��M�.��
H�^���)�C�� �dbc �pjx �vcx ������]>���FOLDER���CC��]@��������C��������������C����C�� �fpt �cdx �idx �dct �dcx �frt �fxp �qpx �mpx �lbt �mnt �pjt �tbk �spx �vct �sct ���q�.�2����v>���ITEM�����������������������	_FileItem�� ��vfpglry.vcx���C�����
F����%����� �	#�����U!
LCFILENAME	LCFILEEXTLNLASTSELECTLNRECNOLCFILELCPATHLNCOUNTLCDEFAULTCATALOGPATHLNFILECOUNTLCMATCHFILELCPREFIXLNSUFFIXLNATPOSLADIRTHIS
INITFOLDER	CFILENAMEOHOSTCDEFAULTCATALOGPATHCFOLDERPICTURELCSUFFIXCALIASLSEARCHSUBDIRECTORIESTYPEIDPARENTCIDTEXTDESCFILENAMEUPDATED	CLASSNAMECLASSLIB<#�������������	�
���
��������������������������� �$%�C�!�"
�CC���!�#]�����B�-���T���!�#��T�
��!�$�%��T��C����\��%�C�!�&���(�T�!�&��	pfldr.ico���T��CW��"T��CC+�COCN���CO6��T�
��	Project: ���#T��C�!�(�FOLDER�!�$�'��
�������T�)��!�*��T�+��Data��T�&��data.ico��
��C-a�,��T���*����
���-�#T��C�!�(�FOLDER�!�$�'��
�������T�)����T�+��	Databases��T�&��database.ico��
��C-a�,��T���*����
���-�#T��C�!�(�FOLDER�!�$�'��
�����'�T�)����T�+��Free Tables��T�&��	table.ico��
��C-a�,��T���*����
���-�#T��C�!�(�FOLDER�!�$�'��
�������T�)����T�+��Queries��T�&��queries.ico��
��C-a�,��T���*����
���-�#T��C�!�(�FOLDER�!�$�'��
�����S�T�)��!�*��T�+��	Documents��T�&��docs.ico��
��C-a�,��T���*����
���-�#T��C�!�(�FOLDER�!�$�'��
�������T�)����T�+��Forms��T�&��	forms.ico��
��C-a�,��T���*����
���-�#T��C�!�(�FOLDER�!�$�'��
�����y�T�)����T�+��Reports��T�&��reports.ico��
��C-a�,��T���*����
���-�#T��C�!�(�FOLDER�!�$�'��
������T�)����T�+��Labels��T�&��
labels.ico��
��C-a�,��T�.��*����
���-�#T��C�!�(�FOLDER�!�$�'��
�������T�)��!�*��T�+��Class Libraries��T�&��classlib.ico��
��C-a�,��T���*����
���-�#T��C�!�(�FOLDER�!�$�'��
�����?�T�)��!�*��T�+��Code��T�&��code.ico��
��C-a�,��T���*����
���-�#T��C�!�(�FOLDER�!�$�'��
�������T�)����T�+��Programs��T�&��programs.ico��
��C-a�,��T���*����
���-�#T��C�!�(�FOLDER�!�$�'��
�����r�T�)����T�+��
API Libraries��T�&��apilibra.ico��
��C-a�,��T���*����
���-�#T��C�!�(�FOLDER�!�$�'��
�����		�T�)����T�+��Applications��T�&��apps.ico��
��C-a�,��T���*����
���-�#T��C�!�(�FOLDER�!�$�'��
������	�T�)��!�*��T�+��Other��T�&��	other.ico��
��C-a�,��T���*����
���-�#T��C�!�(�FOLDER�!�$�'��
�����.
�T�)����T�+��Menus��T�&��	menus.ico��
��C-a�,��T���*����
���-�#T��C�!�(�FOLDER�!�$�'��
������
�T�)����T�+��Text��T�&��text.ico��
��C-a�,��T�/��*����
���-�#T��C�!�(�FOLDER�!�$�'��
�����W�T�)����T�+��Other Files��T�&��othrfile.ico��
��C-a�,��T� ��*����
���-�T���T��CC��]@��T��CC��]@��F��Q��������%�C��
����Q�
F����%�������	#�����B�-���.o����CC�0���=���C'
����������Q����~�C�0�
���T��CC�0C� �����!%��:�
��\\�
	����T��CC���@���
T���1��
T�����
T�����
T�	����T���!�*��T���ITEM��
H���x����H���
�%�C�!�2�
��3
�T�!�2��!�2C�
 ���lT�!�2��!�2�
C�
 �Debug info C�3��on��off6C�
 �Encrypt C�4��on��off6��.����B���
�
T���.��T���_ReportItem��T���vfpglry.vcx�����d��:�T�	�CC��]@��
T�����T���FOLDER�����D����
T�����T���	_DataItem��T���vfpglry.vcx�����K����
T�����T���	_FormItem��T���vfpglry.vcx�����L��!�
T�����T���	_FileItem��T���vfpglry.vcx�����M��n�
T�����T���	_MenuItem��T���vfpglry.vcx�����P����
T�����T���	_FileItem��T���vfpglry.vcx�����Q���
T�����T���	_FileItem��T���vfpglry.vcx�����R��W�
T�����T���_ReportItem��T���vfpglry.vcx�����T����
T���/��T���	_FileItem��T���vfpglry.vcx�����V����T�	�CC��]@��
T�����T���FOLDER�����Z��5�
T�����T���	_FileItem��T���vfpglry.vcx��2�x�
T��� ��T���	_FileItem��T���vfpglry.vcx���
F��!�(���j>�1����5��	��6����7�C����8��C�
 �
��9����:����;����<�C��
F�����Q����
F����%�����5�	#�����U=
LCFILENAMEONODELCALIASLCALIAS2LNLASTSELECTLNRECNOLCNAMELCPARENT
LCITEMTYPELCIDLCDESCLCCLASSNAME
LCCLASSLIBLCDEFAULTCATALOGPATHLCTYPELCDATAID
LCDATABASESIDLCFREETABLESIDLCQUERIESIDLCPATH
LCDOCUMENTSID	LCFORMSIDLCREPORTSID
LCLABLESIDLCCLASSLIBRARIESIDLCCODEIDLCPROGRAMSIDLCAPILIBRARIESIDLCAPPLICATIONSID	LCOTHERID	LCMENUSID
LCTEXTFILESIDLCOTHERFILESIDTHIS
INITFOLDER	CFILENAMEOHOSTCDEFAULTCATALOGPATHCFOLDERPICTURE
CREATENODECALIASCPARENTCIDCTEXTWRITEPROPERTIESRELEASE
LCLABELSIDLCTEXTIDNAMETYPECDESCDEBUGENCRYPTIDPARENTTEXTDESCFILENAME	CLASSNAMECLASSLIBUPDATED��������������	�$%�C�
�
�CC���
�]���Y�B�-���T���
���T��C����\��T���
�
���%�C�
������T�
���	dfldr.ico���T�	�CW��"T��CC+�COCN���CO6��T��CC��]@��T��CC��]@��F��Q��������%�C��
��t�Q�
F��	��%�����i�	#�����B�-���+o����C���=���C'
����������Q����~�CC��@�table����T��CCC��\�@��T��CC� ���%������T��CC���=����T��C�����T��CC��@��
F��
����q>���ITEM����
����C��������������	_DataItem����vfpglry.vcx���C��
F�����"~�C'
�CC��@�view	����T��CC��@��
F��
�����>���ITEM����
�����������������	_DataItem����vfpglry.vcx����
cViewName=����C��
F�����Q����
F��	��%�������	#�����U
LCFILENAMELCALIASLCALIAS2LNRECNOLCTABLELCTABLENAMELCTABLEPATHLCDEFAULTCATALOGPATHLNATPOSLNLASTSELECTTHIS
INITFOLDER	CFILENAMEOHOSTCDEFAULTCATALOGPATHCFOLDERPICTURE
OBJECTNAME
OBJECTTYPEPROPERTYCALIASTYPEPARENTCIDTEXTDESCFILENAME	CLASSNAMECLASSLIBUPDATED
PROPERTIESo����T��CC���@��%�C����7�	B�����T��C����M%�C�:���C��=�www.�C��R�/�C��R�\����B��web���6%�CC��ԡ�	�*��	�?��	�%�����
B��file���
H���\����dbc���B��dbc�����pjx��<�B��pjx�����vcx��\�B��vcx���B��web��U
LCFILENAME	LCFILEEXTTHIS	CFILENAME�,T����C�catalog1�VIEW�����%�C�����H�B�-������������T�����T��-��T����������
����	�U
THISOHOSTOVIEW
CREATENODEOPARENTLLOOKINENABLEDCLOOKINOCATALOGCTEXTFIND< %�����	C�����'�B�-���T���a��UTHIS
NITEMCOUNT	CFILENAMELDYNAMICO����T���a��'��browser����������B�����UTLNOREFRESHTLIGNOREERRORSTHISVRESULTBRWCLEANUPCATALOGBROWSERH���T���a��$��browser����-�����B�����U
TCFILENAMETHISVRESULTBRWBACKUPCATALOGBROWSERH���T���a��$��browser����a�����B�����U
TCFILENAMETHISVRESULTBRWBACKUPCATALOGBROWSER?���%�C�
���B�-���T��C����T������%�C����T�B��
H�e�8������y�B����web����T���a��B��������B����file����
B�C�������dbc����
B�C�������pjx���
B�C�������vcx��8�
B�C��	���U
LCFOLDERTYPETHIS
GETFOLDERTYPECFOLDERTYPELWEBVIEWLFOLDERITEMINITFILEFOLDER
INITDBCFOLDER
INITPJXFOLDER
INITVCXFOLDER���%���
���B��%�C����9�B�-���T�������%�������#T������	����
�-��T����������T�������%���
����B�-���������	�T����
����
�a������������ULNINDEXTHISLFOLDERITEMOFOLDEROHOSTNITEMLISTINDEXOLEITEMSOBJECT	LISTITEMSITEMSELECTED
NNODEINDEX
OLEFOLDERLISTNODESREFRESHITEMLISTSETFOCUS&%�C�
���B�-���
����UTHISOPEN:%����
C���
	��3�B�C��������UTHISLWEBVIEW	CFILENAMEOHOSTSHELLEXECUTE�8%���
���
�	C����
�.��
��?�B�-���/�����%��������
������������UTHISLMODIFYLWEBVIEW	CFILENAMEOHOSTREFRESHITEMLIST
OLEWEBBROWSERREFRESH2
initvcxfolder,��initfilefolderI��
initpjxfolder�
��
initdbcfolder���
getfoldertype�$��findi&��
initfolderj'��cleanup�'��backupl(��restore�(��initpropertiesp)��open7+��dblclick�,��run'-��modify�-��1��BqA1!�A�!!!�1qA��AqA����AA�Q%	�A���A3���"qA!1Q!�A1�������AA��A�!��q�qAA�AAQ�AA�AA��Q�BA�QeAA��A31�qq11BqA1Q!�A�!�1�!a��A�1��q���A�1���q��A�1��Q���A�1�qa��A�1��1q��A�1��Q���A�1��A���A�1�����A�1�!a��A�1��a���A�1������A�1���a��A�1�1q��A�1��1q��A�1��!a��A�1������A��!!�1A��AqA��!�AA�����!1�A�A!���!!�1!�a�!�a�!�a�!�a�!�a�!�a�!���!�a�!!�1!�a���a�A�Q��A���A3��BqAQ1!�A�!!!�1A��AqA���aA�A1�Q�A!�Qe�A���A3�B��A��Aa�A�A�A�A�A�3�QqA1��qA�3qA�3��q�3q�A�3q�A�3q�qA�AA�AA�AAQ�A�A�A�A3qAA!qA11AA1qA���A3�qA�3�aA3�qA�1�A2�,��6n��)�z�)`1���1�3���3�4���4 5
�>5�5��5v6��67!�77V9)�q9*;GI;|;`�;�;g<
=m)
5&PROCEDURE click
LOCAL llNoDefault

IF NOT this.Enabled
	RETURN .F.
ENDIF
llNoDefault=this.ScriptHook(PROGRAM())
RETURN llNoDefault

ENDPROC
PROCEDURE dblclick
LOCAL llNoDefault

IF NOT this.Enabled
	RETURN .F.
ENDIF
llNoDefault=this.ScriptHook(PROGRAM())
RETURN llNoDefault

ENDPROC
PROCEDURE rightclick
LOCAL llNoDefault

IF NOT this.Enabled
	RETURN .F.
ENDIF
llNoDefault=this.ScriptHook(PROGRAM())
RETURN llNoDefault

ENDPROC
PROCEDURE keypress
LPARAMETERS nKeyCode, nShiftAltCtrl
LOCAL llNoDefault

IF NOT this.Enabled
	RETURN .F.
ENDIF
IF nKeyCode=32
	RETURN this.DblClick()
ENDIF
llNoDefault=this.ScriptHook(PROGRAM())
RETURN llNoDefault

ENDPROC
PROCEDURE dragdrop
LPARAMETERS oSource, nXCoord, nYCoord
LOCAL llNoDefault

this.oSource=.NULL.
IF NOT this.Enabled
	RETURN .F.
ENDIF
DO CASE
	CASE TYPE("oSource.parent.lBrowser")=="L" AND ;
			LOWER(LEFT(oSource.parent.Name,12))=="classbrowser"
		IF NOT oSource.parent.lBrowser AND TYPE("oSource.parent.oItem.cID")=="C"
			this.oSource=oSource.parent.oItem
		ELSE
			this.oSource=oSource.parent
		ENDIF
	OTHERWISE
		this.oSource=oSource
ENDCASE
llNoDefault=this.ScriptHook(PROGRAM())
this.oSource=.NULL.
RETURN llNoDefault

ENDPROC
PROCEDURE dragdrop2
LPARAMETERS oSource, nXCoord, nYCoord
LOCAL llNoDefault

this.oTarget=.NULL.
IF NOT this.Enabled
	RETURN .F.
ENDIF
IF TYPE("oSource")#"O" OR ISNULL(this.oSource)
	this.oTarget=.NULL.
	this.cTarget=MWINDOW()
ELSE
	this.oTarget=oSource
	this.cTarget=""
ENDIF
llNoDefault=this.ScriptHook(PROGRAM())
this.oTarget=.NULL.
RETURN llNoDefault

ENDPROC
PROCEDURE runcode
LPARAMETERS tcCode,tlFile,tvIgnoreErrors
PRIVATE oTHIS

oTHIS=this
this.lRunCodeMode=.T.
this.oHost.RunCode(tcCode,tlFile,tvIgnoreErrors)
this.lRunCodeMode=.F.
oTHIS=.NULL.

ENDPROC
PROCEDURE setproperties
LPARAMETERS tcProperties
LOCAL lcProperties,lnAtPos,lnAtPos2,lcProperty,lcProperty2,lcValue,lvValue
LOCAL lcMemLine,lnMemLine,lnMemLineCount,lcVarType
LOCAL laMemLines[1]
PRIVATE oTHIS

IF this.lRelease OR VARTYPE(tcProperties)#"C" OR EMPTY(tcProperties)
	RETURN .F.
ENDIF
lcProperties=tcProperties
oTHIS=this
lnMemLineCount=ALINES(laMemLines,lcProperties)
FOR lnMemLine = 1 TO lnMemLineCount
	lcMemLine=laMemLines[lnMemLine]
	IF EMPTY(lcMemLine) OR LEFT(lcMemLine,1)=="*"
		LOOP
	ENDIF
	IF LEFT(lcMemLine,1)=="<" AND RIGHT(lcMemLine,1)==">"
		lvValue=this.RunScript(SUBSTR(lcMemLine,2,LEN(lcMemLine)-2))
		LOOP
	ENDIF
	lnAtPos=AT("=",lcMemLine)
	IF lnAtPos=0
		LOOP
	ENDIF
	lcProperty=ALLTRIM(LEFT(lcMemLine,lnAtPos-1))
	lnAtPos2=AT("[",lcProperty)
	IF lnAtPos2=0
		lnAtPos2=AT("(",lcProperty)
		IF lnAtPos2>0
			lcProperty=STRTRAN(STRTRAN(lcProperty,"(","["),")","]")
		ENDIF
	ENDIF
	lcProperty2=IIF(lnAtPos2=0,lcProperty,ALLTRIM(LEFT(lcProperty,lnAtPos2-1)))
	IF EMPTY(lcProperty2) OR (NOT "."$lcProperty2 AND NOT ","$lcProperty2 AND ;
			(NOT PEMSTATUS(this,lcProperty2,5) OR ;
			PEMSTATUS(this,lcProperty2,1) OR ;
			PEMSTATUS(this,lcProperty2,2) OR ;
			NOT PEMSTATUS(this,lcProperty2,3)=="Property"))
		LOOP
	ENDIF
	lcVarType=TYPE("this."+lcProperty)
	lcValue=ALLTRIM(SUBSTR(lcMemLine,lnAtPos+1))
	DO CASE
		CASE LEFT(lcValue,1)=="(" AND RIGHT(lcValue,1)==")"
			lvValue=EVALUATE(SUBSTR(lcValue,2,LEN(lcValue)-2))
		CASE lcVarType=="C"
			lvValue=lcValue
		CASE lcVarType=="N"
			lvValue=VAL(lcValue)
		CASE lcVarType=="L"
			lvValue=EVALUATE(lcValue)
			lvValue=(TYPE("lvValue")=="L" AND lvValue)
		OTHERWISE
			lvValue=lcValue
	ENDCASE
	this.&lcProperty=lvValue
	LOOP
ENDFOR
oTHIS=.NULL.

ENDPROC
PROCEDURE scripthook
LPARAMETERS tcProgram
LOCAL lcMethod,lcProperty,lcScript,lnAtPos,lnMemLines,llLastIgnoreErrors

IF this.lScriptMode
	RETURN
ENDIF
lnAtPos=RAT(".",tcProgram)
IF lnAtPos=0
	RETURN
ENDIF
lcMethod=SUBSTR(tcProgram,lnAtPos+1)
lcProperty="c"+lcMethod
IF NOT PEMSTATUS(this,lcProperty,3)=="Property"
	RETURN
ENDIF
lcScript=ALLTRIM(EVALUATE("this."+lcProperty))
IF EMPTY(lcScript)
	RETURN	
ENDIF
this.lScriptMode=.T.
this.cScriptMethod=lcMethod
lnMemLines=MEMLINES(lcScript)
llLastIgnoreErrors=this.oHost.lIgnoreErrors
this.oHost.lIgnoreErrors=this.lIgnoreScriptErrors
DO CASE
	CASE lnMemLines=1 AND LEFT(lcScript,1)=="<" AND RIGHT(lcScript,1)==">"
		this.RunScript(ALLTRIM(LEFT(SUBSTR(lcScript,2),LEN(lcScript)-2)))
	OTHERWISE
		this.RunCode(lcScript)
ENDCASE
this.oHost.lIgnoreErrors=llLastIgnoreErrors
this.cScriptMethod=""
this.lScriptMode=.F.
RETURN .F.

ENDPROC
PROCEDURE runscript
LPARAMETERS tvItem,tvIgnoreErrors
LOCAL lcID,oItem,lcScript

lcScript=""
DO CASE
	CASE ISNULL(tvItem)
		RETURN .F.
	CASE VARTYPE(tvItem)=="O"
		IF PEMSTATUS(tvItem,"cScript",5)
			lcScript=this.cScript
		ENDIF
	CASE VARTYPE(tvItem)=="C"
		IF EMPTY(tvItem)
			lcScript=this.cScript
		ELSE
			lcScript=this.oHost.GetScript(tvItem)
		ENDIF
	OTHERWISE
		lcScript=this.cScript
ENDCASE
IF EMPTY(lcScript)
	RETURN .F.
ENDIF
RETURN this.RunCode(lcScript,,tvIgnoreErrors)

ENDPROC
PROCEDURE fullpath
LPARAMETERS tcFileName,lcNewFileName
LOCAL lcFileName,lcSourceCatalogFileExt,lcPath

IF EMPTY(tcFileName)
	RETURN ""
ENDIF
lcFileName=ALLTRIM(tcFileName)
IF LEFT(lcFileName,1)=="(" AND RIGHT(lcFileName,1)==")"
	lcFileName=EVALUATE(SUBSTR(lcFileName,2,LEN(lcFileName)-2))
	IF EMPTY(lcFileName)
		RETURN ""
	ENDIF
ENDIF
IF NOT this.lFullPath OR ":"$lcFileName OR "\\"$lcFileName
	RETURN LOWER(lcFileName)
ENDIF
IF SUBSTR(lcFileName,5,1)==":" OR LEFT(lcFileName,4)=="www."
	lcFileName=LOWER(ALLTRIM(lcFileName))
	RETURN lcFileName
ENDIF
lcSourceCatalogFileExt=LOWER(JUSTEXT(this.cSourceCatalog))
lcPath=IIF(EMPTY(lcSourceCatalogFileExt) OR lcSourceCatalogFileExt=="tmp", ;
		JUSTPATH(this.ClassLibrary)+"\",this.cSourceCatalogPath)
lcNewFileName=LOWER(FULLPATH(lcFileName,lcPath))
IF NOT "*"$lcNewFileName AND NOT "?"$lcNewFileName AND EMPTY(SYS(2000,lcNewFileName))
	IF VARTYPE(this.oHost)=="O"
		lcNewFileName=LOWER(FULLPATH(lcFileName,this.oHost.cDefaultCatalogPath))
	ENDIF
	IF EMPTY(SYS(2000,lcNewFileName))
		lcNewFileName=LOWER(FULLPATH(lcFileName))
	ENDIF
ENDIF
RETURN lcNewFileName

ENDPROC
PROCEDURE writeproperties
LPARAMETERS tlUpdateSource,tlAutoAdd

this.vResult=.T.
DO brwWriteProperties IN browser WITH (this),(tlUpdateSource),(tlAutoAdd)
RETURN this.vResult

ENDPROC
PROCEDURE readproperties
this.vResult=.T.
DO brwReadProperties IN browser WITH (this)
RETURN this.vResult

ENDPROC
PROCEDURE properties
RETURN this.oHost.Properties(this)

ENDPROC
PROCEDURE release
this.lRelease=.T.
this.ReleaseObjects

ENDPROC
PROCEDURE remove
LPARAMETERS tlConfirm,tlNoRefresh
LOCAL lcAlias,lcSourceAlias,lcMessage,lcCatalog

IF this.lCatalog AND this.oHost.nViewType>1
	RETURN
ENDIF
lcMessage=M_WANT_TO_REMOVE_LOC+LOWER(this.cType)+[ "]+this.cText+["]
DO CASE
	CASE this.lCatalog
		lcMessage=lcMessage+M_FROM_CG_VIEW_LOC
	CASE this.lFolder OR this.lFolderItem
		lcMessage=lcMessage+M_FROM_CATALOG_TABLE_LOC
		IF NOT this.lWebView
			lcMessage=lcMessage+M_INC_SUBFLD_ITEMS_LOC
		ENDIF
	OTHERWISE
		lcMessage=lcMessage+M_FROM_CATALOG_TABLE_LOC
ENDCASE
IF tlConfirm AND this.oHost.MsgBox(lcMessage+[?],292)#6
	RETURN .F.
ENDIF
this.lDeleted=.T.
IF this.nSourceRecNo<=0
	RETURN
ENDIF
lcAlias=this.cAlias
lcSourceAlias=this.cSourceAlias
IF this.lCatalog
	lcCatalog=this.cCatalog
	IF NOT EMPTY(lcCatalog)
		this.oHost.UpdateFormCount(-1,lcCatalog)
	ENDIF
	IF USED(lcAlias)
		USE IN (lcAlias)
	ENDIF
	IF USED(lcSourceAlias)
		USE IN (lcSourceAlias)
	ENDIF
	lcMessage=M_WANT_TO_DELETE_LOC+[ "]+LOWER(lcCatalog)+[" ]+M_PERMANENTLY_LOC
	IF tlConfirm AND NOT EMPTY(lcCatalog) AND FILE(lcCatalog) AND ;
			this.oHost.MsgBox(lcMessage+[?],292)=6
		ERASE (lcCatalog)
		ERASE (FORCEEXT(lcCatalog,"fpt"))
	ENDIF
	this.oHost.RefreshBrowser
	IF tlNoRefresh
		RETURN
	ENDIF
	RETURN
ENDIF
IF USED(lcAlias) AND BETWEEN(this.nRecNo,1,RECCOUNT(lcAlias))
	GO this.nRecNo IN (lcAlias)
	DELETE IN (lcAlias)
ENDIF
IF USED(lcSourceAlias) AND BETWEEN(this.nSourceRecNo,1,RECCOUNT(lcSourceAlias))
	GO this.nSourceRecNo IN (lcSourceAlias)
	DELETE IN (lcSourceAlias)
ENDIF
IF tlNoRefresh
	RETURN
ENDIF
IF NOT this.lCatalog
	this.oParent.SetFocus
ENDIF
this.Refresh

ENDPROC
PROCEDURE getfile
LPARAMETERS tcFileExt,tlAutoExtDialog

IF NOT this.lGetFileAddress
	RETURN this.oHost.GetFile(tcFileExt,tlAutoExtDialog)
ENDIf
RETURN this.GetFileAddress(.T.,tcFileExt)

ENDPROC
PROCEDURE getfileaddress
LPARAMETERS tlNoShellExecute,tcFileExt

RETURN this.oHost.GetFileAddress(tlNoShellExecute,tcFileExt)

ENDPROC
PROCEDURE newinstance
RETURN NEWOBJECT(this.Class,this.ClassLibrary)

ENDPROC
PROCEDURE releaseobjects
this.oAction=.NULL.
this.oControl=.NULL.
this.oFolder=.NULL.
this.oHost=.NULL.
this.oLink=.NULL.
this.oNode=.NULL.
this.oObject=.NULL.
this.oParent=.NULL.
this.oRecord=.NULL.
this.oShortcutMenu=.NULL.
this.oSource=.NULL.
this.oTarget=.NULL.

ENDPROC
PROCEDURE refreshed
LOCAL llNoDefault

IF NOT this.Enabled
	RETURN .F.
ENDIF
llNoDefault=this.ScriptHook(PROGRAM())
RETURN llNoDefault

ENDPROC
PROCEDURE selected
LOCAL llNoDefault

IF NOT this.Enabled
	RETURN .F.
ENDIF
llNoDefault=this.ScriptHook(PROGRAM())
RETURN llNoDefault

ENDPROC
PROCEDURE Destroy
this.lRelease=.T.
this.ReleaseObjects

ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine

IF TYPE("this.oHost")=="O" AND NOT ISNULL(this.oHost)
	RETURN this.oHost.Error(nError,cMethod,nLine)
ENDIF
IF TYPE("_oBrowser")=="O" AND NOT ISNULL(_oBrowser)
	RETURN _oBrowser.Error(nError,cMethod,nLine)
ENDIF

ENDPROC
0&�� 
0
04e%&(�-�r*�U5�������2%�C�this.oShortCutMenub�O�	C�����O�B�-���T��-��%�������%�C��
����B�-���T��C������%��
�
C���
	����B�-�����C���	���T��CC��
�@��%�C��
��e�%��.�
��-�T����.mpr���
T�����DO &lcRightClickMenu
T���B��
T�����K%���+C� this.oShortCutMenu.oShortCutMenub�O	�
C����
	����T��C���������T��C������T���	B����UOTHIS
LLDELEGATELCRIGHTCLICKMENULVRESULTTHIS
OSHORTCUTMENULAUTOSETMENU	CLEARMENUSETMENUADDDEFAULTMENUCRIGHTCLICKMENUSHOWMENUB�C�����UTHIS
OSHORTCUTMENU	CLEARMENUU%������B�-���%�����;�B�C������B�C������UTHISLCATALOGLFOLDEROFOLDERSETFOCUSB�C������UTHISOHOST
SELECTITEM:���%������B��T���a��
����UNSTYLETHISVISIBLEREFRESH4%���
���B��T���-��
����UTHISVISIBLEREFRESH4%���
���B��T���-��
����UTHISENABLEDREFRESH3%������B��T���a��
����UTHISENABLEDREFRESHB�C�����UTHIS
OSHORTCUTMENUNEWMENU���B�C������UTNELEMENTNUMBERTHIS
OSHORTCUTMENUADDMENUSEPARATORu����%���
��#�B�-���
����A��C�P\<roperties�"oTHIS.oHost.oItemSource.Properties����UTOOBJECTTOMENUOBJECTLPROPERTIESMENUADDMENUSEPARATOR
ADDMENUBAR����������%�C����C�C��
	��e�'T���oTHIS.RunCode([;��])���,B�C����������	��U
TCPROMPT
TCONSELECTION	TCCLAUSESTNELEMENTNUMBERTLMARK
TLDISABLEDTLBOLDTHIS
OSHORTCUTMENU
ADDMENUBARj����������%���
��6�B�-���T�����	���
T�����
���
�
H�v�[�������T��a��%�������)��C�	\<Refresh�
oTHIS.Refresh��
����9��C�
\<Find....�oTHIS.oHost.oItemSource.Find��
���
���
������[�(��C�\<Open�
oTHIS.Open����a��
��
���
��%T�������
�����:��C�Cu\<t�oTHIS.oHost.oItemSource.Cut������
��5��C�\<Copy�oTHIS.oHost.oItemSource.Copy��
����C������
���
�%��
��b�B��C�
Create \<Link�"oTHIS.oHost.oItemSource.CreateLink��
���4T��������������	��E��C�Remo\<ve�#oTHIS.oHost.oItemSource.Remove(.T.)������
��F��C�Rena\<me�oTHIS.oHost.oItemSource.Rename��������
��%�����N�(%�CC����@�dbf�	C���	��h�T��-���{�T��a���
���
�@��C�\<Backup�oTHIS.oHost.oItemSource.Backup������
��B��C�	R\<estore�oTHIS.oHost.oItemSource.Restore������
��C��C�
Clean \<Up�oTHIS.oHost.oItemSource.Cleanup������
�����C������UTOOBJECT
LLVIEWMODELLCUTDISABLELLREMOVEDISABLELLCREATELINKDISABLELLCLEANUPDISABLETHISLDEFAULTMENUOHOST	NVIEWTYPEADDMENUSEPARATORLFOLDERLWEBVIEW
ADDMENUBARLFOLDERITEMLCATALOGOFOLDERLDYNAMIC
ADDPASTEMENUSNSOURCERECNOCCATALOGCDEFAULTCATALOGCSOURCECATALOGCSOURCEALIASADDPROPERTIESMENUB�C������UTHISOHOSTCUTB�C������UTHISOHOSTCOPYB�C������UTHISOHOSTPASTEB�C������UTHISOHOST
CREATELINKi%��������!�B�-���A��C�
_oBrowser.����.object.StartLabelEdit�����UTHISLOBJECTLVIEWOHOSTRUNCODETIMEROCONTROLNAMEB�C������UTHISOHOST	PASTELINK}���������2%���
���
���
	�����S�B�-���T����	�
���`T����.C�#_screen._oCGClipBoard.oItem.oRecordb�O�C�9���
��
�9�����T����	�9����:��C�\<Paste�oTHIS.oHost.oFolder.Paste��������%�����v�C��C�Paste \<Link�oTHIS.oHost.oFolder.PasteLink���������UTOOBJECTTOMENUOBJECTLLPASTEDISABLELLPASTELINKDISABLE
LLVIEWMODELPASTEMENUSLFOLDERLFOLDERITEMLDYNAMICOHOST	NVIEWTYPE
_OCGCLIPBOARDOITEMORECORDTHISLCUT
ADDMENUBAR�#�������������
H�7���������%��	�
��x� T��C�	���	���
����� T��C�	���	������2��%��	�
����T��C�	��	���
�����T��C�	��	�������%�C����O���B��T�	�������
H�F���,��9���C�����	�
	����T������T������2���
T�����T������T�������UOCONTROLODATAOBJECTNEFFECTNBUTTONNSHIFTNXCOORDNYCOORDNSTATEONODETHISLFOLDEROHOST
OLEFOLDERLISTNODESNFOLDERLISTINDEXOLEITEMS	LISTITEMSNITEMLISTINDEXNINDEX
DROPHIGHLIGHT
_OCGCLIPBOARD
LDRAGDROPMODE	GETFORMATLDYNAMICOLEDROPHASDATAOLEDROPEFFECTS��������������	�
���
��������
������ %�C��@�
olecontrol����T�����T�9����!T��C�������6��%��9������T�9������
T�����B��
H�����C�������%���
�����K�
T�����B��
T�������C������
T�	����
T�����T��CC���=@�ole��
%������T����� �����T��C������!���(����[�
%�����T�
�C�!�����8�T�
�C�!����%�C�
���O�.��T��CC�
��@��T��CC�
�ӡ��*T��C���FOLDER��	_FileItem6��!%�C��vcx�pjx�dbc�����T���FOLDER��� T��C���
��
�"��%�C����O��W�T�	��	���%�C����>�T����#���
���$�T������%��	�����T�
���
��
��
�%�%�C��
����
%��������C�a�
�&�������C�a�
�'�����2���
T������U(OCONTROLODATAOBJECTNEFFECTNBUTTONNSHIFTNXCOORDNYCOORDOFOLDERLCDROPHOSTNAMELNFILECOUNT
LCFILENAMELNFILETOTALONODEOHOSTLCIDLCTYPELLFOLDERLLOLECONTROL	LCFILEEXTLAFILES	BASECLASS
DROPHIGHLIGHT
_OCGCLIPBOARDODROPTARGETTHISLFOLDER
LDRAGDROPMODE	GETFORMATLPASTEMENUSLDYNAMICGETDATAFILESCOUNTLNCOUNT
CREATENODECIDRELEASEREFRESHBROWSERSELECTFOLDER
SELECTITEM����������������	�
�
������%�C��������T��C����T�	�C����T�
�C�������T���
T�	����
T�
�����T��CCC��@��T��
����
T�����%��9��
���B��%�C����O��%�T����T���9����T���9����
H�Z���C��
��1�
H�w��-���������������T�9���-��B�������%���
�������T�9���-��B�-���%�C�����
������T�9�����C�����%T��C�Project Manager� - >��0%�CC��=@C�Project Manager� - @��i�T������%�C���C�0
����T�9���-��B��#T��CCCC���\��pjx��@�������(��C����e� %�CCC��C����@���a�(��CC��C��	�
�������!�����"��C��	�
��������C��
���+�a��$�a%�C��	AddObject��h�C�oObject.parentb�O�#C�oObject.parent.BaseClassb�C���!��T�������7%����
�CC���=@�classbrowser
	��{���C��	�
�������T�9���-��UOCONTROLNEFFECTOITEMODROPTARGET	LCMWINDOWOOBJECT
LCFILENAME
LCPROJECTFILELNCOUNTLNXCOORDLNYCOORD
LAMOUSEOBJTHISCTARGET
_OCGCLIPBOARD
LDRAGDROPMODEOHOSTOPARENTLFOLDERLPASTEMENUSLDYNAMICSETFOCUSPASTE	CFILENAMEPROJECTSCOUNTNAMEOACTION	DRAGDROP2PARENT;�����%���
��'�B�-���
T�����UOCONTROLNEFFECTDEFAULTCURSORSTHISENABLED.�����%���
��'�B�-���UOCONTROLODATAOBJECTEFORMATTHISENABLED������
����T�9���-��%������C�B�-���T�9���a��%�C��	
����T�9���-��B�-�����C����
����C������UOCONTROLODATAOBJECTNEFFECT	CLEARDATA
_OCGCLIPBOARD
LDRAGDROPMODETHISOHOSTLMODALDIALOGCOPYSETDATAOLEGIVEFEEDBACKe�����������T��C����%�C����T�
T�����B�-���T��C���	�
���%�������
T�����
T�����B�-���
�����^�T�������Ca���
H���Z���
���������(��������T��C������/%�C��
�����	����	���� T��������
����T��������Ca����!��������Z�T�����������(�����V�T��CC��������#%�C����O����	��R� T��������
����T��������Ca����!�������UCANCEL	NEWSTRINGLCNEWSTRINGLCTEXTOFOLDEROITEMLNCOUNTTHISOCONTROLSELECTEDITEMTEXTCTEXTWRITEPROPERTIESLFOLDERITEMOHOSTNFOLDERCOUNTAFOLDERLISTCCATALOGNODESNINDEXLFOLDER
NITEMCOUNT	AITEMLISTAITEMINDEXESz���������%�C����3�B�-���T������T������T���a����������T�����T���	����%���
����
������T���
������%�����������
������
�������%��
��c�%���
��B���C�������_���C��������T������U
TLSETFOCUSOHOSTLCID	LLDELETEDLLLOCKSCREENTHIS
LOCKSCREENOITEMCIDLDELETEDLFOLDERREFRESHBROWSEROPARENT
NITEMCOUNT
OFOLDERSOURCEREFRESHITEMLISTSETFOCUSSELECTFOLDER
SELECTITEM����%�C��
�� �B�-���%�C���
��Q�T���C�������%�C���
����T���C�������UTCPROPERTIESTHIS	CFILENAMEFULLPATHCFORMCLASSLIBRARY:%�C�
���B�-���%�����3�
�����UTHISLRIGHTCLICKMENUSHOWMENUshowmenu,��	clearmenu���
uponelevel��setfocus���show���hide��disablen��enable���newmenu
��addmenuseparatorB��addpropertiesmenu���
addmenubar\��adddefaultmenuj��cut
��copyK
��pastey
��
createlink�
��rename�
��	pastelink���
addpastemenus���oledragover���oledragdrop���olecompletedrag���olegivefeedbackO��
olesetdata���olestartdrag! ��afterlabeleditX!��refresh�$��
setproperties�&��
rightclick�'��1q�"qA�!qA��qAAA1QA���AA��q�AA��33qAA13A3qAA��3AA��3AA��3AA��33qB3�qA�3��qA�3qqqA��������A���AQ�QQ��!ABQa����A�!1AQ3A3A3A3A3�qA3A3��#qA���1A31q��A����AAQAAa����A3��q��A!!�AA�A��AA�A����1�Aq�Q�!A�AA!!�1AQ�A��AA��!�!AAA��A3����b����A�1AAQ�A!!���A�qA�AA�Q�AA1��AAAA!�AAAq�AA3�qA�3�qA3��1qA!qA1Q3�q���qA���qA���������AAA���1�AAAAA3q1"qA���A��A����AA�Q�QAA3q"qA1�A1�A3�qA�A2�$��(&�|,.��60�1:7L�D=��LCRTIp�\K�`N@
fU+u	p[�	�z��������-L��m����4��Tw���]�������  y(DN�()�T-)�)�Y�)+�g(+l/���/�1��23�83�3)
03�PROCEDURE showmenu
PRIVATE oTHIS
LOCAL llDelegate,lcRightClickMenu,lvResult

IF TYPE("this.oShortCutMenu")#"O" OR ISNULL(this.oShortCutMenu)
	RETURN .F.
ENDIF
llDelegate=.F.
IF this.lAutoSetMenu
	IF NOT this.ClearMenu()
		RETURN .F.
	ENDIF
	llDelegate=this.oShortCutMenu.SetMenu(this)
	IF NOT llDelegate AND NOT this.SetMenu(this)
		RETURN .F.
	ENDIF
	this.AddDefaultMenu(this)
ENDIF
lcRightClickMenu=LOWER(ALLTRIM(this.cRightClickMenu))
IF NOT EMPTY(lcRightClickMenu)
	IF NOT "."$lcRightClickMenu
		lcRightClickMenu=lcRightClickMenu+".mpr"
	ENDIF
	oTHIS=this
	DO &lcRightClickMenu
	oTHIS=.NULL.
	RETURN
ENDIF
oTHIS=this
IF llDelegate AND TYPE("this.oShortCutMenu.oShortCutMenu")=="O" AND ;
		NOT ISNULL(this.oShortCutMenu.oShortCutMenu)
	lvResult=this.oShortCutMenu.oShortCutMenu.ShowMenu()
ELSE
	lvResult=this.oShortCutMenu.ShowMenu()
ENDIF
oTHIS=.NULL.
RETURN lvResult

ENDPROC
PROCEDURE clearmenu
RETURN this.oShortCutMenu.ClearMenu()

ENDPROC
PROCEDURE uponelevel
IF this.lCatalog
	RETURN .F.
ENDIF
IF this.lFolder
	RETURN this.oFolder.SetFocus()
ENDIF
RETURN this.oFolder.oFolder.SetFocus()

ENDPROC
PROCEDURE setfocus
RETURN this.oHost.SelectItem(this)

ENDPROC
PROCEDURE show
LPARAMETERS nStyle

IF this.Visible
	RETURN
ENDIF
this.Visible=.T.
this.Refresh

ENDPROC
PROCEDURE hide
IF NOT this.Visible
	RETURN
ENDIF
this.Visible=.F.
this.Refresh

ENDPROC
PROCEDURE disable
IF NOT this.Enabled
	RETURN
ENDIF
this.Enabled=.F.
this.Refresh

ENDPROC
PROCEDURE enable
IF this.Enabled
	RETURN
ENDIF
this.Enabled=.T.
this.Refresh

ENDPROC
PROCEDURE newmenu
RETURN this.oShortCutMenu.NewMenu()

ENDPROC
PROCEDURE addmenuseparator
LPARAMETERS tnElementNumber

RETURN this.oShortCutMenu.AddMenuSeparator(tnElementNumber)

ENDPROC
PROCEDURE addpropertiesmenu
LPARAMETERS toObject,toMenuObject

IF NOT toObject.lPropertiesMenu
	RETURN .F.
ENDIF
toMenuObject.AddMenuSeparator
toMenuObject.AddMenuBar(B_PROPERTIES1_LOC,"oTHIS.oHost.oItemSource.Properties")

ENDPROC
PROCEDURE addmenubar
LPARAMETERS tcPrompt,tcOnSelection,tcClauses,tnElementNumber,tlMark,tlDisabled,tlBold

IF VARTYPE(tcOnSelection)=="C" AND NOT EMPTY(tcOnSelection)
	tcOnSelection="oTHIS.RunCode([;"+tcOnSelection+"])"
ENDIF
RETURN this.oShortCutMenu.AddMenuBar(tcPrompt,tcOnSelection,tcClauses,tnElementNumber, ;
		tlMark,tlDisabled,tlBold)

ENDPROC
PROCEDURE adddefaultmenu
LPARAMETERS toObject
LOCAL llViewMode,llCutDisable,llRemoveDisable,llCreateLinkDisable,llCleanupDisable

IF NOT this.lDefaultMenu
	RETURN .F.
ENDIF
llViewMode=(this.oHost.nViewType>1)
llCreateLinkDisable=llViewMode
this.AddMenuSeparator
DO CASE
	CASE toObject.lFolder
		llCreateLinkDisable=.T.
		IF toObject.lWebView
			this.AddMenuBar(B_REFRESH1_LOC,"oTHIS.Refresh")
		ELSE
			this.AddMenuBar(B_FIND1_LOC,"oTHIS.oHost.oItemSource.Find")
		ENDIF
		this.AddMenuSeparator
	CASE toObject.lFolderItem
		this.AddMenuBar(B_OPEN1_LOC,"oTHIS.Open",,,,,.T.)
		this.AddMenuSeparator
ENDCASE
llCutDisable=(llViewMode OR toObject.lCatalog OR toObject.oFolder.lDynamic)
this.AddMenuBar(B_CUT1_LOC,"oTHIS.oHost.oItemSource.Cut",,,,llCutDisable)
this.AddMenuBar(B_COPY1_LOC,"oTHIS.oHost.oItemSource.Copy")
this.AddPasteMenus(toObject,this)
this.AddMenuSeparator
IF NOT llCreateLinkDisable
	this.AddMenuBar(B_CREATELINK1_LOC,"oTHIS.oHost.oItemSource.CreateLink")
ENDIF
llRemoveDisable=(toObject.nSourceRecNo<=0 OR (toObject.lCatalog AND ;
		toObject.cCatalog==toObject.oHost.cDefaultCatalog))
this.AddMenuBar(B_REMOVE1_LOC,"oTHIS.oHost.oItemSource.Remove(.T.)",,,,llRemoveDisable)
this.AddMenuBar(B_RENAME1_LOC,"oTHIS.oHost.oItemSource.Rename",,,,toObject.nSourceRecNo<=0)
IF toObject.lCatalog
	IF LOWER(JUSTEXT(toObject.cSourceCatalog ))=="dbf" AND ;
			USED(toObject.cSourceAlias)
		llCleanupDisable=.F.
	ELSE
		llCleanupDisable=.T.
	ENDIF
	this.AddMenuSeparator
	this.AddMenuBar(B_BACKUP1_LOC,"oTHIS.oHost.oItemSource.Backup",,,,llCleanupDisable)
	this.AddMenuBar(B_RESTORE1_LOC,"oTHIS.oHost.oItemSource.Restore",,,,llCleanupDisable)
	this.AddMenuBar(B_CLEANUP1_LOC,"oTHIS.oHost.oItemSource.Cleanup",,,,llCleanupDisable)
ENDIF
this.AddPropertiesMenu(toObject,this)

ENDPROC
PROCEDURE cut
RETURN this.oHost.Cut(this)

ENDPROC
PROCEDURE copy
RETURN this.oHost.Copy(this)

ENDPROC
PROCEDURE paste
RETURN this.oHost.Paste(this)

ENDPROC
PROCEDURE createlink
RETURN this.oHost.CreateLink(this)

ENDPROC
PROCEDURE rename
IF this.lObject OR this.lView
	RETURN .F.
ENDIF
this.oHost.RunCodeTimer("_oBrowser."+this.oControl.Name+".object.StartLabelEdit")

ENDPROC
PROCEDURE pastelink
RETURN this.oHost.PasteLink(this)

ENDPROC
PROCEDURE addpastemenus
LPARAMETERS toObject,toMenuObject
LOCAL llPasteDisable,llPasteLinkDisable,llViewMode

IF NOT toObject.lPasteMenus OR (NOT toObject.lFolder AND NOT toObject.lFolderItem) OR ;
		toObject.lDynamic
	RETURN .F.
ENDIF
llViewMode=(toObject.oHost.nViewType>1)
llPasteDisable=(llViewMode OR TYPE("_screen._oCGClipBoard.oItem.oRecord")#"O" OR ;
		ISNULL(_screen._oCGClipBoard.oItem.oRecord) OR _screen._oCGClipBoard.oItem=this)
llPasteLinkDisable=(llPasteDisable OR _screen._oCGClipBoard.lCut)
toMenuObject.AddMenuBar(B_PASTE1_LOC,"oTHIS.oHost.oFolder.Paste",,,,llPasteDisable)
IF toObject.lFolder
	toMenuObject.AddMenuBar(B_PASTELINE1_LOC,"oTHIS.oHost.oFolder.PasteLink",,,,llPasteLinkDisable)
ENDIF

ENDPROC
PROCEDURE oledragover
LPARAMETERS oControl, oDataObject, nEffect, nButton, nShift, nXCoord, nYCoord, nState
LOCAL oNode

DO CASE
	CASE nState=DRAG_LEAVE
		IF this.lFolder
			oNode=this.oHost.oleFolderList.Nodes[this.oHost.nFolderListIndex]
		ELSE
			oNode=this.oHost.oleItems.ListItems[this.oHost.nItemListIndex]
		ENDIF
	OTHERWISE
		IF this.lFolder
			oNode=this.oHost.oleFolderList.Nodes[this.nIndex]
		ELSE
			oNode=this.oHost.oleItems.ListItems[this.nIndex]
		ENDIF
ENDCASE
IF VARTYPE(oNode)#"O"
	RETURN
ENDIF
this.oHost.oleFolderList.DropHighLight=oNode
DO CASE
	CASE (_screen._oCGClipBoard.lDragDropMode OR oDataObject.GetFormat(CF_FILES)) AND ;
			NOT this.lDynamic
		oControl.OLEDropHasData=DROPHASDATA_USEFUL
		oControl.OLEDropEffects=DROPEFFECT_COPY
	OTHERWISE
		nEffect=0
		oControl.OLEDropHasData=DROPHASDATA_NOTUSEFUL
		oControl.OLEDropEffects=DROPEFFECT_NONE
ENDCASE

ENDPROC
PROCEDURE oledragdrop
LPARAMETERS oControl, oDataObject, nEffect, nButton, nShift, nXCoord, nYCoord
LOCAL oFolder,lcDropHostName,lnFileCount,lcFileName,lnFileTotal,oNode,oHost
LOCAL lcID,lcType,llFolder,llOLEControl,lcFileExt
LOCAL laFiles[1]

IF LOWER(oControl.BaseClass)=="olecontrol"
	oControl.DropHighLight=.NULL.
ENDIF
_screen._oCGClipBoard.oDropTarget=.NULL.
oFolder=IIF(this.lFolder,this,this.oFolder)
IF _screen._oCGClipBoard.lDragDropMode
	_screen._oCGClipBoard.oDropTarget=this
	nEffect=0
	RETURN
ENDIF
DO CASE
	CASE oDataObject.GetFormat(CF_FILES)
		IF NOT oFolder.lPasteMenus OR oFolder.lDynamic
			nEffect=0
			RETURN
		ENDIF
		laFiles=""
		oDataObject.GetData(CF_FILES,@laFiles)
		lnFileCount=0
		lcID=""
		llOLEControl=(LOWER(LEFT(oControl.BaseClass,3))=="ole")
		IF llOLEControl
			lnFileTotal=oDataObject.Files.Count
		ELSE
			lnFileTotal=ALEN(laFiles)
		ENDIF
		FOR lnCount = 1 TO lnFileTotal
			IF llOLEControl
				lcFileName=oDataObject.Files(lnCount)
			ELSE
				lcFileName=laFiles[lnCount]
			ENDIF
			IF EMPTY(lcFileName)
				LOOP
			ENDIF
			lcFileExt=LOWER(JUSTEXT(lcFileName))
			llFolder=EMPTY(JUSTEXT(lcFileName))
			lcType=IIF(llFolder,"FOLDER","_FileItem")
			IF INLIST(lcFileExt,"vcx","pjx","dbc")
				lcType="FOLDER"
			ENDIF
			oNode=oFolder.oHost.CreateNode(oFolder,lcType,lcFileName)
			IF VARTYPE(oNode)=="O"
				lnFileCount=lnFileCount+1
				IF EMPTY(lcID)
					lcID=oNode.cID
				ENDIF
				oNode.Release
				oNode=.NULL.
			ENDIF
		ENDFOR
		IF lnFileCount>0
			oHost=this.oHost
			oHost.RefreshBrowser
			IF NOT EMPTY(lcID)
				IF llFolder
					oHost.SelectFolder(lcID,.T.)
				ELSE
					oHost.SelectItem(lcID,.T.)
				ENDIF
			ENDIF
		ENDIF
	OTHERWISE
		nEffect=0
ENDCASE

ENDPROC
PROCEDURE olecompletedrag
LPARAMETERS oControl, nEffect
LOCAL oItem,oDropTarget,lcMWindow,oObject,lcFileName,lcProjectFile,lnCount
LOCAL lnXCoord,lnYCoord
LOCAL laMouseObj[1]

IF AMOUSEOBJ(laMouseObj)>=4
	oObject=laMouseObj[1]
	lnXCoord=laMouseObj[3]
	lnYCoord=laMouseObj[4]
ELSE
	oObject=.NULL.
	lnXCoord=0
	lnYCoord=0
ENDIF
lcMWindow=LOWER(ALLTRIM(MWINDOW()))
this.cTarget=lcMWindow
nEffect=0
IF NOT _screen._oCGClipBoard.lDragDropMode
	RETURN
ENDIF
IF VARTYPE(oObject)#"O"
	oObject=.NULL.
ENDIF
oItem=_screen._oCGClipBoard.oItem
oDropTarget=_screen._oCGClipBoard.oDropTarget
DO CASE
	CASE NOT ISNULL(oDropTarget)
		DO CASE
			CASE oDropTarget=this OR oDropTarget=this.oHost OR oDropTarget=this.oParent
				_screen._oCGClipBoard.lDragDropMode=.F.
				RETURN
			CASE oDropTarget.lFolder
				IF NOT oDropTarget.lPasteMenus OR oDropTarget.lDynamic
					_screen._oCGClipBoard.lDragDropMode=.F.
					RETURN .F.
				ENDIF
				IF oDropTarget.SetFocus()
					oDropTarget.Paste
				ENDIF
		ENDCASE
		_screen._oCGClipBoard.oDropTarget=.NULL.
	CASE ISNULL(oObject)
		lnCount=LEN(M_PROJECT_MANAGER_LOC+" - ")
		IF LOWER(LEFT(lcMWindow,lnCount))==LOWER(M_PROJECT_MANAGER_LOC+" - ")
			lcFileName=this.cFileName
			IF EMPTY(lcFileName) OR NOT FILE(lcFileName)
				_screen._oCGClipBoard.lDragDropMode=.F.
				RETURN
			ENDIF
			lcProjectFile=LOWER(FORCEEXT(ALLTRIM(SUBSTR(lcMWindow,lnCount+1)),"pjx"))
			FOR lnCount = 1 TO _vfp.Projects.Count
				IF LOWER(JUSTFNAME(_vfp.Projects[lnCount].Name))==lcProjectFile
					this.oHost.oItem.oAction.DragDrop2(_vfp.Projects[lnCount], ;
							lnXCoord,lnYCoord)
					EXIT
				ENDIF
			ENDFOR
		ENDIF
		this.oHost.oItem.oAction.DragDrop2(oObject,lnXCoord,lnYCoord)
	CASE NOT ISNULL(oItem)
		DO WHILE .T.
			IF PEMSTATUS(oObject,"AddObject",5) OR TYPE("oObject.parent")#"O" OR ;
					TYPE("oObject.parent.BaseClass")#"C"
				EXIT
			ENDIF
			oObject=oObject.parent
		ENDDO
		IF NOT oObject=this.oHost AND NOT LOWER(LEFT(oObject.Name,12))=="classbrowser"
			oItem.oAction.DragDrop2(oObject,lnXCoord,lnYCoord)
		ENDIF
ENDCASE
_screen._oCGClipBoard.lDragDropMode=.F.

ENDPROC
PROCEDURE olegivefeedback
LPARAMETERS oControl, nEffect, defaultcursors

IF NOT this.Enabled
	RETURN .F.
ENDIF
defaultcursors=14

ENDPROC
PROCEDURE olesetdata
LPARAMETERS oControl, oDataObject, eFormat

IF NOT this.Enabled
	RETURN .F.
ENDIF

ENDPROC
PROCEDURE olestartdrag
LPARAMETERS oControl, oDataObject, nEffect

oDataObject.ClearData
_screen._oCGClipBoard.lDragDropMode=.F.
IF this.oHost.lModalDialog
	RETURN .F.
ENDIF
_screen._oCGClipBoard.lDragDropMode=.T.
IF NOT this.Copy()
	_screen._oCGClipBoard.lDragDropMode=.F.
	RETURN .F.
ENDIF
oDataObject.SetData("",0)
this.OLEGiveFeedback(oControl,nEffect)

ENDPROC
PROCEDURE afterlabeledit
LPARAMETERS cancel, newstring
LOCAL lcNewString,lcText,oFolder,oItem,lnCount

lcNewString=ALLTRIM(newstring)
IF EMPTY(lcNewString)
	cancel=1
	RETURN .F.
ENDIF
lcText=ALLTRIM(this.oControl.SelectedItem.Text)
IF lcNewString==lcText
	newstring=lcText
	cancel=1
	RETURN .F.
ENDIF
WITH this
	.cText=lcNewString
	.WriteProperties(.T.)
	DO CASE
		CASE .lFolderItem
			FOR lnCount = 1 TO this.oHost.nFolderCount
				oFolder=this.oHost.aFolderList[lnCount]
				IF NOT ISNULL(oFolder) AND oFolder.cCatalog==this.cCatalog AND ;
						oFolder.cText==lcText
					oFolder.oControl.Nodes[oFolder.nIndex].Text=.cText
					oFolder.cText=lcNewString
					oFolder.WriteProperties(.T.)
					EXIT
				ENDIF
			ENDFOR
		CASE .lFolder
			oFolder=this.oFolder
			FOR lnCount = 1 TO oFolder.nItemCount
				oItem=this.oHost.aItemList[oFolder.aItemIndexes[lnCount]]
				IF VARTYPE(oItem)=="O" AND oItem.cText==lcText
					oItem.oControl.Nodes[oItem.nIndex].Text=.cText
					oItem.cText=lcNewString
					oItem.WriteProperties(.T.)
					EXIT
				ENDIF
			ENDFOR
	ENDCASE
ENDWITH

ENDPROC
PROCEDURE refresh
LPARAMETERS tlSetFocus
LOCAL oHost,lcID,llDeleted,llLockScreen

IF ISNULL(this.oHost)
	RETURN .F.
ENDIF
oHost=this.oHost
llLockScreen=oHost.LockScreen
oHost.LockScreen=.T.
WITH oHost.oItem
	lcID=.cID
	llDeleted=.lDeleted
ENDWITH
IF this.lFolder
	oHost.RefreshBrowser
ELSE
	this.oParent.nItemCount=-1
	IF this.oParent.cID==oHost.oFolderSource.cID
		oHost.RefreshItemList
	ELSE
		this.oParent.SetFocus
	ENDIF
ENDIF
IF NOT llDeleted
	IF this.lFolder
		oHost.SelectFolder(lcID,tlSetFocus)
	ELSE
		oHost.SelectItem(lcID,tlSetFocus)
	ENDIF
ENDIF
oHost.LockScreen=llLockScreen

ENDPROC
PROCEDURE setproperties
LPARAMETERS tcProperties

IF NOT DODEFAULT(tcProperties)
	RETURN .F.
ENDIF
IF NOT EMPTY(this.cFileName)
	this.cFileName=this.FullPath(this.cFileName)
ENDIF
IF NOT EMPTY(this.cFormClassLibrary)
	this.cFormClassLibrary=this.FullPath(this.cFormClassLibrary)
ENDIF

ENDPROC
PROCEDURE rightclick
IF NOT DODEFAULT()
	RETURN .F.
ENDIF
IF this.lRightClickMenu
	this.ShowMenu
ENDIF

ENDPROC