mirror of
https://github.com/wailsapp/wails.git
synced 2026-03-14 22:55:48 +01:00
Stubs in place to compile
This commit is contained in:
parent
852bbd148c
commit
e831bc75c6
9 changed files with 93 additions and 11 deletions
|
|
@ -1,13 +1,10 @@
|
|||
package features
|
||||
|
||||
// Features holds generic and platform specific feature flags
|
||||
type Features struct {
|
||||
Linux *Linux
|
||||
}
|
||||
|
||||
// New creates a new Features object
|
||||
func New() *Features {
|
||||
return &Features{
|
||||
Linux: &Linux{},
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,10 @@
|
|||
package features
|
||||
|
||||
// Linux holds linux specific feature flags
|
||||
type Linux struct {
|
||||
type Features struct {
|
||||
}
|
||||
|
||||
// New creates a new Features object
|
||||
func New() *Features {
|
||||
return &Features{
|
||||
}
|
||||
}
|
||||
|
|
|
|||
18
v2/internal/ffenestri/features_darwin.go
Normal file
18
v2/internal/ffenestri/features_darwin.go
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
package ffenestri
|
||||
|
||||
/*
|
||||
|
||||
#cgo darwin CFLAGS: -DFFENESTRI_DARWIN=1
|
||||
#cgo darwin LDFLAGS: -framework WebKit -lobjc
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "ffenestri.h"
|
||||
|
||||
|
||||
*/
|
||||
import "C"
|
||||
import "github.com/wailsapp/wails/v2/internal/features"
|
||||
|
||||
func (a *Application) processOSFeatureFlags(features *features.Features) {
|
||||
|
||||
}
|
||||
|
|
@ -21,7 +21,6 @@
|
|||
#define NSResizableWindowMask 8
|
||||
|
||||
// References to assets
|
||||
extern const unsigned char userhtml;
|
||||
extern const unsigned char *assets[];
|
||||
extern const unsigned char runtime;
|
||||
extern const char *icon[];
|
||||
|
|
@ -370,6 +369,22 @@ gboolean executeMethod(gpointer data) {
|
|||
}
|
||||
*/
|
||||
|
||||
// DisableFrame disables the window frame
|
||||
void DisableFrame(void *appPointer)
|
||||
{
|
||||
// TBD
|
||||
}
|
||||
|
||||
void SetMinWindowSize(void *appPointer, int minWidth, int minHeight)
|
||||
{
|
||||
// TBD
|
||||
}
|
||||
|
||||
void SetMaxWindowSize(void *appPointer, int maxWidth, int maxHeight)
|
||||
{
|
||||
// TBD
|
||||
}
|
||||
|
||||
void ExecJS(void *appPointer, char *js) {
|
||||
Debug("ExecJS Called: %s", js);
|
||||
struct Application *app = (struct Application*) appPointer;
|
||||
|
|
@ -711,7 +726,7 @@ void Run(void *applicationPointer, int argc, char **argv) {
|
|||
msg(mainWindow, s("makeKeyAndOrderFront:"), NULL);
|
||||
|
||||
// Load HTML
|
||||
id html = msg(c("NSURL"), s("URLWithString:"), msg(c("NSString"), s("stringWithUTF8String:"), &userhtml));
|
||||
id html = msg(c("NSURL"), s("URLWithString:"), msg(c("NSString"), s("stringWithUTF8String:"), assets[0]));
|
||||
Debug("HTML: %p", html);
|
||||
msg(wkwebview, s("loadRequest:"), msg(c("NSURLRequest"), s("requestWithURL:"), html));
|
||||
|
||||
|
|
@ -720,7 +735,7 @@ void Run(void *applicationPointer, int argc, char **argv) {
|
|||
Debug("Loading Internal Code");
|
||||
// We want to evaluate the internal code plus runtime before the assets
|
||||
const char *temp = concat(invoke, app->bindings);
|
||||
const char *internalCode = concat(temp, &runtime);
|
||||
const char *internalCode = concat(temp, (const char*)&runtime);
|
||||
Debug("Internal code: %s", internalCode);
|
||||
free((void*)temp);
|
||||
|
||||
|
|
|
|||
5
v2/internal/ffenestri/runtime.c
Normal file
5
v2/internal/ffenestri/runtime.c
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -160,9 +160,9 @@ func (a *AssetBundle) WriteToCFile(targetDir string) (string, error) {
|
|||
}
|
||||
|
||||
if assetVariables.Length() > 0 {
|
||||
cdata.WriteString(fmt.Sprintf("\nconst char *assets[] = { %s, 0x00 };", assetVariables.Join(", ")))
|
||||
cdata.WriteString(fmt.Sprintf("\nconst unsigned char *assets[] = { %s, 0x00 };", assetVariables.Join(", ")))
|
||||
} else {
|
||||
cdata.WriteString("\nconst char *assets[] = { 0x00 };")
|
||||
cdata.WriteString("\nconst unsigned char *assets[] = { 0x00 };")
|
||||
}
|
||||
|
||||
// Save file
|
||||
|
|
|
|||
1
v2/internal/runtime/assets/desktop.js
Normal file
1
v2/internal/runtime/assets/desktop.js
Normal file
|
|
@ -0,0 +1 @@
|
|||
var Wails=function(n){var e={};function t(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return n[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=n,t.c=e,t.d=function(n,e,r){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:r})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(r,o,function(e){return n[e]}.bind(null,o));return r},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){"use strict";t.r(e);var r={};t.r(r),t.d(r,"Debug",(function(){return s})),t.d(r,"Info",(function(){return d})),t.d(r,"Warning",(function(){return f})),t.d(r,"Error",(function(){return w})),t.d(r,"Fatal",(function(){return p}));var o={};t.r(o),t.d(o,"OpenURL",(function(){return y})),t.d(o,"OpenFile",(function(){return h}));var a={Platform:"darwin",AppType:"desktop"};var i=[];function c(n){i.push(n)}function u(n){if(function(n){window.webkit.messageHandlers.external.postMessage(n)}(n),i.length>0)for(var e=0;e<i.length;e++)i[e](n)}function l(n,e){u("L"+n+e)}function s(n){l("D",n)}function d(n){l("I",n)}function f(n){l("W",n)}function w(n){l("E",n)}function p(n){l("F",n)}var v,b={};function g(n,e,t){return null!=t&&null!=t||(t=0),new Promise((function(r,o){var a;do{a=n+"-"+v()}while(b[a]);if(t>0)var i=setTimeout((function(){o(Error("Call to "+n+" timed out. Request ID: "+a))}),t);b[a]={timeoutHandle:i,reject:o,resolve:r};try{var c={name:n,args:e,callbackID:a};u("C"+JSON.stringify(c))}catch(n){console.error(n)}}))}function m(n){var e;try{e=JSON.parse(n)}catch(e){var t="Invalid JSON passed to callback: ".concat(e.message,". Message: ").concat(n);throw s(t),new Error(t)}var r=e.callbackid,o=b[r];if(!o){var a="Callback '".concat(r,"' not registered!!!");throw console.error(a),new Error(a)}clearTimeout(o.timeoutHandle),delete b[r],e.error?o.reject(e.error):o.resolve(e.result)}function y(n){return u("RBU"+n)}function h(n){return u("runtime:browser:openfile")}v=window.crypto?function(){var n=new Uint32Array(1);return window.crypto.getRandomValues(n)[0]}:function(){return 9007199254740991*Math.random()},window.backend={};var k=function n(e,t){!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=t||-1,this.Callback=function(n){return e.apply(null,n),-1!==t&&0===(t-=1)}},E={};function O(n,e,t){E[n]=E[n]||[];var r=new k(e,t);console.log("Pushing event listener: "+n),E[n].push(r)}function S(n,e){O(n,e)}function j(n){var e;try{e=JSON.parse(n)}catch(e){throw new w("Invalid JSON passed to Notify: "+n)}var t=e.name;if(E[t]){for(var r=E[t].slice(),o=0;o<E[t].length;o+=1){var a=E[t][o],i=e.data;a.Callback(i)&&r.splice(o,1)}E[t]=r}}function C(n){if(arguments.length>1){var e={name:n,data:[].slice.apply(arguments).slice(1)};u("Ej"+JSON.stringify(e))}else u("ej"+n)}var I={};function N(n,e,t){var r=null;I[n]=function(){clearInterval(r),t()},r=setInterval((function(){C(n)}),e)}function T(n){if(!I[n])throw new w("Cannot acknowledge unknown heartbeat '".concat(n,"'"));I[n]()}function x(n,e){var t=document.createElement("script");t.text=n,document.body.appendChild(t),e&&C(e)}function M(n){try{var e=document.createElement("style");e.setAttribute("type","text/css"),e.styleSheet?e.styleSheet.cssText=n:e.appendChild(document.createTextNode(n)),(document.head||document.getElementsByTagName("head")[0]).appendChild(e)}catch(n){console.log(n)}}window.onerror=function(){window.wails.Log.Error((new Error).stack)},function n(){window.backend={},window.wails={System:a,Log:r,Browser:o,Events:{On:S,OnMultiple:O,Emit:C,Heartbeat:N,Acknowledge:T},_:{Callback:m,Notify:j,AddScript:x,InjectCSS:M,Init:n,AddIPCListener:c}},window.addEventListener("mousedown",(function(n){for(var e=n.target;null!=e&&!e.hasAttribute("data-wails-no-drag");){if(e.hasAttribute("data-wails-drag")){window.webkit.messageHandlers.windowDrag.postMessage(null);break}e=e.parentElement}}))}(),window.wailsbindings&&function(n){try{n=JSON.parse(n)}catch(n){console.error(n)}window.backend=window.backend||{},Object.keys(n).forEach((function(e){window.backend[e]=window.backend[e]||{},Object.keys(n[e]).forEach((function(t){window.backend[e][t]=window.backend[e][t]||{},Object.keys(n[e][t]).forEach((function(n){window.backend[e][t][n]=function(){var r=0;function o(){var o=[].slice.call(arguments);return g([e,t,n].join("."),o,r)}return o.setTimeout=function(n){r=n},o.getTimeout=function(){return r},o}()}))}))}))}(window.wailsbindings),window.wails.Events.Emit("wails:loaded")}]);
|
||||
41
v2/internal/runtime/js/desktop/darwin.js
Normal file
41
v2/internal/runtime/js/desktop/darwin.js
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
_ __ _ __
|
||||
| | / /___ _(_) /____
|
||||
| | /| / / __ `/ / / ___/
|
||||
| |/ |/ / /_/ / / (__ )
|
||||
|__/|__/\__,_/_/_/____/
|
||||
The lightweight framework for web-like apps
|
||||
(c) Lea Anthony 2019-present
|
||||
*/
|
||||
/* jshint esversion: 6 */
|
||||
|
||||
/**
|
||||
* Initialises platform specific code
|
||||
*/
|
||||
|
||||
export const System = {
|
||||
Platform: "darwin",
|
||||
AppType: "desktop"
|
||||
}
|
||||
|
||||
export function SendMessage(message) {
|
||||
window.webkit.messageHandlers.external.postMessage(message);
|
||||
}
|
||||
|
||||
export function Init() {
|
||||
|
||||
// Setup drag handler
|
||||
// Based on code from: https://github.com/patr0nus/DeskGap
|
||||
window.addEventListener('mousedown', function (e) {
|
||||
var currentElement = e.target;
|
||||
while (currentElement != null) {
|
||||
if (currentElement.hasAttribute('data-wails-no-drag')) {
|
||||
break;
|
||||
} else if (currentElement.hasAttribute('data-wails-drag')) {
|
||||
window.webkit.messageHandlers.windowDrag.postMessage(null);
|
||||
break;
|
||||
}
|
||||
currentElement = currentElement.parentElement;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -59,7 +59,7 @@ func Build(options *Options) (string, error) {
|
|||
}
|
||||
|
||||
// Check platform
|
||||
validPlatforms := slicer.String([]string{"linux"})
|
||||
validPlatforms := slicer.String([]string{"linux", "darwin"})
|
||||
if !validPlatforms.Contains(options.Platform) {
|
||||
return "", fmt.Errorf("platform %s not supported", options.Platform)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue