Compare commits

..

9 Commits

Author SHA1 Message Date
Lea Anthony
ea377ed2c3 Add contributors 2020-01-02 08:36:12 +11:00
Lea Anthony
6c1baac7f4 Merge branch 'develop' into vuetify2-support 2020-01-02 07:24:53 +10:00
Travis McLane
b8bfe24340 fix: babel -> core-js, regenerator-runtime 2020-01-01 15:08:11 -06:00
Travis McLane
7352e9d6a2 fix: codacy corrections 2020-01-01 15:01:43 -06:00
Michael Hipp
245f678aa1 Remove babel-polyfill, add mdi/font 2019-12-31 09:01:11 -06:00
Michael Hipp
ef99dc592b Update App.vue, HelloWorld.vue for Vuetify v2 2019-12-31 09:01:11 -06:00
Michael Hipp
e93103ed6b Get vuetify2 template installing vuetify v2.0 (but with styling probs) 2019-12-31 09:01:11 -06:00
Michael Hipp
46c1e81a20 Change template descr of vuetify-basic to say Vuetify 1.5 2019-12-31 09:01:11 -06:00
Michael Hipp
702b475a3b Initial create of vuetify2-basic folder 2019-12-31 09:01:10 -06:00
25 changed files with 64 additions and 200 deletions

View File

@@ -22,4 +22,4 @@ Wails is what it is because of the time and effort given by these great people.
* [Kris Raney](https://github.com/kraney)
* [Jack Mordaunt](https://github.com/JackMordaunt)
* [Michael Hipp](https://github.com/MichaelHipp)
* [Travis McLane](https://github.com/tmclane)
* [Travis McLane](https://github.com/tmclane)

File diff suppressed because one or more lines are too long

View File

@@ -132,16 +132,6 @@ func (fs *FSHelper) LocalDir(dir string) (*Dir, error) {
}, err
}
// LoadRelativeFile loads the given file relative to the caller's directory
func (fs *FSHelper) LoadRelativeFile(relativePath string) ([]byte, error) {
_, filename, _, _ := runtime.Caller(0)
fullPath, err := filepath.Abs(filepath.Join(path.Dir(filename), relativePath))
if err != nil {
return nil, err
}
return ioutil.ReadFile(fullPath)
}
// GetSubdirs will return a list of FQPs to subdirectories in the given directory
func (d *Dir) GetSubdirs() (map[string]string, error) {

View File

@@ -99,7 +99,8 @@ func BuildApplication(binaryName string, forceRebuild bool, buildMode string, pa
binaryName = strings.TrimSuffix(binaryName, ".exe")
}
}
buildCommand.Add("-o", binaryName)
buildCommand.Add("-o")
buildCommand.Add(binaryName)
}
// If we are forcing a rebuild
@@ -120,16 +121,6 @@ func BuildApplication(binaryName string, forceRebuild bool, buildMode string, pa
ldflags += "-X github.com/wailsapp/wails.BuildMode=" + buildMode
// If we wish to generate typescript
if projectOptions.typescriptDefsFilename != "" {
cwd, err := os.Getwd()
if err != nil {
return err
}
filename := filepath.Join(cwd, projectOptions.FrontEnd.Dir, projectOptions.typescriptDefsFilename)
ldflags += " -X github.com/wailsapp/wails/lib/binding.typescriptDefinitionFilename=" + filename
}
buildCommand.AddSlice([]string{"-ldflags", ldflags})
err = NewProgramHelper().RunCommandArray(buildCommand.AsSlice())
if err != nil {

View File

@@ -47,12 +47,6 @@ const (
ArcoLinux
// Manjaro distribution
Manjaro
// ManjaroARM distribution
ManjaroARM
// Deepin distribution
Deepin
// Raspbian distribution
Raspbian
)
// DistroInfo contains all the information relating to a linux distribution
@@ -108,7 +102,6 @@ func parseOsRelease(osRelease string) *DistroInfo {
version = strings.Trim(splitLine[1], "\"")
}
}
// Check distro name against list of distros
switch osID {
case "fedora":
@@ -141,12 +134,6 @@ func parseOsRelease(osRelease string) *DistroInfo {
result.Distribution = ArcoLinux
case "manjaro":
result.Distribution = Manjaro
case "manjaro-arm":
result.Distribution = ManjaroARM
case "deepin":
result.Distribution = Deepin
case "raspbian":
result.Distribution = Raspbian
default:
result.Distribution = Unknown
}

View File

@@ -3,6 +3,7 @@ package cmd
import (
"log"
"github.com/leaanthony/mewn"
"gopkg.in/yaml.v3"
)
@@ -78,14 +79,11 @@ func (l *LinuxDB) GetDistro(distro string) *Distribution {
// NewLinuxDB creates a new LinuxDB instance from the bundled
// linuxdb.yaml file.
func NewLinuxDB() *LinuxDB {
data, err := fs.LoadRelativeFile("./linuxdb.yaml")
if err != nil {
log.Fatal("Could not load linuxdb.yaml")
}
data := mewn.Bytes("./linuxdb.yaml")
result := LinuxDB{
Distributions: make(map[string]*Distribution),
}
err = result.ImportData(data)
err := result.ImportData(data)
if err != nil {
log.Fatal(err)
}

View File

@@ -82,15 +82,6 @@ distributions:
gccversioncommand: *gccdumpfullversion
programs: *debiandefaultprograms
libraries: *debiandefaultlibraries
deepin:
id: deepin
releases:
default:
version: default
name: Deepin
gccversioncommand: *gccdumpfullversion
programs: *debiandefaultprograms
libraries: *debiandefaultlibraries
void:
id: void
releases:
@@ -167,15 +158,6 @@ distributions:
help: Please install with `sudo pacman -S gtk3` and try again
- name: webkit2gtk
help: Please install with `sudo pacman -S webkit2gtk` and try again
arcolinux:
id: arcolinux
releases:
default:
version: default
name: ArcoLinux
gccversioncommand: *gccdumpversion
programs: *archdefaultprograms
libraries: *archdefaultlibraries
manjaro:
id: manjaro
releases:
@@ -185,12 +167,12 @@ distributions:
gccversioncommand: *gccdumpversion
programs: *archdefaultprograms
libraries: *archdefaultlibraries
manjaro-arm:
id: manjaro-arm
arcolinux:
id: arcolinux
releases:
default:
version: default
name: Manjaro-ARM
name: ArcoLinux
gccversioncommand: *gccdumpversion
programs: *archdefaultprograms
libraries: *archdefaultlibraries
@@ -212,14 +194,4 @@ distributions:
- name: gtk+:3
help: Please install with `sudo emerge gtk+:3` and try again
- name: webkit-gtk
help: Please install with `sudo emerge webkit-gtk` and try again
raspbian:
id: raspbian
releases:
default:
version: default
name: Raspbian
gccversioncommand: *gccdumpfullversion
programs: *debiandefaultprograms
libraries: *debiandefaultlibraries
help: Please install with `sudo emerge webkit-gtk` and try again

View File

@@ -142,22 +142,21 @@ func (ph *ProjectHelper) NewProjectOptions() *ProjectOptions {
// ProjectOptions holds all the options available for a project
type ProjectOptions struct {
Name string `json:"name"`
Description string `json:"description"`
Author *author `json:"author,omitempty"`
Version string `json:"version"`
OutputDirectory string `json:"-"`
UseDefaults bool `json:"-"`
Template string `json:"-"`
BinaryName string `json:"binaryname"`
FrontEnd *frontend `json:"frontend,omitempty"`
NPMProjectName string `json:"-"`
system *SystemHelper
log *Logger
templates *TemplateHelper
selectedTemplate *TemplateDetails
WailsVersion string
typescriptDefsFilename string
Name string `json:"name"`
Description string `json:"description"`
Author *author `json:"author,omitempty"`
Version string `json:"version"`
OutputDirectory string `json:"-"`
UseDefaults bool `json:"-"`
Template string `json:"-"`
BinaryName string `json:"binaryname"`
FrontEnd *frontend `json:"frontend,omitempty"`
NPMProjectName string `json:"-"`
system *SystemHelper
log *Logger
templates *TemplateHelper
selectedTemplate *TemplateDetails
WailsVersion string
}
// Defaults sets the default project template
@@ -166,11 +165,6 @@ func (po *ProjectOptions) Defaults() {
po.WailsVersion = Version
}
// SetTypescriptDefsFilename indicates that we want to generate typescript bindings to the given file
func (po *ProjectOptions) SetTypescriptDefsFilename(filename string) {
po.typescriptDefsFilename = filename
}
// GetNPMBinaryName returns the type of package manager used by the project
func (po *ProjectOptions) GetNPMBinaryName() (PackageManager, error) {
if po.FrontEnd == nil {

View File

@@ -274,9 +274,9 @@ func CheckDependencies(logger *Logger) (bool, error) {
distroInfo := GetLinuxDistroInfo()
switch distroInfo.Distribution {
case Ubuntu, Debian, Zorin, Parrot, Linuxmint, Elementary, Kali, Neon, Deepin, Raspbian:
case Ubuntu, Debian, Zorin, Parrot, Linuxmint, Elementary, Kali, Neon:
libraryChecker = DpkgInstalled
case Arch, ArcoLinux, Manjaro, ManjaroARM:
case Arch, Manjaro, ArcoLinux:
libraryChecker = PacmanInstalled
case CentOS, Fedora:
libraryChecker = RpmInstalled

View File

@@ -3,7 +3,7 @@
"version": "0.0.0",
"scripts": {
"ng": "npx ng",
"start": "npx ng serve --poll=2000 --host=0.0.0.0",
"start": "npx ng serve --poll=2000",
"build": "npx ng build --single-bundle true --output-hashing none --prod --bundle-styles false",
"test": "npx ng test",
"lint": "npx ng lint",

View File

@@ -37,6 +37,7 @@ module.exports = {
}
},
devServer: {
disableHostCheck: true
disableHostCheck: true,
host: "localhost"
}
};

View File

@@ -37,6 +37,7 @@ module.exports = {
}
},
devServer: {
disableHostCheck: true
disableHostCheck: true,
host: "localhost"
}
};

View File

@@ -37,6 +37,7 @@ module.exports = {
}
},
devServer: {
disableHostCheck: true
disableHostCheck: true,
host: 'localhost'
}
};

View File

@@ -1,4 +1,4 @@
package cmd
// Version - Wails version
const Version = "v1.0.2-pre4"
const Version = "v1.0.1"

View File

@@ -13,8 +13,6 @@ func init() {
var packageApp = false
var forceRebuild = false
var debugMode = false
var typescriptFilename = ""
buildSpinner := spinner.NewSpinner()
buildSpinner.SetSpinSpeed(50)
@@ -23,8 +21,7 @@ func init() {
LongDescription(commandDescription).
BoolFlag("p", "Package application on successful build", &packageApp).
BoolFlag("f", "Force rebuild of application components", &forceRebuild).
BoolFlag("d", "Build in Debug mode", &debugMode).
StringFlag("t", "Generate Typescript definitions to given file (at runtime)", &typescriptFilename)
BoolFlag("d", "Build in Debug mode", &debugMode)
initCmd.Action(func() error {
@@ -76,13 +73,16 @@ func init() {
return err
}
// Ensure that runtime init.js is the production version
err = cmd.InstallProdRuntime(projectDir, projectOptions)
if err != nil {
return err
}
// Ensure that runtime init.js is the production version
err = cmd.InstallProdRuntime(projectDir, projectOptions)
if err != nil {
return err
}
}
// Move to project directory
err = os.Chdir(projectDir)
if err != nil {
@@ -101,11 +101,6 @@ func init() {
buildMode = cmd.BuildModeDebug
}
// Save if we wish to dump typescript or not
if typescriptFilename != "" {
projectOptions.SetTypescriptDefsFilename(typescriptFilename)
}
err = cmd.BuildApplication(projectOptions.BinaryName, forceRebuild, buildMode, packageApp, projectOptions)
if err != nil {
return err

4
go.mod
View File

@@ -13,7 +13,7 @@ require (
github.com/kennygrant/sanitize v1.2.4
github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect
github.com/leaanthony/mewn v0.10.7
github.com/leaanthony/slicer v1.4.0
github.com/leaanthony/slicer v1.3.2
github.com/leaanthony/spinner v0.5.3
github.com/mattn/go-colorable v0.1.1 // indirect
github.com/mattn/go-isatty v0.0.7 // indirect
@@ -31,5 +31,3 @@ require (
gopkg.in/AlecAivazis/survey.v1 v1.8.4
gopkg.in/yaml.v3 v3.0.0-20190709130402-674ba3eaed22
)
go 1.13

2
go.sum
View File

@@ -36,8 +36,6 @@ github.com/leaanthony/mewn v0.10.7 h1:jCcNJyIUOpwj+I5SuATvCugDjHkoo+j6ubEOxxrxmP
github.com/leaanthony/mewn v0.10.7/go.mod h1:CRkTx8unLiSSilu/Sd7i1LwrdaAL+3eQ3ses99qGMEQ=
github.com/leaanthony/slicer v1.3.2 h1:kGWWFoyaY5WzwGrUsHXMmGbssuYthP4qYBNlkNpNAB8=
github.com/leaanthony/slicer v1.3.2/go.mod h1:VMB/HGvr3uR3MRpFWHWAm0w+DHQLzPHYe2pKfpFlQIQ=
github.com/leaanthony/slicer v1.4.0 h1:Q9u4w+UBU4WHjXnEDdz+eRLMKF/rnyosRBiqULnc1J8=
github.com/leaanthony/slicer v1.4.0/go.mod h1:FwrApmf8gOrpzEWM2J/9Lh79tyq8KTX5AzRtwV7m4AY=
github.com/leaanthony/spinner v0.5.3 h1:IMTvgdQCec5QA4qRy0wil4XsRP+QcG1OwLWVK/LPZ5Y=
github.com/leaanthony/spinner v0.5.3/go.mod h1:oHlrvWicr++CVV7ALWYi+qHk/XNA91D9IJ48IqmpVUo=
github.com/leaanthony/synx v0.1.0 h1:R0lmg2w6VMb8XcotOwAe5DLyzwjLrskNkwU7LLWsyL8=

View File

@@ -2,11 +2,7 @@ package binding
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"reflect"
"strings"
"unicode"
"github.com/wailsapp/wails/lib/interfaces"
@@ -14,8 +10,6 @@ import (
"github.com/wailsapp/wails/lib/messages"
)
var typescriptDefinitionFilename = ""
// Manager handles method binding
type Manager struct {
methods map[string]*boundMethod
@@ -27,19 +21,16 @@ type Manager struct {
renderer interfaces.Renderer
runtime interfaces.Runtime // The runtime object to pass to bound structs
objectsToBind []interface{}
bindPackageNames bool // Package name should be considered when binding
structList map[string][]string // structList["mystruct"] = []string{"Method1", "Method2"}
bindPackageNames bool // Package name should be considered when binding
}
// NewManager creates a new Manager struct
func NewManager() interfaces.BindingManager {
result := &Manager{
methods: make(map[string]*boundMethod),
functions: make(map[string]*boundFunction),
log: logger.NewCustomLogger("Bind"),
internalMethods: newInternalMethods(),
structList: make(map[string][]string),
}
return result
}
@@ -97,53 +88,9 @@ func (b *Manager) initialise() error {
return err
}
}
// If we wish to generate a typescript definition file...
if typescriptDefinitionFilename != "" {
err := b.generateTypescriptDefinitions()
if err != nil {
return err
}
}
return nil
}
// Generate typescript
func (b *Manager) generateTypescriptDefinitions() error {
var output strings.Builder
for structname, methodList := range b.structList {
output.WriteString(fmt.Sprintf("Interface %s {\n", structname))
for _, method := range methodList {
output.WriteString(fmt.Sprintf("\t%s: (...args : any[]) => Promise\n", method))
}
output.WriteString("}\n")
}
output.WriteString("\n")
output.WriteString("Interface Backend {\n")
for structname := range b.structList {
output.WriteString(fmt.Sprintf("\t%[1]s: %[1]s\n", structname))
}
output.WriteString("}\n")
globals := `
declare global {
interface Window {
backend: Backend;
}
}`
output.WriteString(globals)
b.log.Info("Written Typescript file: " + typescriptDefinitionFilename)
dir := filepath.Dir(typescriptDefinitionFilename)
os.MkdirAll(dir, 0755)
return ioutil.WriteFile(typescriptDefinitionFilename, []byte(output.String()), 0755)
}
// bind the given struct method
func (b *Manager) bindMethod(object interface{}) error {
@@ -157,12 +104,6 @@ func (b *Manager) bindMethod(object interface{}) error {
b.log.Debugf("Processing struct: %s", baseName)
// Calc actual name
actualName := strings.TrimPrefix(baseName, "main.")
if b.structList[actualName] == nil {
b.structList[actualName] = []string{}
}
// Iterate over method definitions
for i := 0; i < objectType.NumMethod(); i++ {
@@ -172,8 +113,6 @@ func (b *Manager) bindMethod(object interface{}) error {
fullMethodName := baseName + "." + methodName
method := reflect.ValueOf(object).MethodByName(methodName)
b.structList[actualName] = append(b.structList[actualName], methodName)
// Skip unexported methods
if !unicode.IsUpper([]rune(methodName)[0]) {
continue

View File

@@ -3,6 +3,7 @@ package event
import (
"fmt"
"sync"
"time"
"github.com/wailsapp/wails/lib/interfaces"
"github.com/wailsapp/wails/lib/logger"
@@ -12,7 +13,6 @@ import (
// Manager handles and processes events
type Manager struct {
incomingEvents chan *messages.EventData
quitChannel chan struct{}
listeners map[string][]*eventListener
running bool
log *logger.CustomLogger
@@ -24,7 +24,6 @@ type Manager struct {
func NewManager() interfaces.EventManager {
return &Manager{
incomingEvents: make(chan *messages.EventData, 100),
quitChannel: make(chan struct{}, 1),
listeners: make(map[string][]*eventListener),
running: false,
log: logger.NewCustomLogger("Events"),
@@ -142,8 +141,8 @@ func (e *Manager) Start(renderer interfaces.Renderer) {
}
}
}
case <-e.quitChannel:
e.running = false
default:
time.Sleep(1 * time.Millisecond)
}
}
e.wg.Done()
@@ -153,7 +152,7 @@ func (e *Manager) Start(renderer interfaces.Renderer) {
// Shutdown is called when exiting the Application
func (e *Manager) Shutdown() {
e.log.Debug("Shutting Down")
e.quitChannel <- struct{}{}
e.running = false
e.log.Debug("Waiting for main loop to exit")
e.wg.Wait()
}

View File

@@ -3,6 +3,7 @@ package ipc
import (
"fmt"
"sync"
"time"
"github.com/wailsapp/wails/lib/interfaces"
"github.com/wailsapp/wails/lib/logger"
@@ -123,8 +124,8 @@ func (i *Manager) Start(eventManager interfaces.EventManager, bindingManager int
i.log.DebugFields("Finished processing message", logger.Fields{
"1D": &incomingMessage,
})
case <-i.quitChannel:
i.running = false
default:
time.Sleep(1 * time.Millisecond)
}
}
i.log.Debug("Stopping")
@@ -174,7 +175,7 @@ func (i *Manager) SendResponse(response *ipcResponse) error {
// Shutdown is called when exiting the Application
func (i *Manager) Shutdown() {
i.log.Debug("Shutdown called")
i.quitChannel <- struct{}{}
i.running = false
i.log.Debug("Waiting of main loop shutdown")
i.wg.Wait()
}

File diff suppressed because one or more lines are too long

View File

@@ -14,7 +14,7 @@ function init() {
window.wailsbridge = {
reconnectOverlay: null,
reconnectTimer: 300,
wsURL: 'ws://' + window.location.hostname + ':34115/bridge',
wsURL: 'ws://localhost:34115/bridge',
connectionState: null,
config: {},
websocket: null,

File diff suppressed because one or more lines are too long

View File

@@ -52,8 +52,7 @@ function Once(eventName, callback) {
* @param {string} eventName
*/
function Emit(eventName) {
var args = [eventName].slice.call(arguments);
return window.wails.Events.Emit.apply(null, args);
return window.wails.Events.Emit(eventName);
}

View File

@@ -1,6 +1,6 @@
{
"name": "@wailsapp/runtime",
"version": "1.0.10",
"version": "1.0.9",
"description": "Wails Javascript runtime library",
"main": "main.js",
"types": "runtime.d.ts",