Then, after some hours of work, i give you my WebEditor.
New and Open doesn't work yet, becaus i don't use it.
Code: Select all
;{- html constante
; WG library. By Fr34k and Zapman.
;
; Some of the followings procedure are from Fr34k (Freak) of the english PureBasic Forum
; Thanks a lot to him for sharing!!
; The other ones are from Zapman (french and english forum)
;
;- IID Datasection
DataSection
IID_IPersistFile: ; {0000010b-0000-0000-C000-000000000046}
Data.l $0000010B
Data.w $0000, $0000
Data.b $00, $00, $00, $00, $00, $00, $00, $46
IID_IHTMLElement: ; {3050F1FF-98B5-11CF-BB82-00AA00BDCE0B}
Data.l $3050F1FF
Data.w $98B5, $11CF
Data.b $BB, $82, $00, $AA, $00, $BD, $CE, $0B
IID_IHTMLElement2: ; "3050f434-98b5-11cf-bb82-00aa00bdce0b";
Data.l $3050F434
Data.w $98B5, $11CF
Data.b $BB, $82, $00, $AA, $00, $BD, $CE, $0B
IID_IHTMLElement3: ; "3050f673-98b5-11cf-bb82-00aa00bdce0b";
Data.l $3050F673
Data.w $98B5, $11CF
Data.b $BB, $82, $00, $AA, $00, $BD, $CE, $0B
IID_IOleCommandTarget: ; {B722BCCB-4E68-101B-A2BC-00AA00404770}
Data.l $B722BCCB
Data.w $4E68, $101B
Data.b $A2, $BC, $00, $AA, $00, $40, $47, $70
IID_IHTMLCurrentStyle: ;3050f3db-98b5-11cf-bb82-00aa00bdce0b
Data.l $3050F3DB
Data.w $98B5, $11CF
Data.b $BB, $82, $00, $AA, $00, $BD, $CE, $0B
IID_IHTMLCurrentStyle2: ;3050f658-98b5-11cf-bb82-00aa00bdce0b
Data.l $3050F658
Data.w $98B5, $11CF
Data.b $BB, $82, $00, $AA, $00, $BD, $CE, $0B
IID_IHTMLTxtRange: ; {0x20F25030, 0xB598, 0xCF11, [0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, ...
Data.l $3050F220
Data.w $98B5, $11CF
Data.b $BB, $82, $00, $AA, $00, $BD, $CE, $0B
IID_IHTMLDocument2: ; {332C4425-26CB-11D0-B483-00C04FD90119}
Data.l $332C4425
Data.w $26CB, $11D0
Data.b $B4, $83, $00, $C0, $4F, $D9, $01, $19
IID_IHTMLWindow2: ; {332c4427-26cb-11d0-b483-00c04fd90119}
Data.l $332C4427
Data.w $26CB, $11D0
Data.b $B4, $83, $00, $C0, $4F, $D9, $01, $19
IID_IDisplayServices: ; { 3050F69D - 98B5 - 11CF - BB82 - 00AA00BDCE0B }.
Data.l $3050F69D
Data.w $98B5, $11CF
Data.b $BB, $82, $00, $AA, $00, $BD, $CE, $0B
IID_IHTMLEditServices: ; { 3050F663 - 98B5 - 11CF - BB82 - 00AA00BDCE0B }.
Data.l $3050F663
Data.w $98B5, $11CF
Data.b $BB, $82, $00, $AA, $00, $BD, $CE, $0B
SID_SHTMLEditServices: ;TGUID = (D1: $3050f7f9; D2: $98b5; D3: $11cf; D4: ($bb, $82, $00, $AA, $00, $bd, $ce, $0b));
Data.l $3050F7F9
Data.w $98B5, $11CF
Data.b $BB, $82, $00, $AA, $00, $BD, $CE, $0B
IID_IMarkupServices: ; {3050F4A0-98B5-11CF-BB82-00AA00BDCE0B}.
Data.l $3050F4A0
Data.w $98B5, $11CF
Data.b $BB, $82, $00, $AA, $00, $BD, $CE, $0B
IID_IMarkupTextFrags: ; {3050F5FA-98B5-11CF-BB82-00AA00BDCE0B}.
Data.l $3050F5FA
Data.w $98B5, $11CF
Data.b $BB, $82, $00, $AA, $00, $BD, $CE, $0B
IID_IServiceProvider: ; {6D5140C1- 7436-11CE-8034-00AA006009FA}.
Data.l $6D5140C1
Data.w $7436, $11CE
Data.b $80, $34, $00, $AA, $00, $60, $09, $FA
IID_IHTMLCaret: ; {3050F604-98B5-11CF-BB82-00AA00BDCE0B}.
Data.l $3050F604
Data.w $98B5, $11CF
Data.b $BB, $82, $00, $AA, $00, $BD, $CE, $0B
IID_NULL: ; {00000000-0000-0000-0000-000000000000}
Data.l $00000000
Data.w $0000, $0000
Data.b $00, $00, $00, $00, $00, $00, $00, $00
IID_IUnknown: ; {00000000-0000-0000-C000-000000000046}
Data.l $00000000
Data.w $0000, $0000
Data.b $C0, $00, $00, $00, $00, $00, $00, $46
IID_IDispatch: ; {00020400-0000-0000-C000-000000000046}
Data.l $00020400
Data.w $0000, $0000
Data.b $C0, $00, $00, $00, $00, $00, $00, $46
CGID_MSHTML: ; { DE4BA900 - 59CA - 11CF - 9592 - 444553540000 }
Data.l $DE4BA900
Data.w $59CA, $11CF
Data.b $95, $92, $44, $45, $53, $54, $00, $00
EndDataSection
#IDM_SHOWALLTAGS = 2320;
#IDM_SHOWALIGNEDSITETAGS = 2321;
#IDM_SHOWSCRIPTTAGS = 2322;
#IDM_SHOWSTYLETAGS = 2323;
#IDM_SHOWCOMMENTTAGS = 2324;
#IDM_SHOWAREATAGS = 2325;
#IDM_SHOWUNKNOWNTAGS = 2326;
#IDM_SHOWMISCTAGS = 2327;
#IDM_SHOWZEROBORDERATDESIGNTIME = 2328;
;
#IDM_EDITMODE = 2127
#IDM_2D_POSITION = 2394
#IDM_2D_ELEMENT = 2395
#IDM_1D_ELEMENT = 2396
#IDM_EMPTYGLYPHTABLE = 2336
#IDM_ADDTOGLYPHTABLE = 2337
#IDM_REMOVEFROMGLYPHTABLE = 2338
#IDM_REPLACEGLYPHCONTENTS = 2339
#IDM_SHOWALIGNEDSITETAGS = 2321;
#IDM_SHOWSCRIPTTAGS = 2322;
#IDM_SHOWSTYLETAGS = 2323;
#IDM_SHOWCOMMENTTAGS = 2324;
#IDM_SHOWAREATAGS = 2325;
#IDM_SHOWUNKNOWNTAGS = 2326;
#IDM_SHOWMISCTAGS = 2327;
#IDM_SHOWZEROBORDERATDESIGNTIME = 2328;
Enumeration 0
#OLECMDEXECOPT_DODEFAULT
#OLECMDEXECOPT_PROMPTUSER
#OLECMDEXECOPT_DONTPROMPTUSER
#OLECMDEXECOPT_SHOWHELP
EndEnumeration
#OLECMDERR_E_NOTSUPPORTED = -2147221248
#OLECMDERR_E_DISABLED = -2147221247
#OLECMDERR_E_NOHELP = -2147221246
#OLECMDERR_E_CANCELED = -2147221245
#OLECMDERR_E_UNKNOWNGROUP = -2147221244
Enumeration 0
#MOVEUNIT_PREVCHAR
#MOVEUNIT_NEXTCHAR
#MOVEUNIT_PREVCLUSTERBEG
#MOVEUNIT_NEXTCLUSTERBEG
#MOVEUNIT_PREVCLUSTEREND
#MOVEUNIT_NEXTCLUSTEREND
#MOVEUNIT_PREVWORDBEG
#MOVEUNIT_NEXTWORDBEG
#MOVEUNIT_PREVWORDEND
#MOVEUNIT_NEXTWORDEND
#MOVEUNIT_PREVPROOFWORD
#MOVEUNIT_NEXTPROOFWORD
#MOVEUNIT_NEXTURLBEG
#MOVEUNIT_PREVURLBEG
#MOVEUNIT_NEXTURLEND
#MOVEUNIT_PREVURLEND
#MOVEUNIT_PREVSENTENCE
#MOVEUNIT_NEXTSENTENCE
#MOVEUNIT_PREVBLOCK
#MOVEUNIT_NEXTBLOCK
#MOVEUNIT_ACTION_Max = 2147483647
EndEnumeration
;
Enumeration 0
#ELEM_ADJ_BeforeBegin
#ELEM_ADJ_AfterBegin
#ELEM_ADJ_BeforeEnd
#ELEM_ADJ_AfterEnd
EndEnumeration
;}
;{-html constante 2
Enumeration 1
#olecmdid_open
#olecmdid_new
#olecmdid_save
#olecmdid_saveas
#olecmdid_savecopyas
#olecmdid_print
#olecmdid_printpreview
#olecmdid_pagesetup
#olecmdid_spell
#olecmdid_properties
#olecmdid_cut
#olecmdid_copy
#olecmdid_paste
#olecmdid_pastespecial
#olecmdid_undo
#olecmdid_redo
#olecmdid_selectall
#olecmdid_clearselection
#olecmdid_zoom
#olecmdid_getzoomrange
#olecmdid_updatecommands
#olecmdid_refresh
#olecmdid_stop
#olecmdid_hidetoolbars
#olecmdid_setprogressmax
#olecmdid_setprogresspos
#olecmdid_setprogresstext
#olecmdid_settitle
#olecmdid_setdownloadstate
#olecmdid_stopdownload
#olecmdid_ontoolbaractivated
#olecmdid_find
#olecmdid_delete
#olecmdid_httpequiv
#olecmdid_httpequiv_done
#olecmdid_enable_interaction
#olecmdid_onunload
#olecmdid_propertybag2
#olecmdid_prerefresh
#olecmdid_showscripterror
#olecmdid_showmessage
#olecmdid_showfind
#olecmdid_showpagesetup
#olecmdid_showprint
#olecmdid_clos
#olecmdid_allowuilesssaveas
#olecmdid_dontdownloadcss
#olecmdid_updatepagestatus
#olecmdid_print2
#olecmdid_printpreview2
#olecmdid_setprinttemplate
#olecmdid_getprinttemplate
#olecmdid_pageactionblocked = 55; no 53 or 54
#olecmdid_pageactionuiquery
#olecmdid_focusviewcontrols
#olecmdid_focusviewcontrolsquery
#olecmdid_showpageactionmenu
EndEnumeration
Enumeration 0
#OLECMDEXECOPT_DODEFAULT
#OLECMDEXECOPT_PROMPTUSER
#OLECMDEXECOPT_DONTPROMPTUSER
#OLECMDEXECOPT_SHOWHELP
EndEnumeration
Enumeration
#idm_alignbottom
#idm_alignhorizontalcenters
#idm_alignleft
#idm_alignright
#idm_aligntogrid
#idm_aligntop
#idm_alignverticalcenters
#idm_arrangebottom
#idm_arrangeright
#idm_bringforward
#idm_bringtofront
#idm_centerhorizontally
#idm_centervertically
#idm_code
#idm_delete =17
#idm_fontname
#idm_fontsize
#idm_group
#idm_horizspaceconcatenate
#idm_horizspacedecrease
#idm_horizspaceincrease
#idm_horizspacemakeequal
#idm_insertobject
#idm_multilevelredo =30
#idm_sendbackward =32
#idm_sendtoback
#idm_showtable
#idm_sizetocontrol
#idm_sizetocontrolheight
#idm_sizetocontrolwidth
#idm_sizetofit
#idm_sizetogrid
#idm_snaptogrid
#idm_taborder
#idm_toolbox
#idm_multilevelundo =44
#idm_ungroup
#idm_vertspaceconcatenate
#idm_vertspacedecrease
#idm_vertspaceincrease
#idm_vertspacemakeequal
#idm_justifyfull
#idm_backcolor
#idm_bold
#idm_bordercolor
#idm_flat
#idm_forecolor
#idm_italic
#idm_justifycenter
#idm_justifygeneral
#idm_justifyleft
#idm_justifyright
#idm_raised
#idm_sunken
#idm_underline
#idm_chiseled
#idm_etched
#idm_shadowed
#idm_find
#idm_showgrid = 69
EndEnumeration
#IDM_2D_POSITION = 2394
Global CmdTarget.IOleCommandTarget
Global Browser.IWebBrowser2
Global DocumentDispatch.IDispatch
Global Document.IHTMLDocument2
;Global CmdTarget.IOleCommandTarget
;Global CmdTarget.IOleCommandTarget
;}
DataSection ;{include des icones
ic_nouveau: IncludeBinary "icone\nouveau.bmp"
ic_ouvrir: IncludeBinary "icone\ouvrir.bmp"
ic_barrer: IncludeBinary "icone\barrer.bmp"
ic_centrer_droite: IncludeBinary "icone\centrer_droite.bmp"
ic_centrer_gauche: IncludeBinary "icone\centrer_gauche.bmp"
ic_centrer_milieu: IncludeBinary "icone\centrer_milieu.bmp"
ic_couleur_texte: IncludeBinary "icone\couleur_texte.bmp"
ic_decalage_droite: IncludeBinary "icone\decalage_droite.bmp"
ic_decalage_gauche: IncludeBinary "icone\decalage_gauche.bmp"
ic_sauver: IncludeBinary "icone\sauver.bmp"
ic_gras: IncludeBinary "icone\gras.bmp"
ic_italique: IncludeBinary "icone\italique.bmp"
;ic_ouvrir: IncludeBinary "icone\ouvrir.bmp"
ic_souligner: IncludeBinary "icone\souligner.bmp"
ic_surligne: IncludeBinary "icone\surligner.bmp"
ic_desurligne: IncludeBinary "icone\desurligner.bmp"
ic_taille_moins: IncludeBinary "icone\taille_moins.bmp"
ic_taille_plus: IncludeBinary "icone\taille_plus.bmp"
ic_zoom_plus: IncludeBinary "icone\zoom_plus.bmp"
ic_zoom_moins: IncludeBinary "icone\zoom_moins.bmp"
ic_choix: IncludeBinary "icone\choix.bmp"
ic_palette: IncludeBinary "icone\palette.bmp"
ic_ctrl_z: IncludeBinary "icone\ctrl_z.bmp"
ic_ctrl_y: IncludeBinary "icone\ctrl_y.bmp"
ic_couper: IncludeBinary "icone\couper.bmp"
ic_copier: IncludeBinary "icone\copier.bmp"
ic_coller: IncludeBinary "icone\coller.bmp"
ic_inserer_image: IncludeBinary "icone\inserer_image_ds_texte.bmp"
ic_inserer_image_gauche: IncludeBinary "icone\inserer_image_ds_texte_gauche.bmp"
ic_inserer_image_droite: IncludeBinary "icone\inserer_image_ds_texte_droite.bmp"
ic_inserer_lien: IncludeBinary "icone\inserer_lien.bmp"
ic_inserer_lien_inter_site: IncludeBinary "icone\inserer_lien_inter_site.bmp"
ic_supprimer_lien: IncludeBinary "icone\supprimer_lien.bmp"
;ic_: IncludeBinary "icone\.bmp"
;ic_: IncludeBinary "icone\.bmp"
;ic_: IncludeBinary "icone\.bmp"
EndDataSection
;}
Procedure StringToBStr(string$) ; By Zapman Inspired by Fr34k
Protected Unicode$ = Space(Len(string$)* 2 + 2)
Protected bstr_string.l
PokeS(@Unicode$, string$, -1, #PB_Unicode)
bstr_string = SysAllocString_(@Unicode$)
ProcedureReturn bstr_string
EndProcedure
Procedure.s RelativePath(Path.s, FromPath.s = "")
Protected l.w,c.w,NewPath.s
NewPath.s=""
c=0
If Not FromPath
FromPath = GetCurrentDirectory()
EndIf
If Left(Path, 1) <> Left(FromPath, 1)
ProcedureReturn Path
EndIf
For l=Len(FromPath) To 1 Step -1
If Mid(FromPath, l, 1)="\"
c+1
If FindString(Path, Left(FromPath,l), 1)
Break
EndIf
EndIf
Next l
For z=1 To c-1
NewPath+"..\"
Next
NewPath+Right(Path, Len(Path)-l)
ProcedureReturn NewPath
EndProcedure
;{- Variable
Global test
test=27
Global nom_fichier_web$,MaxD,code_fin_sauvegarde_texte$,code_fin_sauvegarde_format$
;nom_fichier_web$="file://f:\Informatique\34_Creation_site_web\1_client\04_teddymotos\site\base/test.html"
Global zoom,affiche_palette.b
affiche_palette=1
Global Couleur_texte,couleur_fond_texte,web_editor_der_path_image$
Couleur_texte=$000000
couleur_fond_texte=$00FFFF
Global Dim Nom_Font.s(1)
Nom_Font(0)="0"
;Declare Callback_EvenementWebgadget(Hnd,msg,wParam,lParam)
;}
Global hHook.l
ProcedureDLL DisableWebGadgetRightClick(nCode, wParam, lParam)
Static *MOUSESTRUCT.MOUSEHOOKSTRUCT,Name.s
If nCode < 0
ProcedureReturn CallNextHookEx_(hHook, nCode, wParam, lParam)
EndIf
*MOUSESTRUCT.MOUSEHOOKSTRUCT = lParam
Select wParam
Case #WM_RBUTTONUP,#WM_RBUTTONDOWN
Name=Space(100)
GetClassName_(*MOUSESTRUCT\hwnd,@Name,99)
If Name="Internet Explorer_Server"
ProcedureReturn 1
EndIf
EndSelect
ProcedureReturn CallNextHookEx_(hHook, nCode, wParam, lParam)
EndProcedure
Enumeration #PB_Compiler_EnumerationValue
#web_ID
#web_nouveau
#web_load
#web_save
#web_zoom
#web_alig_gauche
#web_alig_centre
#web_alig_droite
#web_text_plus
#web_text_moins
#web_gras
#web_italique
#web_surligner
#web_barrer
#web_liste_font
#web_decallage_droite
#web_decallage_gauche
#web_zoom_moins
#web_zoom_plus
#web_inserer_lien
#web_inserer_lien_inter_site
#web_supprimer_lien
#web_couleur_texte
#web_couleur_surligne
#web_couleur_desurligne
#web_couleur_texte_choix
#web_couleur_surligne_choix
#web_affiche_palette
#web_ctrl_z
#web_ctrl_y
#web_couper
#web_copier
#web_coller
#web_selection_tout
#web_inserer_image
#web_inserer_image_gauche
#web_inserer_image_droite
#web_delete
;ne pas changer l'ordre d'ici
#im_coul_texte
#im_coul_fond
#im_coul_page
;ne pas changer l'ordre a ici
#im_web_editor
EndEnumeration
Enumeration #PB_Compiler_EnumerationValue ;enumeration des icones
#ic_nouveau
#ic_ouvrir
#ic_barrer
#ic_centrer_droite
#ic_centrer_gauche
#ic_centrer_milieu
#ic_couleur_texte
#ic_decalage_droite
#ic_decalage_gauche
#ic_sauver
#ic_gras
#ic_italique
;
#ic_souligner
#ic_surligne
#ic_desurligne
#ic_taille_moins
#ic_taille_plus
#ic_zoom_plus
#ic_zoom_moins
#ic_choix
#ic_palette
#ic_inserer_lien
#ic_inserer_lien_inter_site
#ic_supprimer_lien
#ic_ctrl_z
#ic_ctrl_y
#ic_couper
#ic_copier
#ic_coller
#ic_inserer_image
#ic_inserer_image_gauche
#ic_inserer_image_droite
;#ic_
;#ic_
EndEnumeration
Procedure Hide_web_editor(type)
For i=#web_ID To #web_inserer_image_droite
If IsGadget(i)
HideGadget(i,type)
EndIf
Next
EndProcedure
Procedure SetIconeCouleurFond(Couleur)
;debug "Procedure SetIconeCouleurFond(Couleur)"
;debug Couleur
If IsGadget(#web_couleur_surligne)
;debug "ok"
StartDrawing(ImageOutput(#ic_surligne))
Box(3,14,15,5,Couleur)
StopDrawing()
SetGadgetState(#web_couleur_surligne,ImageID(#ic_surligne))
EndIf
EndProcedure
Procedure SetIconeCouleurTexte(Couleur)
If IsGadget(#web_couleur_texte)
StartDrawing(ImageOutput(#ic_couleur_texte))
Box(3,14,15,5,Couleur)
StopDrawing()
SetGadgetState(#web_couleur_texte,ImageID(#ic_couleur_texte))
EndIf
EndProcedure
Procedure raccourci_clavier(id_window)
AddKeyboardShortcut(id_window,#PB_Shortcut_Control | #PB_Shortcut_X, #web_couper)
AddKeyboardShortcut(id_window,#PB_Shortcut_Control | #PB_Shortcut_C, #web_copier)
AddKeyboardShortcut(id_window,#PB_Shortcut_Control | #PB_Shortcut_V, #web_coller)
AddKeyboardShortcut(id_window,#PB_Shortcut_Control | #PB_Shortcut_A, #web_selection_tout)
AddKeyboardShortcut(id_window,#PB_Shortcut_Control | #PB_Shortcut_Z, #web_ctrl_z)
AddKeyboardShortcut(id_window,#PB_Shortcut_Control | #PB_Shortcut_Y, #web_ctrl_y)
AddKeyboardShortcut(id_window,#PB_Shortcut_Control | #PB_Shortcut_S, #web_save)
AddKeyboardShortcut(id_window, #PB_Shortcut_Delete, #web_delete)
EndProcedure
Procedure ouvrir_canal_web_gadget()
Browser = GetWindowLong_(GadgetID(#web_ID), #GWL_USERDATA)
; wait For page To be loaded..
Repeat
While WindowEvent(): Wend
Delay(1)
Browser\get_Busy(@IsBusy.l)
Until IsBusy = 0
; get the document interface
If Browser\get_Document(@DocumentDispatch) = #S_OK
; query For IHTMLDocument3:
If DocumentDispatch\QueryInterface(?IID_IHTMLDocument2, @Document) = #S_OK
; here you have a IHTMLDocument2 pointer, can work with it...
Document\put_designMode("On") ; Turns on Edit Mode
;Document\put_designMode(Ansi2Uni("On")) ; Turns on Edit Mode ;
If DocumentDispatch\QueryInterface(?IID_IOleCommandTarget, @CmdTarget) = #S_OK
CmdTarget\Exec(?CGID_MSHTML, #IDM_2D_POSITION, #OLECMDEXECOPT_DONTPROMPTUSER, @var, NULL) ;Lets you drag drop items
; CmdTarget\Release()
EndIf
Document\Release()
EndIf
DocumentDispatch\Release()
EndIf
EndProcedure
Procedure fermer_canal_web_gadget()
If CmdTarget
CmdTarget\Release()
EndIf
EndProcedure
Procedure inserer_image(type$)
file_image$=OpenFileRequester("Choix images","","",0)
nom_image$=ReplaceString(RelativePath(file_image$,GetPathPart( nom_fichier_web$)),"\","/")
Debug file_image$
Debug GetPathPart( nom_fichier_web$)
Debug nom_image$
If nom_image$<>""
Select type$
Case "gauche"
style$=" style="+Chr(34)+"FLOAT: left"+Chr(34)
Case "centrer"
style$=""
Case "droite"
style$=" style="+Chr(34)+"FLOAT: right"+Chr(34)
EndSelect
texte_insert_image$=nom_image$+Chr(34)+style$+" alt="+GetFilePart(nom_image$);+" width="+l_im$+" Height="+h_im$
Success.VARIANT
Command.VARIANT
Command\vt = #VT_BSTR
Command\bstrVal = StringToBStr(texte_insert_image$);"http://www.cpur.fr");"CreateLink")
Document\execCommand("InsertImage", 0, @Command , @Success)
EndIf
EndProcedure
Procedure save_web_gadget()
Browser\ExecWB(#olecmdid_save, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
EndProcedure
Procedure CreateWebGadgetEditor(id_window,x,yd,l,h,menu$="111111111111")
y=yd
menu$=LSet(menu$,12,"0")
;menu$="11111111111111111111"
;{catchimages
CatchImage(#ic_nouveau,?ic_nouveau)
CatchImage(#ic_ouvrir ,?ic_ouvrir )
CatchImage(#ic_barrer ,?ic_barrer )
CatchImage(#ic_centrer_droite ,?ic_centrer_droite )
CatchImage(#ic_centrer_gauche ,?ic_centrer_gauche )
CatchImage(#ic_centrer_milieu ,?ic_centrer_milieu )
CatchImage(#ic_couleur_texte ,?ic_couleur_texte )
CatchImage(#ic_decalage_droite,?ic_decalage_droite)
CatchImage(#ic_decalage_gauche,?ic_decalage_gauche)
CatchImage(#ic_sauver ,?ic_sauver )
CatchImage(#ic_gras ,?ic_gras )
CatchImage(#ic_italique ,?ic_italique )
CatchImage(#ic_ouvrir ,?ic_ouvrir )
CatchImage(#ic_souligner ,?ic_souligner )
CatchImage(#ic_surligne ,?ic_surligne )
CatchImage(#ic_desurligne ,?ic_desurligne )
CatchImage(#ic_taille_moins ,?ic_taille_moins )
CatchImage(#ic_taille_plus,?ic_taille_plus)
CatchImage(#ic_zoom_plus,?ic_zoom_plus)
CatchImage(#ic_zoom_moins,?ic_zoom_moins)
CatchImage(#ic_choix,?ic_choix)
CatchImage(#ic_palette,?ic_palette)
CatchImage(#ic_ctrl_z,?ic_ctrl_z)
CatchImage(#ic_ctrl_y,?ic_ctrl_y)
CatchImage(#ic_couper,?ic_couper)
CatchImage(#ic_copier,?ic_copier)
CatchImage(#ic_coller,?ic_coller)
CatchImage(#ic_inserer_image,?ic_inserer_image)
CatchImage(#ic_inserer_image_gauche,?ic_inserer_image_gauche)
CatchImage(#ic_inserer_image_droite,?ic_inserer_image_droite)
CatchImage(#ic_inserer_lien,?ic_inserer_lien)
CatchImage(#ic_inserer_lien_inter_site,?ic_inserer_lien_inter_site)
CatchImage(#ic_supprimer_lien,?ic_supprimer_lien)
;CatchImage(#ic_,?ic_)
;CatchImage(#ic_,?ic_)
;}
pos=x
h_g=22
l_g=22
;{Bouton : nouveau,load,save
If Mid(menu$,1,1)="1"
ButtonImageGadget(#web_nouveau,pos,y,l_g,h_g,ImageID(#ic_nouveau))
pos=pos+l_g
ButtonImageGadget(#web_load,pos,y,l_g,h_g,ImageID(#ic_ouvrir))
pos=pos+l_g
;l_g=50
ButtonImageGadget(#web_save,pos,y,l_g,h_g,ImageID(#ic_sauver))
pos=pos+l_g+5
EndIf
;}
;{Bouton : couper coller
If Mid(menu$,2,1)="1"
ButtonImageGadget(#web_couper,pos,y,l_g,h_g,ImageID(#ic_couper));,#PB_Button_Toggle )
GadgetToolTip(#web_couper, "Couper")
pos=pos+l_g
ButtonImageGadget(#web_copier,pos,y,l_g,h_g,ImageID(#ic_copier));,#PB_Button_Toggle )
GadgetToolTip(#web_copier, "Copier")
pos=pos+l_g
;l_g=40
ButtonImageGadget(#web_coller,pos,y,l_g,h_g,ImageID(#ic_coller));,#PB_Button_Toggle )
GadgetToolTip(#web_coller , "Coller")
pos=pos+l_g+5
EndIf
;}
;{Bouton : annuler refaire
If Mid(menu$,3,1)="1"
ButtonImageGadget(#web_ctrl_z,pos,y,l_g,h_g,ImageID(#ic_ctrl_z));,#PB_Button_Toggle )
GadgetToolTip( #web_ctrl_z , "Annuler")
pos=pos+l_g
;l_g=40
ButtonImageGadget(#web_ctrl_y,pos,y,l_g,h_g,ImageID(#ic_ctrl_y));,#PB_Button_Toggle )
GadgetToolTip(#web_ctrl_y , "Refaire")
pos=pos+l_g+5
EndIf
;}
;{Bouton : alignement texte
If Mid(menu$,4,1)="1"
ButtonImageGadget(#web_alig_gauche,pos,y,l_g,h_g,ImageID(#ic_centrer_gauche));,#PB_Button_Toggle )
GadgetToolTip(#web_alig_gauche , "Aligner le texte à gauche")
pos=pos+l_g
;l_g=40
ButtonImageGadget(#web_alig_centre,pos,y,l_g,h_g,ImageID(#ic_centrer_milieu));,#PB_Button_Toggle )
GadgetToolTip( #web_alig_centre , "Aligner le texte au centre")
pos=pos+l_g
;l_g=40
ButtonImageGadget(#web_alig_droite,pos,y,l_g,h_g,ImageID(#ic_centrer_droite));,#PB_Button_Toggle )
GadgetToolTip(#web_alig_droite , "Aligner le texte à droite")
;l_g=45
pos=pos+l_g+5
EndIf
;}
;{Bouton : indentation du texte
If Mid(menu$,5,1)="1"
If pos+2*l_g+2>x+l
pos=x
y=y+22
EndIf
ButtonImageGadget(#web_decallage_gauche,pos,y,l_g,h_g,ImageID(#ic_decalage_gauche));,#PB_Button_Toggle )
GadgetToolTip(#web_decallage_gauche , "Décallage gauche du texte")
pos=pos+l_g
ButtonImageGadget(#web_decallage_droite,pos,y,l_g,h_g,ImageID(#ic_decalage_droite));,#PB_Button_Toggle )
GadgetToolTip( #web_decallage_droite , "Décallage droit du texte")
pos=pos+l_g+5
EndIf
;}
;{Bouton : liste police
If Mid(menu$,6,1)="1"
If pos+165>x+l
pos=x
y=y+22
EndIf
ComboBoxGadget(#web_liste_font,pos,y,160,300 )
AddGadgetItem(#web_liste_font,-1,"Arial")
AddGadgetItem(#web_liste_font,-1,"Arial Black")
AddGadgetItem(#web_liste_font,-1,"Comic Sans ms")
AddGadgetItem(#web_liste_font,-1,"Courier New")
AddGadgetItem(#web_liste_font,-1,"Georgia")
AddGadgetItem(#web_liste_font,-1,"Impact")
AddGadgetItem(#web_liste_font,-1,"Symbol")
AddGadgetItem(#web_liste_font,-1,"Times")
AddGadgetItem(#web_liste_font,-1,"Trebuchet MS")
AddGadgetItem(#web_liste_font,-1,"Verdana")
AddGadgetItem(#web_liste_font,-1,"Webdings")
pos=pos+165
EndIf
;}
;{Bouton : agrandire diminuer texte
If Mid(menu$,7,1)="1"
ButtonImageGadget(#web_text_moins,pos,y,l_g,h_g,ImageID(#ic_taille_moins))
GadgetToolTip(#web_text_moins , "Diminuer la taille des caractère")
pos=pos+l_g
ButtonImageGadget(#web_text_plus,pos,y,l_g,h_g,ImageID(#ic_taille_plus))
GadgetToolTip(#web_text_plus , "Augnmenter la taille des caractère")
pos=pos+l_g+5
EndIf
;}
;{Bouton : gras italique
If Mid(menu$,8,1)="1"
;l_g=20
If pos+4*l_g>x+l
pos=x
y=y+22
EndIf
ButtonImageGadget(#web_gras,pos,y,l_g,h_g,ImageID(#ic_gras));,#PB_Button_Toggle )
GadgetToolTip(#web_gras , "Texte en gras")
pos=pos+l_g
ButtonImageGadget(#web_italique,pos,y,l_g,h_g,ImageID(#ic_italique));,#PB_Button_Toggle )
GadgetToolTip( #web_italique , "Texte en italique")
; pos=pos+l_g
; ButtonImageGadget(#web_surligner,pos,y,l_g,h_g,ImageID(#ic_souligner));,#PB_Button_Toggle )
; GadgetToolTip(#web_surligner , "Texte souligné")
; pos=pos+l_g
; ButtonImageGadget(#web_barrer,pos,y,l_g,h_g,ImageID(#ic_barrer));,#PB_Button_Toggle )
; GadgetToolTip( #web_barrer , "Texte barré")
pos=pos+l_g+5
EndIf
;}
;{Bouton : couleur texte
If Mid(menu$,9,1)="1"
If pos+3*l_g+20>x+l
pos=x
y=y+22
EndIf
ButtonImageGadget(#web_couleur_texte,pos,y,l_g,h_g,ImageID(#ic_couleur_texte));,#PB_Button_Toggle )
GadgetToolTip( #web_couleur_texte , "Changer la couleur du texte")
pos=pos+l_g
ButtonImageGadget(#web_couleur_texte_choix,pos,y,10,h_g,ImageID(#ic_choix));,#PB_Button_Toggle )
GadgetToolTip( #web_couleur_texte_choix , "Choisir la couleur du texte")
pos=pos+10+3
ButtonImageGadget(#web_couleur_surligne,pos,y,l_g,h_g,ImageID(#ic_surligne));,#PB_Button_Toggle )
GadgetToolTip( #web_couleur_surligne , "Surligner la selection")
pos=pos+l_g
ButtonImageGadget(#web_couleur_surligne_choix,pos,y,10,h_g,ImageID(#ic_choix));,#PB_Button_Toggle )
GadgetToolTip( #web_couleur_surligne_choix , "Choisir la couleur de surlignage")
pos=pos+10
ButtonImageGadget(#web_couleur_desurligne,pos,y,l_g,h_g,ImageID(#ic_desurligne));,#PB_Button_Toggle )
GadgetToolTip( #web_couleur_desurligne , "Retirer le surlignage")
pos=pos+l_g+5
EndIf
;}
;{Bouton : inserer image
If Mid(menu$,10,1)="1"
If pos+3*l_g+2>x+l
pos=x
y=y+22
EndIf
ButtonImageGadget(#web_inserer_image,pos,y,l_g,h_g,ImageID(#ic_inserer_image));,#PB_Button_Toggle )
GadgetToolTip( #web_inserer_image, "Inserer une image")
pos=pos+l_g+2
ButtonImageGadget(#web_inserer_image_gauche,pos,y,l_g,h_g,ImageID(#ic_inserer_image_gauche));,#PB_Button_Toggle )
GadgetToolTip( #web_inserer_image_gauche, "Inserer une image à gauche avec habillage de texte")
pos=pos+l_g
ButtonImageGadget(#web_inserer_image_droite,pos,y,l_g,h_g,ImageID(#ic_inserer_image_droite));,#PB_Button_Toggle )
GadgetToolTip( #web_inserer_image_droite, "Inserer une image à droite avec habillage de texte")
pos=pos+l_g+5
EndIf
;}
;{Bouton : inserer lien
If Mid(menu$,11,1)="1"
If pos+2*l_g+2>x+l
pos=x
y=y+22
EndIf
If FileSize(repertoire_site$+"liste_pages.txt")>0
ButtonImageGadget(#web_inserer_lien_inter_site,pos,y,l_g,h_g,ImageID(#ic_inserer_lien_inter_site));,#PB_Button_Toggle )
GadgetToolTip( #web_inserer_lien_inter_site, "Inserer un lien à une page du site")
pos=pos+l_g+2
EndIf
ButtonImageGadget(#web_inserer_lien,pos,y,l_g,h_g,ImageID(#ic_inserer_lien));,#PB_Button_Toggle )
GadgetToolTip( #web_inserer_lien, "Inserer un lien")
pos=pos+l_g+2
ButtonImageGadget(#web_supprimer_lien,pos,y,l_g,h_g,ImageID(#ic_supprimer_lien));,#PB_Button_Toggle )
GadgetToolTip( #web_supprimer_lien, "Supprimer le lien")
pos=pos+l_g+5
EndIf
;}
WebGadgetHandle = WebGadget(#web_ID,x,y+26,l,h-(y-yd)-15,"file://"+nom_fichier_web$)
hHook = SetWindowsHookEx_(#WH_MOUSE, @DisableWebGadgetRightClick(), GetModuleHandle_(0), GetWindowThreadProcessId_(WindowID(id_window),0))
;
SendMessage_(GadgetID(#web_ID), #EM_SETTARGETDEVICE, #Null, 0) ;retour à la ligne automatique
SetIconeCouleurFond(couleur_fond_texte)
SetIconeCouleurTexte(Couleur_texte)
raccourci_clavier(id_window)
;-Nouveau_notepad(#web_ID)
;-If IsGadget(#web_liste_font)
;-list_font(GetActiveWindow(),#web_liste_font)
;-EndIf
couleur_fond_texte=$34D330
SetIconeCouleurFond(couleur_fond_texte)
Couleur_texte=$2E41E9
SetIconeCouleurTexte(Couleur_texte)
ouvrir_canal_web_gadget()
EndProcedure
Procedure evenement_webgadget(id_window,event )
Select event
Case #WM_KEYDOWN ;{touche clavier
;}
Case #PB_Event_Gadget;{ *****************Choix d'un bouton
Select EventGadget()
;{-Commande OK
;Browser\ExecWB(#olecmdid_saveas, #OLECMDEXECOPT_PROMPTUSER, 0, 0)
;Browser\ExecWB(#olecmdid_printpreview, #OLECMDEXECOPT_PROMPTUSER, 0, 0)
;Browser\ExecWB(#olecmdid_pagesetup, #OLECMDEXECOPT_PROMPTUSER, 0, 0)
;Browser\ExecWB(#olecmdid_selectall, #OLECMDEXECOPT_PROMPTUSER, 0, 0)
;}
Case #web_inserer_lien;{
Success.VARIANT
Command.VARIANT
Command\vt = #VT_BSTR
Command\bstrVal = StringToBStr("http://www.cpur.fr");"CreateLink")
Document\execCommand("CreateLink", 1, @Command , @Success)
Debug Success
;}
Case #web_supprimer_lien;{
Success.VARIANT
Command.VARIANT
Command\vt = #VT_BSTR
Command\bstrVal = 0
Document\execCommand("Unlink", 0, @Command , @Success)
Debug Success
;}
Case #web_inserer_image_gauche;{
inserer_image("gauche")
;}
Case #web_inserer_image;{
inserer_image("centrer")
;}
Case #web_inserer_image_droite;{
inserer_image("droite")
;}
Case #web_couper ;{
;debug "ikikik"
;Document\queryCommandState("Cut", @vb)
;CmdTarget\Exec(?CGID_MSHTML, #olecmdid_cut ,#OLECMDEXECOPT_DONTPROMPTUSER , 0,0)
;Browser\ExecWB(#olecmdid_paste, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
Browser\ExecWB(#olecmdid_cut, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
;CmdTarget\Exec(?CGID_MSHTML, #idm_cut ,#OLECMDEXECOPT_DONTPROMPTUSER, 0,0)
;}
Case #web_copier;{
Browser\ExecWB(#olecmdid_copy, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
;}
Case #web_coller;{
Browser\ExecWB(#olecmdid_paste, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
;CmdTarget\Exec(?CGID_MSHTML, #olecmdid_paste ,#OLECMDEXECOPT_DONTPROMPTUSER, 0,0)
;}
Case #web_ctrl_z;{
Browser\ExecWB(#olecmdid_undo, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
;}
Case #web_ctrl_y;{
Browser\ExecWB(#olecmdid_redo, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
;}
Case #web_couleur_desurligne;{
Cl.VARIANT
Cl\vt = 0;#VT_BSTR
Cl\bstrVal = -1
CmdTarget\Exec(?CGID_MSHTML, #idm_backcolor,#OLECMDEXECOPT_DONTPROMPTUSER, @Cl,0)
SysFreeString_(Cl_bstr)
;}
Case #web_couleur_surligne;{
Cl.VARIANT
Cl\vt = 3;#VT_BSTR
Cl\bstrVal = couleur_fond_texte ; ABGR Cl_bstr
CmdTarget\Exec(?CGID_MSHTML, #idm_backcolor,#OLECMDEXECOPT_DONTPROMPTUSER, @Cl, 0)
SysFreeString_(Cl_bstr)
;}
Case #web_couleur_texte;{
Cl.VARIANT
Cl\vt = 3;#VT_BSTR
Cl\bstrVal = Couleur_texte ; ABGR Cl_bstr
CmdTarget\Exec(?CGID_MSHTML, #idm_forecolor,#OLECMDEXECOPT_DONTPROMPTUSER, @Cl, 0)
SysFreeString_(Cl_bstr)
;}
Case #web_couleur_surligne_choix;{
couleur_fond_texte=ColorRequester(couleur_fond_texte)
SetIconeCouleurFond(couleur_fond_texte)
Cl.VARIANT
Cl\vt = 3;#VT_BSTR
Cl\bstrVal = couleur_fond_texte ; ABGR Cl_bstr
CmdTarget\Exec(?CGID_MSHTML, #idm_backcolor,#OLECMDEXECOPT_DONTPROMPTUSER, @Cl, 0)
SysFreeString_(Cl_bstr)
;}
Case #web_couleur_texte_choix;{
Couleur_texte=ColorRequester(Couleur_texte)
SetIconeCouleurTexte(Couleur_texte)
Cl.VARIANT
Cl\vt = 3;#VT_BSTR
Cl\bstrVal = Couleur_texte ; ABGR Cl_bstr
CmdTarget\Exec(?CGID_MSHTML, #idm_forecolor,#OLECMDEXECOPT_DONTPROMPTUSER, @Cl, 0)
SysFreeString_(Cl_bstr)
;}
Case #web_ID ;{
;;debug "c"
;;debug EventType()
;;debug EventlParam()
;;debug EventwParam()
;}
Case #web_nouveau ;{
;}
Case #web_load;{
Debug "load"
;fermer_canal_web_gadget()
Browser\ExecWB(#olecmdid_open, #OLECMDEXECOPT_PROMPTUSER, 0, 0)
;}
Case #web_save;{
Browser\ExecWB(#olecmdid_save, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
;}
Case #web_zoom_moins;{
;debug "zoom"
;debug zoom
zoom=zoom-2
lRet=SendMessage_(GadgetID(#web_ID),#EM_SETZOOM,zoom,10)
;debug zoom
;}
Case #web_zoom_plus;{
zoom=zoom+2
;debug zoom
lRet=SendMessage_(GadgetID(#web_ID),#EM_SETZOOM,zoom,10)
;}
Case #web_alig_gauche;{
CmdTarget\Exec(?CGID_MSHTML, #idm_justifyleft,#OLECMDEXECOPT_DONTPROMPTUSER , 0, 0)
;}
Case #web_alig_centre;{
CmdTarget\Exec(?CGID_MSHTML, #idm_justifycenter,#OLECMDEXECOPT_DONTPROMPTUSER, @Cl, 0)
;}
Case #web_alig_droite;{
CmdTarget\Exec(?CGID_MSHTML, #idm_justifyright,#OLECMDEXECOPT_DONTPROMPTUSER, @Cl, 0)
;}
Case #web_text_moins ;{
Cl.VARIANT
CmdTarget\Exec(?CGID_MSHTML, #olecmdid_zoom,#OLECMDEXECOPT_DONTPROMPTUSER, 0,@Cl)
Cl\bstrVal-1
If Cl\bstrVal<1 : Cl\bstrVal=1 : EndIf
CmdTarget\Exec(?CGID_MSHTML, #olecmdid_zoom,#OLECMDEXECOPT_DONTPROMPTUSER, @Cl,0)
SysFreeString_(Cl_bstr)
;}
Case #web_text_plus;{
Cl.VARIANT
CmdTarget\Exec(?CGID_MSHTML, #olecmdid_zoom,#OLECMDEXECOPT_DONTPROMPTUSER, 0,@Cl)
Cl\bstrVal+1
If Cl\bstrVal>7 : Cl\bstrVal=7 : EndIf
CmdTarget\Exec(?CGID_MSHTML, #olecmdid_zoom,#OLECMDEXECOPT_DONTPROMPTUSER, @Cl,0)
SysFreeString_(Cl_bstr)
;}
Case #web_gras;{
CmdTarget\Exec(?CGID_MSHTML, #idm_bold,#OLECMDEXECOPT_DONTPROMPTUSER , 0, 0)
;}
Case #web_italique;{
CmdTarget\Exec(?CGID_MSHTML, #idm_italic,#OLECMDEXECOPT_DONTPROMPTUSER , 0, 0)
;}
Case #web_surligner;{ certainement sous ligner !
;debug "ok"
CmdTarget\Exec(?CGID_MSHTML, #idm_backcolor,#OLECMDEXECOPT_DONTPROMPTUSER , 0, 0)
;}
Case #web_liste_font ;{
Select EventType()
Case 1
If GetGadgetText(#web_liste_font)<>""
Success.VARIANT
Success\vt = #VT_BSTR
Command.VARIANT
Command\vt = #VT_BSTR
Command\bstrVal = StringToBStr(GetGadgetText(#web_liste_font))
Document\execCommand("FontName", 0, @Command , @Success)
EndIf
EndSelect
;}
Case #web_decallage_droite ;{
Debug "outdent"
Success.VARIANT
Command.VARIANT
Command\vt = #VT_BSTR
Command\bstrVal = 0
Document\execCommand("Indent", 0, @Command , @Success)
;}
Case #web_decallage_gauche;{
Debug "indent"
Success.VARIANT
Command.VARIANT
Command\vt = #VT_BSTR
Command\bstrVal = 0
Document\execCommand("Outdent", 0,@Command , @Success)
;}
EndSelect
;}
Case #PB_Event_Menu ;{
Select EventMenu()
Case #web_couper;{
Browser\ExecWB(#olecmdid_cut, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
;}
Case #web_copier;{
Browser\ExecWB(#olecmdid_copy, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
;}
Case #web_coller;{
Browser\ExecWB(#olecmdid_paste, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
;}
Case #web_selection_tout;{
Browser\ExecWB(#idm_delete, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
;}
Case #web_ctrl_z;{
Browser\ExecWB(#olecmdid_undo, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
;}
Case #web_ctrl_y;{
Browser\ExecWB(#olecmdid_redo, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
;}
Case #web_save;{
save_web_gadget()
;}
Case #web_delete;{
;debug "dele"
Browser\ExecWB(#olecmdid_delete, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
;}
EndSelect
;}
EndSelect
EndProcedure
;{- Code de Test
nom_fichier_web$="F:\Informatique\03_notepad\page_test.html"
If FileSize(nom_fichier_web$)=-1
CreateFile(0,nom_fichier_web$)
CloseFile(0)
EndIf
id_web_gadget=20
OpenWindow(0,0,0,900,600,"Web gadget Editeur",#PB_Window_SystemMenu )
CreateGadgetList(WindowID(0))
CreateWebGadgetEditor(0,20,10,870,500,"11111111111")
Repeat
event=WaitWindowEvent()
evenement_webgadget(0,event )
Select event
Case #WM_KEYDOWN ;touche clavier
;debug "Appuye touche "+Str(EventwParam())
id_touche=EventwParam()
Select id_touche
Case 117
EndSelect
EndSelect
Until event=#WM_CLOSE
fermer_canal_web_gadget()
;}