Beispiel #1
0
        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));
        }
Beispiel #2
0
 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));
 }
Beispiel #3
0
        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));
        }
Beispiel #4
0
 // 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);
 }
Beispiel #5
0
 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));
 }
Beispiel #6
0
        // 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);
        }
Beispiel #7
0
        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));
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
 // 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);
 }
Beispiel #10
0
        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));
        }
Beispiel #11
0
        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));
        }
Beispiel #12
0
        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));
        }
Beispiel #13
0
        // 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);
        }
Beispiel #14
0
 // Overridables
 protected virtual SciterXDef.LoadResult OnLoadData(SciterXDef.SCN_LOAD_DATA sld)
 {
     return(SciterXDef.LoadResult.LOAD_OK);
 }