Stubs in place to compile

This commit is contained in:
Lea Anthony 2020-09-11 21:09:19 +10:00 committed by Travis McLane
commit e831bc75c6
No known key found for this signature in database
GPG key ID: 7BA828AE61CD949B
9 changed files with 93 additions and 11 deletions

View file

@ -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{},
}
}

View file

@ -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{
}
}

View 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) {
}

View file

@ -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);

File diff suppressed because one or more lines are too long

View file

@ -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

View 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")}]);

View 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;
}
});
}

View file

@ -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)
}