protected override SciterXDef.LoadResult OnLoadData(SciterXDef.SCN_LOAD_DATA sld) { if (sld.uri.StartsWith("svg:")) { if (sld.uri.Contains("?rnd=")) { sld.uri = sld.uri.Split('?')[0]; } int length = sld.uri.Length - 8; string hash = sld.uri.Substring(4, length); var icn = Joiner._iconsByHash[hash]; switch (icn.kind) { case EIconKind.COLLECTION: try { byte[] bytess = File.ReadAllBytes(icn.path); _api.SciterDataReady(sld.hwnd, sld.uri, bytess, (uint)bytess.Length); } catch (Exception) { } break; case EIconKind.LIBRARY: string xml = SvgXML.FromIcon(icn).ToXML(); byte[] bytes = Encoding.UTF8.GetBytes(xml); _api.SciterDataReady(sld.hwnd, sld.uri, bytes, (uint)bytes.Length); break; } return(SciterXDef.LoadResult.LOAD_OK); } return(base.OnLoadData(sld)); }
protected override SciterXDef.LoadResult OnLoadData(SciterXDef.SCN_LOAD_DATA sld) { if (sld.uri.StartsWith("sciter:debug-peer.tis")) { return(SciterXDef.LoadResult.LOAD_OK); } return(base.OnLoadData(sld)); }
protected override SciterXDef.LoadResult OnLoadData(SciterXDef.SCN_LOAD_DATA sld) { string url = sld.uri; bool is_internal = State.g_el_root == null || sld.principal == State.g_el_root._he || sld.principal == State.g_el_homeroot._he || #if DEBUG url.StartsWith(BaseHost._rescwd) || #endif url.StartsWith("archive://app/"); #if DEBUG bool bOK = true; //Debug.Assert(!is_internal || url.EndsWith("html") || url.EndsWith("tis")); #else bool bOK = State.page_loaded && !is_internal; #endif if (bOK && url.Length != 0) { SciterElement el_pr = sld.principal != IntPtr.Zero ? new SciterElement(sld.principal) : null; SciterElement el_in = sld.initiator != IntPtr.Zero ? new SciterElement(sld.initiator) : null; SciterValue sv = new SciterValue(); sv["url"] = new SciterValue(url); if (el_pr != null) { sv["principal"] = el_pr.ExpandoValue; } if (el_in != null) { sv["initiator"] = el_in.ExpandoValue; } sv["dataType"] = new SciterValue((int)sld.dataType); ResourceLoad resource = new ResourceLoad() { sw = new Stopwatch(), is_internal = is_internal }; resource.sw.Start(); if (!is_internal) { var sv_idx = App.AppHost.CallFunction("Extern_NetworkNewResource", sv); resource.index = sv_idx.Get(-1); } _loading_resources[url] = resource; //bool is_page_source = el_pr.is_child_of(State.g_el_frameroot); //if(is_page_source) } return(base.OnLoadData(sld)); }
// Overridables protected virtual SciterXDef.LoadResult OnLoadData(SciterXDef.SCN_LOAD_DATA sld) { // Do default loading of lib_console if (_lc_files.ContainsKey(sld.uri)) { Debug.Assert(_hwnd != IntPtr.Zero, "Call SciterHost.SetupWindow() first"); _api.SciterDataReady(_hwnd, sld.uri, _lc_files[sld.uri], (uint)_lc_files[sld.uri].Length); } return((uint)SciterXDef.LoadResult.LOAD_OK); }
protected override SciterXDef.LoadResult OnLoadData(SciterXDef.SCN_LOAD_DATA sld) { if (sld.uri.StartsWith("archive://app/")) { // load resource from SciterArchive string path = sld.uri.Substring(14); byte[] data = _archive.Get(path); if (data != null) { _api.SciterDataReady(_wnd._hwnd, sld.uri, data, (uint)data.Length); } } return(base.OnLoadData(sld)); }
// Overridables protected virtual SciterXDef.LoadResult OnLoadData(SciterXDef.SCN_LOAD_DATA sld) { Debug.Assert(_hwnd != IntPtr.Zero, "Call SciterHost.SetupWindow() first"); if (InjectLibConsole && sld.uri.StartsWith("scitersharp:")) { var data = _arch.Get(sld.uri.Substring("scitersharp:".Length)); if (data != null) { _api.SciterDataReady(_hwnd, sld.uri, data, (uint)data.Length); } } return((uint)SciterXDef.LoadResult.LOAD_OK); }
protected override SciterXDef.LoadResult OnLoadData(SciterXDef.SCN_LOAD_DATA sld) { if (sld.uri.StartsWith("archive://app/")) { string path = sld.uri.Substring(14); byte[] data = archive.Get(path); if (data != null) { SciterX.API.SciterDataReady(window._hwnd, sld.uri, data, (uint)data.Length); } } return(base.OnLoadData(sld)); }
protected override SciterXDef.LoadResult OnLoadData(SciterXDef.SCN_LOAD_DATA sld) { SciterRequest rq = new SciterRequest(sld.requestId); string r1 = rq.Url; string r2 = rq.ContentUrl; var r3 = rq.RequestedType; if (sld.uri.StartsWith("archive://app/")) { // load resource from SciterArchive string path = sld.uri.Substring(14); byte[] data = _archive.Get(path); if (data != null) { _api.SciterDataReady(_wnd._hwnd, sld.uri, data, (uint)data.Length); } } return(SciterXDef.LoadResult.LOAD_OK); }
// Overridables protected virtual SciterXDef.LoadResult OnLoadData(SciterXDef.SCN_LOAD_DATA sld) { if (InjectLibConsole) { Debug.Assert(_hwnd != IntPtr.Zero, "Call SciterHost.SetupWindow() first"); // Do default loading of lib_console if (_lc_files.ContainsKey(sld.uri)) { if (InjectLibConsoleDebugPeer == false && sld.uri == "sciter:debug-peer.tis") { _api.SciterDataReady(_hwnd, sld.uri, _lc_files["sciter:console.tis"], (uint)_lc_files["sciter:console.tis"].Length); } else { _api.SciterDataReady(_hwnd, sld.uri, _lc_files[sld.uri], (uint)_lc_files[sld.uri].Length); } } } return((uint)SciterXDef.LoadResult.LOAD_OK); }
protected override SciterXDef.LoadResult OnLoadData(SciterXDef.SCN_LOAD_DATA sld) { #if WINDOWS // Go figure //State.AppWindow.Icon = Properties.Resources.IconMain; _wnd.Icon = Properties.Resources.IconMain; PInvoke.User32.SendMessage(_wnd._hwnd, PInvoke.User32.WindowMessage.WM_SETICON, IntPtr.Zero, new Icon(Properties.Resources.IconMain, 16, 16).Handle); #endif if (sld.uri.StartsWith("archive://app/")) { // load resource from SciterArchive string path = sld.uri.Substring(14); byte[] data = _archive.Get(path); if (data != null) { _api.SciterDataReady(_wnd._hwnd, sld.uri, data, (uint)data.Length); } } return(base.OnLoadData(sld)); }
protected override SciterXDef.LoadResult OnLoadData(SciterXDef.SCN_LOAD_DATA sld) { #if DEBUG if (sld.uri.StartsWith("file://")) { Debug.Assert(File.Exists(sld.uri.Substring(7))); } #endif if (sld.uri.StartsWith("archive://app/")) { // load resource from SciterArchive string path = sld.uri.Substring(14); byte[] data = _archive.Get(path); if (data != null) { _api.SciterDataReady(sld.hwnd, sld.uri, data, (uint)data.Length); } } // call base to ensure LibConsole is loaded return(base.OnLoadData(sld)); }
protected override SciterXDef.LoadResult OnLoadData(SciterXDef.SCN_LOAD_DATA sld) { if (sld.uri.StartsWith("tmp:tmp.svg")) { var icn = Joiner._iconsByHash.ToList()[1200].Value; var path = SvgParser.FromPath(icn.arr_svgpath[0]); //path.NormalizeToSize(100); string xml = SvgXML.FromSvgParser(path).ToXML(); byte[] bytes = Encoding.UTF8.GetBytes(xml); _api.SciterDataReady(sld.hwnd, sld.uri, bytes, (uint)bytes.Length); return(SciterXDef.LoadResult.LOAD_OK); } else if (sld.uri.StartsWith("svg:")) { if (sld.uri.Contains("?rnd=")) { sld.uri = sld.uri.Split('?')[0]; } int length = sld.uri.Length - 8; string hash = sld.uri.Substring(4, length); var icn = Joiner._iconsByHash[hash]; switch (icn.kind) { case EIconKind.COLLECTION: try { byte[] bytess = File.ReadAllBytes(icn.path); _api.SciterDataReady(sld.hwnd, sld.uri, bytess, (uint)bytess.Length); } catch (Exception) { } break; case EIconKind.LIBRARY: string xml = SvgXML.FromIcon(icn).ToXML(); byte[] bytes = Encoding.UTF8.GetBytes(xml); _api.SciterDataReady(sld.hwnd, sld.uri, bytes, (uint)bytes.Length); break; case EIconKind.STORE: if (Store.IsIconLoaded(icn)) { byte[] bytess = File.ReadAllBytes(icn.path); _api.SciterDataReady(sld.hwnd, sld.uri, bytess, (uint)bytess.Length); return(SciterXDef.LoadResult.LOAD_OK); } else { Store.LoadIcon(icn).ContinueWith((t) => { if (t.Status == TaskStatus.RanToCompletion) { byte[] bytess = File.ReadAllBytes(icn.path); _api.SciterDataReadyAsync(sld.hwnd, sld.uri, bytess, (uint)bytess.Length, sld.requestId); } }); return(SciterXDef.LoadResult.LOAD_DELAYED); } } return(SciterXDef.LoadResult.LOAD_OK); } return(base.OnLoadData(sld)); }
// Notification handler private uint HandleNotification(IntPtr ptrNotification, IntPtr callbackParam) { SciterXDef.SCITER_CALLBACK_NOTIFICATION scn = (SciterXDef.SCITER_CALLBACK_NOTIFICATION)Marshal.PtrToStructure(ptrNotification, typeof(SciterXDef.SCITER_CALLBACK_NOTIFICATION)); switch (scn.code) { case SciterXDef.SC_LOAD_DATA: SciterXDef.SCN_LOAD_DATA sld = (SciterXDef.SCN_LOAD_DATA)Marshal.PtrToStructure(ptrNotification, typeof(SciterXDef.SCN_LOAD_DATA)); return((uint)OnLoadData(sld)); case SciterXDef.SC_DATA_LOADED: SciterXDef.SCN_DATA_LOADED sdl = (SciterXDef.SCN_DATA_LOADED)Marshal.PtrToStructure(ptrNotification, typeof(SciterXDef.SCN_DATA_LOADED)); OnDataLoaded(sdl); return(0); case SciterXDef.SC_ATTACH_BEHAVIOR: SciterXDef.SCN_ATTACH_BEHAVIOR sab = (SciterXDef.SCN_ATTACH_BEHAVIOR)Marshal.PtrToStructure(ptrNotification, typeof(SciterXDef.SCN_ATTACH_BEHAVIOR)); SciterEventHandler elementEvh; bool res = OnAttachBehavior(new SciterElement(sab.elem), Marshal.PtrToStringAnsi(sab.behaviorName), out elementEvh); if (res) { SciterXBehaviors.FPTR_ElementEventProc proc = elementEvh._proc; IntPtr ptrProc = Marshal.GetFunctionPointerForDelegate(proc); IntPtr EVENTPROC_OFFSET = Marshal.OffsetOf(typeof(SciterXDef.SCN_ATTACH_BEHAVIOR), "elementProc"); IntPtr EVENTPROC_OFFSET2 = Marshal.OffsetOf(typeof(SciterXDef.SCN_ATTACH_BEHAVIOR), "elementTag"); Marshal.WriteIntPtr(ptrNotification, EVENTPROC_OFFSET.ToInt32(), ptrProc); Marshal.WriteInt32(ptrNotification, EVENTPROC_OFFSET2.ToInt32(), 1234); return(1); } return(0); case SciterXDef.SC_ENGINE_DESTROYED: if (_window_evh != null) { _api.SciterWindowDetachEventHandler(_hwnd, _window_evh._proc, IntPtr.Zero); _window_evh = null; } OnEngineDestroyed(); return(0); case SciterXDef.SC_POSTED_NOTIFICATION: SciterXDef.SCN_POSTED_NOTIFICATION spn = (SciterXDef.SCN_POSTED_NOTIFICATION)Marshal.PtrToStructure(ptrNotification, typeof(SciterXDef.SCN_POSTED_NOTIFICATION)); IntPtr lreturn = IntPtr.Zero; if (spn.wparam.ToInt32() == INVOKE_NOTIFICATION) { GCHandle handle = GCHandle.FromIntPtr(spn.lparam); Action cbk = (Action)handle.Target; cbk(); handle.Free(); } else { lreturn = OnPostedNotification(spn.wparam, spn.lparam); } IntPtr OFFSET_LRESULT = Marshal.OffsetOf(typeof(SciterXDef.SCN_POSTED_NOTIFICATION), "lreturn"); Marshal.WriteIntPtr(ptrNotification, OFFSET_LRESULT.ToInt32(), lreturn); return(0); case SciterXDef.SC_GRAPHICS_CRITICAL_FAILURE: SciterXDef.SCN_GRAPHICS_CRITICAL_FAILURE cgf = (SciterXDef.SCN_GRAPHICS_CRITICAL_FAILURE)Marshal.PtrToStructure(ptrNotification, typeof(SciterXDef.SCN_GRAPHICS_CRITICAL_FAILURE)); OnGraphicsCriticalFailure(cgf.hwnd); return(0); default: Debug.Assert(false); break; } return(0); }
// Overridables protected virtual SciterXDef.LoadResult OnLoadData(SciterXDef.SCN_LOAD_DATA sld) { return(SciterXDef.LoadResult.LOAD_OK); }