commit 761383ef3c032d363af05ba9ea7afc0d24ff19c0 Author: erinn Date: Wed Sep 18 12:38:51 2019 -0700 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..400dd18 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +.idea +deploy +moc* +rcc* +*.qmlc +*.jsc +vendor/ +.directory diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..5e28df0 --- /dev/null +++ b/go.mod @@ -0,0 +1,8 @@ +module git.openprivacy.ca/erinn/qmltest + +go 1.12 + +require ( + git.openprivacy.ca/openprivacy/libricochet-go v1.0.6 + github.com/therecipe/qt v0.0.0-20190914193131-4c875570321e +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..b3e7cd7 --- /dev/null +++ b/go.sum @@ -0,0 +1,33 @@ +git.openprivacy.ca/openprivacy/libricochet-go v1.0.6 h1:5o4K2qn3otEE1InC5v5CzU0yL7Wl7DhVp4s8H3K6mXY= +git.openprivacy.ca/openprivacy/libricochet-go v1.0.6/go.mod h1:yMSG1gBaP4f1U+RMZXN85d29D39OK5s8aTpyVRoH5FY= +github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0= +github.com/cretz/bine v0.1.0/go.mod h1:6PF6fWAvYtwjRGkAuDEJeWNOv3a2hUouSP/yRYXmvHw= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/gopherjs/gopherjs v0.0.0-20190411002643-bd77b112433e h1:XWcjeEtTFTOVA9Fs1w7n2XBftk5ib4oZrhzWk0B+3eA= +github.com/gopherjs/gopherjs v0.0.0-20190411002643-bd77b112433e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/therecipe/qt v0.0.0-20190914193131-4c875570321e h1:ralwiYe77HLSNZzbnnfu0BlC+6AbgzwHjGB5hg5sL7s= +github.com/therecipe/qt v0.0.0-20190914193131-4c875570321e/go.mod h1:SUUR2j3aE1z6/g76SdD6NwACEpvCxb3fvG82eKbD6us= +golang.org/x/crypto v0.0.0-20190128193316-c7b33c32a30b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190420063019-afa5a82059c6/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= diff --git a/main.go b/main.go new file mode 100644 index 0000000..07ba723 --- /dev/null +++ b/main.go @@ -0,0 +1,56 @@ +package main + +import ( + "flag" + "git.openprivacy.ca/openprivacy/libricochet-go/log" + "github.com/therecipe/qt/core" + "github.com/therecipe/qt/gui" + "github.com/therecipe/qt/qml" + "github.com/therecipe/qt/quickcontrols2" + "os" +) + +type Thingama struct { + core.QObject + + _ string `property:"x"` + _ core.QStringList `property:"mahdahl"` + _ core.QAbstractItemModel `property:"abstracty"` + + _ func() `signal:"doTheThing,auto"` +} + +func (this *Thingama) doTheThing() { +} + +func main() { + flagDebug := flag.Bool("debug", false, "turn on extra logging. WARNING: THIS MAY EXPOSE PRIVATE INFORMATION IN CONSOLE OUTPUT!") + flagLocal := flag.Bool("local", false, "load user interface from the local folder \"qml\" instead of the built-in UI") + flag.Parse() + + if *flagDebug { + log.SetLevel(log.LevelDebug) + } else { + log.SetLevel(log.LevelInfo) + } + + // this is to load local qml files quickly when developing + var qmlSource *core.QUrl + if *flagLocal { + qmlSource = core.QUrl_FromLocalFile("./qml/main.qml") + } else { + qmlSource = core.NewQUrl3("qrc:/qml/main.qml", 0) + } + + app := gui.NewQGuiApplication(len(os.Args), os.Args) + core.QCoreApplication_SetAttribute(core.Qt__AA_EnableHighDpiScaling, true) + quickcontrols2.QQuickStyle_SetStyle("Default") + engine := qml.NewQQmlApplicationEngine(nil) + + thingama := NewThingama(nil) + thingama.SetX("hello") + engine.RootContext().SetContextProperty("thingama", thingama) + + engine.Load(qmlSource) + app.Exec() +} diff --git a/qml/TestRow.qml b/qml/TestRow.qml new file mode 100644 index 0000000..d23ea41 --- /dev/null +++ b/qml/TestRow.qml @@ -0,0 +1,37 @@ +import QtGraphicalEffects 1.0 +import QtQuick 2.7 +import QtQuick.Controls 2.4 +import QtQuick.Controls.Material 2.0 +import QtQuick.Layouts 1.3 +import QtQuick.Window 2.11 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls 1.4 + + +RowLayout { + id: sec + property int base: 10 + + Text { + font.pointSize: sec.base + text: "pointSize: " + font.pointSize + } + + TextField { + text: "pt" + sec.base + "; ptToPx("+sec.base+")" + style: TextFieldStyle { + id: root + textColor: "black" + font.pointSize: sec.base + property int width: 500 + + background: Rectangle { + radius: 2 + implicitWidth: root.width + implicitHeight: ptToPx(sec.base) + //color: windowItem.cwtch_background_color + border.color: "#000000" + } + } + } +} \ No newline at end of file diff --git a/qml/main.qml b/qml/main.qml new file mode 100644 index 0000000..696aeb9 --- /dev/null +++ b/qml/main.qml @@ -0,0 +1,35 @@ +import QtGraphicalEffects 1.0 +import QtQuick 2.7 +import QtQuick.Controls 2.4 +import QtQuick.Controls.Material 2.0 +import QtQuick.Layouts 1.3 +import QtQuick.Window 2.11 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls 1.4 + +ApplicationWindow { + id: windowItem + width: 1200 + height: 800 + visible: true + title: "qmltest" + style: ApplicationWindowStyle { + background: Rectangle { color: "#FFFFFF"; anchors.fill: parent; } + } + + function ptToPx(pt) { + return Screen.pixelDensity * 25.4 * pt / 72 + } + + function pxToPt(px) { + return px * 72 / (Screen.pixelDensity * 25.4) + } + + ColumnLayout { + TestRow { base: 10 } + TestRow { base: 16 } + TestRow { base: 24 } + TestRow { base: 36 } + TestRow { base: 48 } + } +} \ No newline at end of file