VGUI HTML Screen In Multiplayer/EntHTML.h
Jump to navigation
Jump to search
See also: VGUI HTML Screen In Multiplayer/EntHTML.cpp
This article has no links to other VDC articles. Please help improve this article by adding links that are relevant to the context within the existing text.
January 2024
January 2024
//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: Creates a EntHTML control // // $NoKeywords: $ //=============================================================================// #ifndef ENTHTML_H #define ENTHTML_H #ifdef _WIN32 #pragma once #endif #include <vgui/VGUI.h> #include <vgui/IHTML.h> #include <vgui/IImage.h> #include <vgui_controls/Panel.h> #include <vgui_controls/PHandle.h> namespace vgui { //----------------------------------------------------------------------------- // Purpose: Control to display EntHTML content // This control utilises a hidden IE window to render a EntHTML page for you. // It can load any valid URL (i.e local files or web pages), you cannot dynamically change the // content however (internally to the control that is). //----------------------------------------------------------------------------- class EntHTML: public Panel, public IHTMLEvents { DECLARE_CLASS_SIMPLE( EntHTML, Panel ); public: EntHTML(Panel *parent,const char *name, bool allowJavaScript = false); ~EntHTML(); // start and stop the EntHTML control repainting itself periodically void StartAnimate(int time); void StopAnimate(); // IHTML pass through functions virtual void OpenURL(const char *URL, bool force = false); // force means ignore the offline mod override virtual bool StopLoading(); virtual bool Refresh(); virtual void Clear(); virtual void AddText(const char *text); virtual void SetVisible( bool state ); virtual void OnMove(); // configuration virtual void SetScrollbarsEnabled(bool state); virtual void SetContextMenuEnabled(bool state); virtual void NewWindowsOnly( bool state ); // events callbacks // Called when the control wishes to go to a new URL (either through the OpenURL() method or internally triggered). // Return TRUE to allow it to continue and FALSE to stop it loading the URL. Target is the frame this page will load in virtual bool OnStartURL(const char *url, const char *target, bool first); // Called when a page has finished loading an is being render. If you derive from this make SURE to // call this method also (i.e call Baseclass::OnFinishURL(url) in your derived version). virtual void OnFinishURL(const char *url); // Called as a page is loading. Maximum is the total number of "tick" events in the progress count, // current is the current amount you are into the progress. This can be used to update another // on screen control to show that the browser is active. virtual void OnProgressURL(long current, long maximum); // Called when IE has some status text it wishes to display. You can use this to provide status information // in another control. virtual void OnSetStatusText(const char *text); virtual void OnUpdate(); virtual void OnLink(); virtual void OffLink(); // url handlers, lets you have web page links fire vgui events // use to have custom web page links, eg. "steam://open/subscriptionpage" // everything after the "://" is sent to the watcher in a message "CustomURL", "url", "protocol" virtual void AddCustomURLHandler(const char *customProtocolName, vgui::Panel *target); // overridden to paint our special web browser texture virtual void PaintBackground(); // pass messages to the texture component to tell it about resizes virtual void OnSizeChanged(int wide,int tall); // for animation task virtual void OnTick(); // pass mouse clicks through virtual void OnMousePressed(MouseCode code); virtual void OnMouseReleased(MouseCode code); virtual void OnCursorMoved(int x,int y); virtual void OnMouseDoublePressed(MouseCode code); virtual void OnKeyTyped(wchar_t unichar); virtual void OnKeyCodePressed(KeyCode code); virtual void PerformLayout(); virtual void OnMouseWheeled(int delta); protected: virtual void ApplySchemeSettings(IScheme *pScheme); private: virtual void BrowserResize(); virtual void CalcScrollBars(int w,int h); MESSAGE_FUNC( OnSliderMoved, "ScrollBarSliderMoved" ); IHTML *browser; // the interface to the browser itself vgui::Label *loading; IImage *picture; vgui::ScrollBar *_hbar,*_vbar; int m_iMouseX,m_iMouseY; // where the mouse is on the control long m_iNextFrameTime; // next time (in milliseconds) to repaint int m_iAnimTime; // the time between repaints (in milliseconds) int m_iScrollX,m_iScrollY; int m_iScrollBorderX,m_iScrollBorderY; bool m_bRegenerateHTMLBitmap; bool m_bScrollBarEnabled; bool m_bContextMenuEnabled; int m_iScrollbarSize; bool m_bNewWindowsOnly; bool m_bSetVisibleOnPerformLayout; struct CustomURLHandler_t { PHandle hPanel; char url[32]; }; CUtlVector<CustomURLHandler_t> m_CustomURLHandlers; }; } // namespace vgui #endif // HTML_H