From 7aef0fed29ec9e0b7f65f12f242c75b39b652d47 Mon Sep 17 00:00:00 2001 From: Alexandre Van de Sande Date: Fri, 13 Feb 2015 18:32:15 +0100 Subject: [PATCH 1/8] changed url bar behaviour. Failed attempt at icon --- cmd/mist/assets/qml/main.qml | 14 ++-- cmd/mist/assets/qml/views/browser.qml | 110 +++++++++++++++----------- cmd/mist/assets/qml/views/catalog.qml | 26 ++---- 3 files changed, 76 insertions(+), 74 deletions(-) diff --git a/cmd/mist/assets/qml/main.qml b/cmd/mist/assets/qml/main.qml index d03ef43d9..c9505806c 100644 --- a/cmd/mist/assets/qml/main.qml +++ b/cmd/mist/assets/qml/main.qml @@ -59,13 +59,13 @@ ApplicationWindow { function activeView(view, menuItem) { mainSplit.setView(view, menuItem) - if (view.hideUrl) { + /*if (view.hideUrl) { urlPane.visible = false; mainView.anchors.top = rootView.top } else { urlPane.visible = true; mainView.anchors.top = divider.bottom - } + }*/ } function addViews(view, path, options) { @@ -120,13 +120,10 @@ ApplicationWindow { var domainAlreadyOpen = false; - console.log("requested: " + requestedDomain ) - for(var i = 0; i < mainSplit.views.length; i++) { if (mainSplit.views[i].view.url) { var matches = mainSplit.views[i].view.url.toString().match(/^[a-z]*\:\/\/(?:www\.)?([^\/?#]+)(?:[\/?#]|$)/i); var existingDomain = matches && matches[1]; - console.log("exists: " + existingDomain); if (requestedDomain == existingDomain) { domainAlreadyOpen = true; mainSplit.views[i].view.url = url; @@ -567,7 +564,9 @@ ApplicationWindow { if (parent.closable == true) { closeIcon.visible = sel.visible } - + /*if(view.hasOwnProperty("iconSource")) { + icon.source = view.iconSource; + }*/ } onExited: { closeIcon.visible = false @@ -600,10 +599,13 @@ ApplicationWindow { id: label font.family: sourceSansPro.name font.weight: Font.DemiBold + elide: Text.ElideRight anchors { left: icon.right + right: parent.right verticalCenter: parent.verticalCenter leftMargin: 6 + rightMargin: 8 // verticalCenterOffset: -10 } x:250 diff --git a/cmd/mist/assets/qml/views/browser.qml b/cmd/mist/assets/qml/views/browser.qml index 04b2229ec..ff3ff0f7f 100644 --- a/cmd/mist/assets/qml/views/browser.qml +++ b/cmd/mist/assets/qml/views/browser.qml @@ -64,23 +64,15 @@ Rectangle { } function showFullUrlBar(on){ - if (on) { - //appTitle.visible = false - //appDomain.visible = false - - //uriNav.visible = true - clickAnywhereOnApp.visible = true - - navBar.state = "fullUrlVisible" - } else { - //appTitle.visible = true - //appDomain.visible = true - //uriNav.visible = false - clickAnywhereOnApp.visible = false - - navBar.state = "titleVisible" - - } + if (uriNav.focus == false ) { + if (on == false) { + clickAnywhereOnApp.visible = false + navBar.state = "titleVisible" + } else { + clickAnywhereOnApp.visible = true + navBar.state = "fullUrlVisible" + } + } } @@ -90,24 +82,40 @@ Rectangle { Item { objectName: "root" id: root - anchors.fill: parent + anchors { + fill: parent + } + state: "inspectorShown" MouseArea { id: clickAnywhereOnApp z:15 - //hoverEnabled: true - anchors.fill: parent - /*hoverEnabled: true*/ + // Using a secondary screen to catch on mouse exits for the area, because + // there are many hover actions conflicting + + anchors { + top: parent.top + topMargin: 50 + right: parent.right + bottom: parent.bottom + left: parent.left + } + hoverEnabled: true - onClicked: { + onEntered: { showFullUrlBar(false); } - /*Rectangle { - anchors.fill: parent - color: "#88888888" - }*/ + onClicked: { + uriNav.focus = false + showFullUrlBar(false); + } + + // Rectangle { + // anchors.fill: parent + // color: "#88888888" + // } } RowLayout { @@ -126,7 +134,7 @@ Rectangle { webview.goBack() } - anchors{ + anchors { left: parent.left leftMargin: 6 } @@ -146,15 +154,17 @@ Rectangle { color: "#FFFFFF" radius: 6 - MouseArea { anchors.fill: parent z: 10 hoverEnabled: true onEntered: { - showFullUrlBar(true); - } + showFullUrlBar(true); + } + /*onExited: { + showFullUrlBar(false); + }*/ } @@ -171,14 +181,15 @@ Rectangle { font.bold: true font.capitalization: Font.AllUppercase horizontalAlignment: Text.AlignRight - verticalAlignment: Text.AlignVCenter - + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + anchors { left: parent.left right: parent.horizontalCenter top: parent.top bottom: parent.bottom - rightMargin: 10 + leftMargin: 32 } color: "#928484" } @@ -189,13 +200,15 @@ Rectangle { font.bold: false horizontalAlignment: Text.AlignLeft verticalAlignment: Text.AlignVCenter + elide: Text.ElideLeft anchors { left: parent.horizontalCenter right: parent.right top: parent.top bottom: parent.bottom - leftMargin: 10 + leftMargin: 32 + } color: "#C0AFAF" } @@ -212,7 +225,7 @@ Rectangle { } horizontalAlignment: Text.AlignHCenter - + style: TextFieldStyle { textColor: "#928484" background: Rectangle { @@ -227,11 +240,6 @@ Rectangle { Keys.onReturnPressed: { webview.url = this.text; } - /* onFocusedChanged: { - if (focused) { - //uriNav.selectAll(); - } - }*/ } z:2 @@ -332,18 +340,19 @@ Rectangle { bottom: parent.bottom top: navBar.bottom } - z: 10 - - onLoadingChanged: { + + z: 10 + + onLoadingChanged: { + + // this checks if your app has special header tags if (loadRequest.status == WebEngineView.LoadSucceededStatus) { webview.runJavaScript("document.title", function(pageTitle) { menuItem.title = pageTitle; }); - //var topBarStyle webView.runJavaScript("document.querySelector(\"meta[name='ethereum-dapp-url-bar-style']\").getAttribute(\"content\")", function(topBarStyle){ if (topBarStyle=="transparent") { - // Adjust for a transparent sidebar Dapp navBarBackground.visible = false; back.visible = false; @@ -362,8 +371,13 @@ Rectangle { }; }); - - + // webView.runJavaScript("document.querySelector(\"link[rel='icon']\").getAttribute(\"href\")", function(sideIcon){ + // if(sideIcon){ + // window.iconSource = "http://localhost:3000/whisper-icon@2x.png" //webview.url + sideIcon + // console.log(iconSource) + // }; + // }); + webview.runJavaScript(eth.readFile("bignumber.min.js")); webview.runJavaScript(eth.readFile("ethereum.js/dist/ethereum.js")); @@ -371,7 +385,7 @@ Rectangle { var matches = cleanTitle.match(/^[a-z]*\:\/\/([^\/?#]+)(?:[\/?#]|$)/i); var domain = matches && matches[1]; - appDomain.text = domain //webview.url.replace("a", "z") + appDomain.text = domain appTitle.text = webview.title showFullUrlBar(false); diff --git a/cmd/mist/assets/qml/views/catalog.qml b/cmd/mist/assets/qml/views/catalog.qml index a7832e9fa..18a835ad2 100644 --- a/cmd/mist/assets/qml/views/catalog.qml +++ b/cmd/mist/assets/qml/views/catalog.qml @@ -85,35 +85,21 @@ Rectangle { property var domain: "ethereum-dapp-catalog.meteor.com" url: protocol + domain - //navigationRequest: WebEngineView.IgnoreRequest - // onLoadingChanged: { - // if (loadRequest.status == WebEngineView.LoadSucceededStatus) { - // webview.runJavaScript(eth.readFile("bignumber.min.js")); - // webview.runJavaScript(eth.readFile("ethereum.js/dist/ethereum.js")); - // } - // } + - //onNavigationRequested: { - // detect URL scheme prefix, most likely an external link - //var schemaRE = /^\w+:/; - //if (schemaRE.test(request.url)) { - // request.action = WebView.AcceptRequest; - //} else { - //request.action = WebView.IgnoreRequest; - // delegate request.url here - //} - //} onJavaScriptConsoleMessage: { console.log(sourceID + ":" + lineNumber + ":" + JSON.stringify(message)); } - onNavigationRequested: { + onNavigationRequested: { + // this checks if the domain of the requested link is the same as the catalog's + // If it is, it opens on the same window, if it's not it opens a new tab + var cleanTitle = request.url.toString() var matches = cleanTitle.match(/^[a-z]*\:\/\/([^\/?#]+)(?:[\/?#]|$)/i); var requestedDomain = matches && matches[1]; - console.debug ("NavigationRequested: " + request.url + " navigationType=" + request.navigationType) if(request.navigationType==0){ @@ -137,7 +123,7 @@ Rectangle { anchors { left: root.left right: root.right - top: sizeGrip.bottom + top: root.top bottom: root.bottom } From 05f28088499fdc0105bb17cee9345a3483aa24f2 Mon Sep 17 00:00:00 2001 From: Alexandre Van de Sande Date: Mon, 16 Feb 2015 11:17:31 +0100 Subject: [PATCH 2/8] Add http when not present on browser --- cmd/mist/assets/qml/views/browser.qml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cmd/mist/assets/qml/views/browser.qml b/cmd/mist/assets/qml/views/browser.qml index ff3ff0f7f..a6f4e3d92 100644 --- a/cmd/mist/assets/qml/views/browser.qml +++ b/cmd/mist/assets/qml/views/browser.qml @@ -238,7 +238,12 @@ Rectangle { z: 20 activeFocusOnPress: true Keys.onReturnPressed: { - webview.url = this.text; + // if there's no http, add it. + var url = this.text, + matches = url.match(/^([a-z]*\:\/\/)?([^\/.]+)(:?\/)(.*|$)/i), + requestedProtocol = (matches && matches[1] != "undefined")? "" : "http://"; + + webview.url = requestedProtocol + url; } } From 1878630b591b039fadb6f88e15340d04f4af3ed1 Mon Sep 17 00:00:00 2001 From: Alexandre Van de Sande Date: Mon, 16 Feb 2015 14:34:47 +0100 Subject: [PATCH 3/8] Solved Issue #318 and added states to back button --- cmd/mist/assets/backButtonDisabled.png | Bin 0 -> 634 bytes cmd/mist/assets/backButtonDisabled@2x.png | Bin 0 -> 1458 bytes cmd/mist/assets/backButtonHover.png | Bin 0 -> 657 bytes cmd/mist/assets/backButtonHover@2x.png | Bin 0 -> 1517 bytes cmd/mist/assets/qml/main.qml | 2 +- cmd/mist/assets/qml/views/browser.qml | 39 +++++++++++----------- 6 files changed, 21 insertions(+), 20 deletions(-) create mode 100644 cmd/mist/assets/backButtonDisabled.png create mode 100644 cmd/mist/assets/backButtonDisabled@2x.png create mode 100644 cmd/mist/assets/backButtonHover.png create mode 100644 cmd/mist/assets/backButtonHover@2x.png diff --git a/cmd/mist/assets/backButtonDisabled.png b/cmd/mist/assets/backButtonDisabled.png new file mode 100644 index 0000000000000000000000000000000000000000..42874787022eef2eaff8fb67735513c7b7273742 GIT binary patch literal 634 zcmV-=0)_pFP)Px%G)Y83R7ef&l+Q~WK@`V#X4jaN7@Nj)?WPeH%-WvBLl1?v(0`$ao&=$%;-TQx zgT#9;Jr{cr5<;-rqUb>>l)x6mm`#5m8k6FRMQM?egVaN^{SLSw?v5FI6MQhdnK$qI z$=i94NYb^ndx3hT@(4MEmq&RQLGh|>KSTUetx|arbkAbKz?yA8q=d{6Le^UQ`)_$b zZs}(QfSCY&#`<$-aIm0+LhrC&Kbzz2+g4cJ*hoOU3_kFCPTHZuAD^3{T@xrMq)7sqAXy4J@KV{-L_w2 zMBGEi$-1sPfu)N80xLul#!=ZzeB$D*RB9U_)`Xw`1qAFV#IKZ&j-sAUmjGGDnKeSl z{1p;11|_|rX*GBYur(plX_9Xaj~k5#zxMVPTFs_%;=03khlW^Zh0Rx?+TEQ_^!Mk` zgjPtBmcA5=F<}}KeL%!!)kvfoPbPEN8Vc(Y?jv(b3m>FMod(8poZ zoEF0cSBQxrM*!q+>UtedFo*L9x<4fX^;PJJ0CBK?-)9(KL*ei$&XYUk@~C&u^IRYk z0P+p)W70G&S(evvezRlSPk1mEzYxe004c(i@VB)>WO)~Yx$RQv9=i*&w!l--B2|=4 z-7r27N)IGOi3Y(~%s1G)M9gI;?w(^Y*fc8t9h56tA^Y?b0N5Bcuo(Q>uF4Di17(ku U7^JihtN;K207*qoM6N<$f+Jcd2><{9 literal 0 HcmV?d00001 diff --git a/cmd/mist/assets/backButtonDisabled@2x.png b/cmd/mist/assets/backButtonDisabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0eaa6daa5e2bbf73f7f34e9d34efeaaa719981e5 GIT binary patch literal 1458 zcmV;j1x@;iP)Px)Y)M2xRA>e5m`!XOMHI*P!;WJ+aa}tfj_ovY2t1c+3{xM`ENX#+(T0z{g)SsR*?C{7Brq=Blc07IM)d-%Wg zPUHiMch|c}NPg1no42z&@3(Jf-p;HbG^7!MMg$rW_MR zN$))iigK?cNfU6=BrrCyUMM`dXWza*_1;g{nR+Tc4i;u+ZjnXt7_M!i>zOEqWrxFX zKx_e=otg^Ck~A)eqF;R&#+J*);zRv=_x_>U1`d`3=5jf2vml%TLl1EvWPb&s(bs*! z;IaX(txKh?ngx|)GAXw(_6eW{wC*+oU0o@_1!3=JjH$2Nh$~A0Z%ZWJ5k>J~4gj!G zUwiwHn%xR*cnn$wxR}kp47lexoTs(*vtT50L9=P>4WoUHx9ioG0OqsVr{VlH?zGA6 zp6rapzSV4kA~?engzm3Tx*|9? zJ$(~=9tW9=e2bFwbGW~MOpv6q#&Qa9i(1{3G95vDzB(kvPQz<}JOkuq z@OX#nm9dgP5;^MGv13J}xCA|_)$3O3z&6qgRwr*Gaxe0Gkn2W}PQKUd-=N<|^oqQ_ zUTx?VBi9|QhC{A9TLnj}6iO$S!O_F%e#MKq+!F}*8$2RTmunii?ih+StF^6rA5+)f3+(M;l{jp{QMOpp;0Bzhg#@uN~QxhL&U!yI<+w9P_0R`b8mg}qB`Hhv8 z2g~KM4EqA$&hqniXbnS)XjGm`X1c=zsOI7i=IYV%>HjbF@Uy2!R#bODl6fJ{Q2qq@`WE_C+vq;Rr8 zHUPU_PUlJ5a*}PO=mylBo`IgHy4&Zw77T@sqPj^oAP2DJJVIMfvaJ$BfQTZtA3_R6 z-GtMYlD3u{2JMdwBoc3N+X`(6kQ@SH1Bw=`>dJ+-mbC1mHWEn`U%;~LrHWPm(J&yn z1SE~UVHEY7Ov^5OU8bpx1nqC;6@~I=-C_!myaIw|aS}!S+=b)u3H-gH*-j!MlEaIN za(l%ze>4q9E&)mT@Fdk~`31-^Xv&+^=)uVoKPXDCYMVUN1xP*tsX%>2bu7bHL$Mgm zY;}BMW_P;q8%|LaKed~Yx&g^4Aisc8H%{1k-e`+PX{M{6N9db#M8Rt`-XW2L}hYR_4^EM=S>}VpwbeBnm*zLecEz(uT+y{zuJk zwoL=-QIw}pYVN^pgV?TPfZ;bHvt_Jr=eN<;h(IF(jR-U%@E=9sA0t?4q9Ts}%>V!Z M07*qoM6N<$f;hmh*8l(j literal 0 HcmV?d00001 diff --git a/cmd/mist/assets/backButtonHover.png b/cmd/mist/assets/backButtonHover.png new file mode 100644 index 0000000000000000000000000000000000000000..8c5226f5a2b59ee83e8bc95ec5a062521892f792 GIT binary patch literal 657 zcmV;C0&e|@P)Px%OG!jQR7eeDU>F62LLkE5-xjEb5tlkZz;0x_tBI8Ek5p zunA%l0~%(-z{IqOi<|r0``^FkVN(MVW5FeXEFSLVrN+R_ype;0<7MBpX$*Y){60XJ zu0>V@V-qwm)YDUxnT>5bGc)u5maeW>K*P=gHE)6$fKKD}a;T*xCkq?fW(Gz^$+Fto zyHc{U_kjkK0$ukT-5?krpMgv)Vq(jHnoUzPGcW4s>%RwTDgg37!!(mbNBR3tj0y<& zzjXfm^d<9VyFrC^9usH>~DEN z!G(YS{+$B4EEGc#9svv&GBYw}0o5~wMMtv(U9|*=SL4x-A%&5JZd|?UH>Iy{<=3xY z|9<)URd@B~&7hbi8eq6kT}#Uim_%;<`St5J3lr0}C~t2;qD=!T#4r#jRxK+pf2W|b z@+Q!`ivL+z*N19rvk_}3hJipsJ_0ot7@3%Sib+g7&+z}h9gC{!T(S)WX#^Vj7)X_R z`uY8Ja&@87KAtSs)=uU@JC`S;I#)uv7R(bd8D1Puf!1R7cmOh$qEX=%dWzkU_?`{$3< z%B@?m<{X?}hS>x8o-W#e=A00000NkvXXu0mjfb?Yrw literal 0 HcmV?d00001 diff --git a/cmd/mist/assets/backButtonHover@2x.png b/cmd/mist/assets/backButtonHover@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..406601ebc562a63c6a1480b8589b1ebda9855a02 GIT binary patch literal 1517 zcmVPx)r%6OXRA>e5n14)LRTRhDzP7gAO34OJ$_P`LZb)#0ZDMdxM(7fLz2edg&@3TN zgQF8fyM+e_mp?D zWMOGv`x^I0PjcV6=biiR`Sjd(@4L4OMO300h-M&~frw^68PVR+c|~dIlM1CW*E2o+ ztlRBgkQy(dfaNxu1p&^XXazwyHzNr4uCA_YQXo}Q8cS(w=lN8XAbdh_^c=K#etsTG zny95U53aSnu<#y@QrU~vvGfG8_xBC2x3I6T?`m*8+-xN~pw((!q0wqTLx^Mw!>LrW z&pDl^w`65`luF47RLDBScJQp$>pQ`fL2!_Tn)>=-z-6I+44E|e?@GAHnn4ZEzm6GO z#Nt=%*>mxc?CcrQj)#_PaoX7Z{M_N6BNOXGrtrqIpw!@4!G^;-x~gD(Xn9 z)lN0LT%$2DF+Q>(?*Q)XQZ@8zNPs0JB?cYGbtCM(6k4TH%^hrRzMNn-dqtE!z`Z5b z!&0FDs*D_W3Q@O-k$u&*wL=?HQ|CncN9Z=O9=4J^iz|5kRYc`kWP4@hKz2?JTRsMH z--+x=-nFp)Zq8uZEG!-L5Lei2yD(divS=96 zp=TTpw${<`68tFh%cT)Buv8QmKdR)oukoeOQR_8k^X2xAj#129TI*=mz6iK)$tSl2 z%plgf6o7RxxRplZc#F$5F2WJd(MZ8j=K%q+)|~`g95p7XJ#b($#$;k^-MfH0v*d}) zHSi?y`RXx_Yza}kcj82n*XyNMgFbJ^BZGCb*MNYhdV0=3ym@m29-;S5F+4bEY;SF) zopKA=krpmc0BkbXK9-y7L_5uI7cQ8n{gsJ{Ri`^U)xY%je--HYaQy)@hycwfvAfF4 z$F^H6V=N%XxB;iOr6kQygk-om?Fk=OGyQ)F>bCE-FeRI}#EQkb(lj4fPt;^#;RYlgl-x)9L;p8_pP& zTHX8j&YcNA0|zPc%Oa8iDJmeZK-Hr7_kMe8YNj@(r45mf zM5R=|g6)}Y$qMfp)OPE3A@G%(sp`$fyo3Zs$!MW8eraG2`G*JhpH4)GEeAjJe^7t~3rn_^>qO>J!+ zwOZ}}lM=o)7@}T`Hf=6KlCS|ODnQsq_@R(l9X(K$k;q0)3$7c2=cAg>qR_2 zKy|+e!Uns=vXYs>YS{oOARwoq>QJW0exj=CYR1;BmpHZh?85kX-bZe?+|^t{0GeF{m|?zv)p6L-jg+hECN7&M!f|^pe-8UwxHgKB3U8=NECql z5{k0OWF0cAXT}|)0o8zV1jYX!;vECVKmf*}MC4s(F`_z}foKMz8Hi@!f6Tyt(OPuo TI$X5q00000NkvXXu0mjfzx3i{ literal 0 HcmV?d00001 diff --git a/cmd/mist/assets/qml/main.qml b/cmd/mist/assets/qml/main.qml index c9505806c..1272f8761 100644 --- a/cmd/mist/assets/qml/main.qml +++ b/cmd/mist/assets/qml/main.qml @@ -485,7 +485,7 @@ ApplicationWindow { label.visible = !on buttonLabel.visible = on } - + width: 192 height: 55 color: "#00000000" diff --git a/cmd/mist/assets/qml/views/browser.qml b/cmd/mist/assets/qml/views/browser.qml index a6f4e3d92..3a35c2a65 100644 --- a/cmd/mist/assets/qml/views/browser.qml +++ b/cmd/mist/assets/qml/views/browser.qml @@ -129,9 +129,9 @@ Rectangle { Button { id: back - - onClicked: { - webview.goBack() + z: 30 + onClicked: { + webview.goBack() } anchors { @@ -140,21 +140,23 @@ Rectangle { } style: ButtonStyle { - background: Image { - source: "../../backButton.png" - width: 20 - height: 30 - } + background: Image { + source: (webview.canGoBack) ? + (control.hovered ? "../../backButtonHover.png" : "../../backButton.png") : + "../../backButtonDisabled.png" + width: 20 + height: 30 + } } } Rectangle { - id: appInfoPane - height: 28 - color: "#FFFFFF" - radius: 6 - - MouseArea { + id: appInfoPane + height: 28 + color: "#FFFFFF" + radius: 6 + z:2 + MouseArea { anchors.fill: parent z: 10 hoverEnabled: true @@ -247,7 +249,7 @@ Rectangle { } } - z:2 + } Rectangle { @@ -256,6 +258,7 @@ Rectangle { height: 30 color: "#BDB6B6" radius: 6 + z:1 anchors { left: back.right @@ -264,19 +267,17 @@ Rectangle { rightMargin:10 top: parent.top topMargin: 23 - } - - z:1 + } } Rectangle { id: navBarBackground anchors.fill: parent + z:-1 gradient: Gradient { GradientStop { position: 0.0; color: "#F6F1F2" } GradientStop { position: 1.0; color: "#DED5D5" } } - z:-1 } states: [ From 666ef482392340ba111fa3347160468266ff3cb5 Mon Sep 17 00:00:00 2001 From: Alexandre Van de Sande Date: Mon, 16 Feb 2015 20:55:14 +0100 Subject: [PATCH 4/8] SideIcons work. Copy paste still doesn't. --- cmd/mist/assets/ext/mist.js | 35 +++++++++++++++++++++++++++ cmd/mist/assets/qml/views/browser.qml | 23 +++++++++--------- cmd/mist/assets/qml/views/catalog.qml | 10 +++++++- 3 files changed, 55 insertions(+), 13 deletions(-) create mode 100644 cmd/mist/assets/ext/mist.js diff --git a/cmd/mist/assets/ext/mist.js b/cmd/mist/assets/ext/mist.js new file mode 100644 index 000000000..8734f8dc7 --- /dev/null +++ b/cmd/mist/assets/ext/mist.js @@ -0,0 +1,35 @@ +// Copyright (c) 2015, ETHDEV. All rights reserved. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +// MA 02110-1301 USA + +// this function is included locally, but you can also include separately via a header definition + +console.log("loaded?"); + +document.onkeydown = function(evt) { + evt = evt || window.event; + if (evt.ctrlKey && evt.keyCode == 67) { + window.document.execCommand("copy"); + console.log("Ctrl-C"); + } else if (evt.ctrlKey && evt.keyCode == 88) { + window.document.execCommand("cut"); + console.log("Ctrl-X"); + } if (evt.ctrlKey && evt.keyCode == 86) { + console.log("Ctrl-V"); + } if (evt.ctrlKey && evt.keyCode == 90) { + console.log("Ctrl-Z"); + } +}; \ No newline at end of file diff --git a/cmd/mist/assets/qml/views/browser.qml b/cmd/mist/assets/qml/views/browser.qml index 6ded02fcb..9bee12cc6 100644 --- a/cmd/mist/assets/qml/views/browser.qml +++ b/cmd/mist/assets/qml/views/browser.qml @@ -3,7 +3,7 @@ import QtQuick.Controls 1.0; import QtQuick.Controls.Styles 1.0 import QtQuick.Layouts 1.0; import QtWebEngine 1.0 -import QtWebEngine.experimental 1.0 +//import QtWebEngine.experimental 1.0 import QtQuick.Window 2.0; Rectangle { @@ -340,8 +340,8 @@ Rectangle { WebEngineView { objectName: "webView" id: webview - experimental.settings.javascriptCanAccessClipboard: true - experimental.settings.localContentCanAccessRemoteUrls: true + //experimental.settings.javascriptCanAccessClipboard: true + //experimental.settings.localContentCanAccessRemoteUrls: true anchors { left: parent.left right: parent.right @@ -367,7 +367,12 @@ Rectangle { menuItem.title = pageTitle; }); - + webView.runJavaScript("document.querySelector(\"link[rel='icon']\").getAttribute(\"href\")", function(sideIcon){ + if(sideIcon){ + menuItem.icon = "http://localhost:3000/whisper-icon@2x.png" + }; + }); + webView.runJavaScript("try{document.querySelector(\"meta[name='ethereum-dapp-url-bar-style']\").getAttribute(\"content\")}catch(e){}", function(topBarStyle){ if (!topBarStyle) { showFullUrlBar(true); @@ -397,15 +402,9 @@ Rectangle { }; }); - // webView.runJavaScript("document.querySelector(\"link[rel='icon']\").getAttribute(\"href\")", function(sideIcon){ - // if(sideIcon){ - // window.iconSource = "http://localhost:3000/whisper-icon@2x.png" //webview.url + sideIcon - // console.log(iconSource) - // }; - // }); - + webview.runJavaScript(eth.readFile("bignumber.min.js")); - webview.runJavaScript(eth.readFile("ethereum.js/dist/ethereum.js")); + webview.runJavaScript(eth.readFile("ethereum.js/dist/ethereum.js")); var cleanTitle = webview.url.toString() var matches = cleanTitle.match(/^[a-z]*\:\/\/([^\/?#]+)(?:[\/?#]|$)/i); diff --git a/cmd/mist/assets/qml/views/catalog.qml b/cmd/mist/assets/qml/views/catalog.qml index 18a835ad2..497d69ed1 100644 --- a/cmd/mist/assets/qml/views/catalog.qml +++ b/cmd/mist/assets/qml/views/catalog.qml @@ -85,7 +85,7 @@ Rectangle { property var domain: "ethereum-dapp-catalog.meteor.com" url: protocol + domain - + //experimental.settings.javascriptCanAccessClipboard: true onJavaScriptConsoleMessage: { @@ -112,10 +112,18 @@ Rectangle { } } + // onLoadingChanged: { + // if (loadRequest.status == WebEngineView.LoadSucceededStatus) { + // webview.runJavaScript(eth.readFile("mist.js")); + // } + // } } + + + WebEngineView { id: inspector visible: false From c4b8c115294ea34d3e820c9e39bdda80af8026ff Mon Sep 17 00:00:00 2001 From: Alexandre Van de Sande Date: Tue, 17 Feb 2015 00:52:40 +0100 Subject: [PATCH 5/8] side icons --- cmd/mist/assets/browser.png | Bin 5329 -> 756 bytes cmd/mist/assets/browser@2x.png | Bin 0 -> 1603 bytes cmd/mist/assets/qml/main.qml | 67 +++++++++++++++++++++----- cmd/mist/assets/qml/views/browser.qml | 55 ++++++++++++++++++--- 4 files changed, 103 insertions(+), 19 deletions(-) create mode 100644 cmd/mist/assets/browser@2x.png diff --git a/cmd/mist/assets/browser.png b/cmd/mist/assets/browser.png index 7b3b0870c3e0232e98aea062f1111cc402533ee6..074c9ae3cf6ee974ee1e28cd7e203c711f792461 100644 GIT binary patch literal 756 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 && Number(badge)<999) { + menuItem.badgeNumber = Number(badge); + menuItem.badgeContent = "number" + } else if (badge == "warning") { + menuItem.badgeIcon = "\ue00e" + menuItem.badgeContent = "icon" + + } else if (badge == "ghost") { + menuItem.badgeIcon = "\ue01a" + menuItem.badgeContent = "icon" + + } else if (badge == "question") { + menuItem.badgeIcon = "\ue05d" + menuItem.badgeContent = "icon" + + } else if (badge == "info") { + menuItem.badgeIcon = "\ue08b" + menuItem.badgeContent = "icon" + + } else if (badge == "check") { + menuItem.badgeIcon = "\ue080" + menuItem.badgeContent = "icon" + + } else if (badge == "gear") { + menuItem.badgeIcon = "\ue09a" + menuItem.badgeContent = "icon" + + } + + + console.log(menuItem.badgeContent); + } else { + menuItem.badgeContent = "" + } + }); } } @@ -367,10 +404,12 @@ Rectangle { menuItem.title = pageTitle; }); - webView.runJavaScript("document.querySelector(\"link[rel='icon']\").getAttribute(\"href\")", function(sideIcon){ + webView.runJavaScript("try{document.querySelector(\"link[rel='icon']\").getAttribute(\"href\")}catch(e){}", function(sideIcon){ if(sideIcon){ - menuItem.icon = "http://localhost:3000/whisper-icon@2x.png" + menuItem.icon = webview.url + sideIcon; + console.log("icon: " + webview.url + sideIcon ); }; + console.log("no icon!" ); }); webView.runJavaScript("try{document.querySelector(\"meta[name='ethereum-dapp-url-bar-style']\").getAttribute(\"content\")}catch(e){}", function(topBarStyle){ From a22711a7b569fd9d29fe03591ef2c39d793877b1 Mon Sep 17 00:00:00 2001 From: Alexandre Van de Sande Date: Tue, 17 Feb 2015 11:22:52 +0100 Subject: [PATCH 6/8] badge support --- cmd/mist/assets/qml/main.qml | 11 +++++++---- cmd/mist/assets/qml/views/browser.qml | 7 ++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cmd/mist/assets/qml/main.qml b/cmd/mist/assets/qml/main.qml index 09a25b431..07e6d36da 100644 --- a/cmd/mist/assets/qml/main.qml +++ b/cmd/mist/assets/qml/main.qml @@ -580,6 +580,9 @@ ApplicationWindow { font.family: sourceSansPro.name font.weight: Font.DemiBold elide: Text.ElideRight + x:250 + color: "#665F5F" + font.pixelSize: 14 anchors { left: icon.right right: parent.right @@ -588,12 +591,12 @@ ApplicationWindow { rightMargin: 8 verticalCenterOffset: (secondaryTitle == "") ? 0 : -10; } - x:250 - color: "#665F5F" - font.pixelSize: 14 - } + + + } + Text { id: secondary font.family: sourceSansPro.name diff --git a/cmd/mist/assets/qml/views/browser.qml b/cmd/mist/assets/qml/views/browser.qml index 16290578a..54f5d755e 100644 --- a/cmd/mist/assets/qml/views/browser.qml +++ b/cmd/mist/assets/qml/views/browser.qml @@ -387,10 +387,9 @@ Rectangle { menuItem.badgeIcon = "\ue09a" menuItem.badgeContent = "icon" + } else { + menuItem.badgeContent = "" } - - - console.log(menuItem.badgeContent); } else { menuItem.badgeContent = "" } @@ -407,9 +406,7 @@ Rectangle { webView.runJavaScript("try{document.querySelector(\"link[rel='icon']\").getAttribute(\"href\")}catch(e){}", function(sideIcon){ if(sideIcon){ menuItem.icon = webview.url + sideIcon; - console.log("icon: " + webview.url + sideIcon ); }; - console.log("no icon!" ); }); webView.runJavaScript("try{document.querySelector(\"meta[name='ethereum-dapp-url-bar-style']\").getAttribute(\"content\")}catch(e){}", function(topBarStyle){ From 0de1d1dd588266961740b598da4e01e5efdf2d1f Mon Sep 17 00:00:00 2001 From: Alexandre Van de Sande Date: Tue, 17 Feb 2015 11:23:28 +0100 Subject: [PATCH 7/8] removed status bar code --- cmd/mist/assets/qml/main.qml | 73 ------------------------------------ 1 file changed, 73 deletions(-) diff --git a/cmd/mist/assets/qml/main.qml b/cmd/mist/assets/qml/main.qml index 07e6d36da..0a8776345 100644 --- a/cmd/mist/assets/qml/main.qml +++ b/cmd/mist/assets/qml/main.qml @@ -249,79 +249,6 @@ ApplicationWindow { } } - statusBar: StatusBar { - //height: 32 - visible: false - - id: statusBar - Label { - //y: 6 - id: walletValueLabel - - font.pixelSize: 10 - styleColor: "#797979" - } - - /* - Label { - //y: 6 - objectName: "miningLabel" - visible: true - font.pixelSize: 10 - anchors.right: lastBlockLabel.left - anchors.rightMargin: 5 - } - - Label { - id: lastBlockLabel - objectName: "lastBlockLabel" - visible: true - text: "---" - font.pixelSize: 10 - anchors.right: peerGroup.left - anchors.rightMargin: 5 - } - */ - - ProgressBar { - visible: false - id: downloadIndicator - value: 0 - objectName: "downloadIndicator" - y: -4 - x: statusBar.width / 2 - this.width / 2 - width: 160 - } - - Label { - visible: false - objectName: "downloadLabel" - //y: 7 - anchors.left: downloadIndicator.right - anchors.leftMargin: 5 - font.pixelSize: 10 - text: "0 / 0" - } - - - RowLayout { - id: peerGroup - //y: 7 - anchors.right: parent.right - MouseArea { - onDoubleClicked: peerWindow.visible = true - anchors.fill: parent - } - - Label { - id: peerCounterLabel - font.pixelSize: 10 - text: "0 / 0" - } - } - } - - property var blockModel: ListModel { id: blockModel } From fbd5e4d5afeaff6c250a3a953b18476cdb4b86ae Mon Sep 17 00:00:00 2001 From: Alexandre Van de Sande Date: Tue, 17 Feb 2015 11:52:22 +0100 Subject: [PATCH 8/8] Updated icons --- cmd/mist/assets/miner.png | Bin 2100 -> 0 bytes cmd/mist/assets/mining-icon.png | Bin 0 -> 1029 bytes cmd/mist/assets/mining-icon@2x.png | Bin 0 -> 2312 bytes cmd/mist/assets/qml/main.qml | 4 ++-- cmd/mist/assets/qml/views/miner.qml | 2 +- cmd/mist/assets/qml/views/wallet.qml | 1 - 6 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 cmd/mist/assets/miner.png create mode 100644 cmd/mist/assets/mining-icon.png create mode 100644 cmd/mist/assets/mining-icon@2x.png diff --git a/cmd/mist/assets/miner.png b/cmd/mist/assets/miner.png deleted file mode 100644 index 58e3f4dfee4a6cf043c9a2b0bfce9b0a5f0f7424..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2100 zcmV-42+Q}0P)>!a@hQcN$T8hLcYBU>r-lPBRS+7U_$_K zT>Q43)Sod3>QazugkDV)_kO~z<|oK@m6lIl!WvK7RFgkXInD8}Xm#Lw0s2hp5Lp~|sk5Dg2``VZK%8r4i29)9&U zCIIHk0wm7r%hG}4Cy^*^hn7tsfDIrlfePCQl^mt+PE1fe35Cu}T_+$8s9f#AY6uI5 zGLhz|44g2D!M$0kUOfYt1ydO92^S2%YAS4h4zX5u5}U`O`n&^$Ulk8y=sXTbpr{FA z1H^`~<5`AJz5)*}P%psL2JkK$%0mOrX}~ETMM_phRU}5?3smwL4W-64Fv<(^P^sa@ zC#M`Kg*c|bfZ+|O7vNFzRwnBVV+UL`7TNJCVu28hDFRaS9t0qjNIQo_q6z?zsHWz1 z5R~K7@vG2a)>bvQzk+%k*`FD!oUrVVR&< zz=UN)jR0i^MGfFW5NLq-@%cz-LA9(P?JYEZXEN%gp0y|75)TOg2QUBz1dNoxQBe;( z4`WLh@p0n-7+d9390-H>#SIZl)jW)KLu!W`2Y_oYq``3jJw_XoQDYFLi2*0Xi2y!H z0ZbN59Kh6(v=)LKCIlM+tGfo`r>Aqr0{J|NB-Fly=8YX>T?aOAE8qdf5~uzGDom&u z>sWK>YUZvP&uuSEQZV<$@mkY0P;QT2g^A#z9(jtPL+xiM0G@%hJ1-&(bhAJpNFcGf zr~t>hdogdzJW9i+Gwr%5%((Sh1=FTY(He6$&QT7=f{A-og9wg=umUgdypY~Xs2Seo zd)Sa&f=s__zAU_ds>m~lU5r$s-|};aJdboO^JMzXcgXq;8EI*4lb%Cs>)*^MN4g`f zG*^2ok!~32Nc8*6Ls!Z5cg`2}Qcu7G==0Bch`fp1asO}RrWp^&WB1-D^667iZJaiW zEJqgIH$k3U_^cdl?-bwnrI61{KA%(QTx+_f9C#6l>h^o{R5de@mr+plbk%6*9Gj)H4yqINhIpX z=5lnjcaksWDHMtTq|+&SrFxM{r%6T}TgmZW+feFL4oOe2#=|kf4XIbu1JtYLE3h2} zHXl7~z=NhCuxQLnOh4m&#I2_oIE3O-^2-F3kRS+X@9gBWoqK3)J)+RL)^trdluAAp zhjM7hm0c#LcCqr@XF30@EO^isd8sF00r~)!Y`YIBt}!C-M0gvK-$&T{vTVJ#QGR#p zB{F&3W%BrMpOyoMTIIFZH^_p8i{!zFA5rLBYr3W!ne^>T<>xnym34QXEhj&GUhL!g zG7@Q5J=9A*V{bfQ@YQ3u{=)~6?q(zM79wxNO{*d-MmF7roHP79+5Gp9q~&m%{Q1qd zq1 zucmKVVWg>PxcuU=r)2-3WAb@-UZHcX>6&sx{t|Csebrbt8PyckRuA=3&z|>#`gmdD zy4%_EL6r1pl-RB}Qdw>!Y(``?((y;+&MO-gD*%Eu6Pf#ZPZ3XTUjF#v28Hh>^B*bv~#pVSd{JK}O24K{tyLqj#KW7gbZD<$_=>b48&finXhr)3|Xg1 zFK*n;PM|eD_R8r7h(pi|=o_C%pLqYyDfkxffgI2k?>Y|z|JUsp@M7Zx;GVh<0Yac0 e2MNCFcKlz4b~d&P^jOOP0000fzY{ diff --git a/cmd/mist/assets/mining-icon.png b/cmd/mist/assets/mining-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..db611e5c0ee8f71b84f5a869536266d78235071d GIT binary patch literal 1029 zcmV+g1p51lP)Px&zez+vR7ef&R#{I|K@|R4DzzX&#add3YZP%I?i&$Yh%qrP(O`^df=lA|im(0v z-+b^v6IT)wP23U}R3fOj5RpZNR!y)jP@zI;xkwAW_c{mLYwvWSF~%n+xtX(l=giER zbLIm7$6r1HO(OoPfze}N%}WAunY~E^IgM~KG<|GxiNHGn9k$hgkL2-2+<+{QE*+K? z8fcaR8ixjAs~<__^boUTB+X*sCj(MVFTORhz=2pnV+O1TM(JSLBLUqK zd{v9!_QY~R@_HE4wHRHj1v1?TTv`p65YJwvtA=Szqt<%50hZk=MFLC%vWf^x3yx+U zu|qmWBP@H_&g=`|d>joll8hG0c4~0Ld6qw3CRY#2nGE@BykKk>rg~T>s*%4rhOMAf zWFTw)Z|N^e6_9QtT@Vrer@SHY_h3%7%`V(I;ZWHPYx%(|t$9VeS>Tjtwv=~3yNY~9 z(+|rUkv)%nCA+f{;N`+@6ChAB&U4DsaaC9Dy< zRBRhy-O+@s*@_@Y*k-Ie)_tnN6>#^;{21(X$z8`!ezxVWDd%zIi+qO5RY%I0@d0Q% z!wrb`fBAUEefj2to{Lup0gs2(54vB|D+E3nbY(cC7befnd3I#!U=mgmKwx# zScbb&NUqvpNXXBFEiGrgH||x5&aMGt=~jpyF9tt-1<~5%WdD!)rZ@gJ$6X#5jaLO^ zH`F^7*0H>yI3$&&ES7|KcTd5T!!NDgSBgrz4gnr+1M6fz=!5xSk!^%H%7lb|nPrIiza z^V}j}DC8@Ajv0`QSi&QIF{t&mp<}okQO!~rg?=$ur>di4|rUW^c z{YaUp1(J>$1v`Q7Y_|8J-Od8}LYV*aKRbb+t~_#c&VH0(00000NkvXXu0mjfMfK&Y literal 0 HcmV?d00001 diff --git a/cmd/mist/assets/mining-icon@2x.png b/cmd/mist/assets/mining-icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..16466d338c5829f10b8cc3971e7446e821e14075 GIT binary patch literal 2312 zcmV+j3HSDiP)Px-!bwCyRA>e58VhVw*Y(_IJ0TxJ2qB3bSjQShps*DPtfhlc%9@21!lZ6vkqSd% zlQwm$CUu!uHLcRRm2TZ8SS$Kr1vR6kz-U7tEP@cqCnJ!=d`hxF2!((hha^s7$FXDk z-JSCsM~3*>@7Zp;Nq&<3?mPF~bI&>V-t&78Ab!O)5Z6Fl191&Rt^pSL(C{N0z>v%V zrfWge0|*8jK|i`o0HVnQf*Bd;C;*eg2af%J%mq9H*;&aTlmHV-81Q8rSSJ8CGe$yj z{L#e>oRhFjk2pDqa}u~%;R5f$N1)5%!->s*%mi!%{X&5We?lP^qA*pW2o)m0!EmcX zt1JMl5dUzFvd@UDE{tY=)4jMt(c54g8umn%wRD>?u)b%F(HaXh!)ZG(bhj74c&-Vuogg@ zE*Q20XNx)au3P|}ccWoKZfq0eOl3@S3>ZJ>6-_^lWM|;^S9etbBu-`qE8{S~i+h%Q zUcwPqM4RTot)Ho7hT}B1I&M{B(-|=`!)c>nco&C8wE8Ni^rJJJb0==u0opx&V9f6q z1j7y#@Bk7XPvQJ>Fch!>1%1a4P;ytiMaiI`rCij-z0V?H^xxxtaSQhr(zz#IVmdpy z0=>ipwG{3i`Jmj0VFj+raxR$z}{FC;sJNkHuAk=d&fe; zo~4lprP9lJUbv`aEO{SfFMuXLGyj`uE0@2ZosyB#f4FArmCx#rd=Fq)ZcHdR`AH39 zZ5Z*ajymGGz;bKQ>23%$VW_?a$ewp&^@g22yFTo6_w;hF!@>LZR`#^7-B_-4n+2m! zJQ-Q;@nC(5VH7x{)$Awtpm@*-B5L_d*H%2U#q!$rHrLJD{Qk>z>kha4VOwkKqiZ(T zL+%vy^vPxA_ML^SY_(%Y@r_{Egsx%FC_q7jn7z7a)z3|3FB=_~TkeVO{XvvC!rji`RGjxa<@A>2t%P$8(P` zp&mT;L2ljiaZh{658pcvhFN1N2Zs=E#AEQ@Fi<+k6gkj64C-ii%j{)WZ71s7q8Ck4 z1ef#bb>2L4$w;X^ghyF7p#?S#6H$vA%bA#;r?DM9<-Pmbo8s`TJF<-3-yu4N zp#Q*Ov3q;DJK-x2D7LJ`8zs~jbxgmXrvF)1Kn`B?SN;s#j~@D-ykOpt{^hd7wAJ4d z`t~1&{)%c4hlXSa;Ua_MoDsU;*abprs-WMpS(jS)s9knI&<<|)l|+Je$_K6-1iiq( ztR^UPUTW@hHeZDabG`}*4?Y0)+B)cdeHWyzTnfqa=ib8st?u;6S1F^;q4!Q-oJlfweCN(ulHX^e;agJ;fz{p48yr;~xe5;Op*%4Ula3r+A3)cU~Y*-P8(r|RA0-#i00ZrxYOyZ-t% zA8NfW*;MbKgS+qcNNv|=9sKU=J9+Q!1KeZnlVF6`GV?Lz)(K_w`9edfoVcS@+)~(9v?V#%CeNW4+u7*nDSIRQh$F_NjIvltR7ppydM zwxV@^>)!Fc*?+EvO`W{^t#aP8^F!(U(K+n<=m@v``7Q3a)GVDn>Add#XIJ}E&+br@ zFGdxr5#Nyn+b^MQyqr0A`OWn|tG3miaZ*ew1=aOU-16!hlF=DBdXjrxE(vb0YjEG% z_>0;r(+Y}fL+q#kJ&rb`4z{C7m(D^)T5CbkbLJOcz3gne;ae%2oey_*No^@z`u*0{ z|2*>4uj(KzW0Y%!4az(yl_MS%4hfDHZNl3KQ}b}^z1>^Bzsu7*;d_Y}wLwTos{hYr!;pdnc2cnwv*(M|kew0;AI~<;O+3WB@aq=>w*{5% z&*O90v+Exd!#l&dKT=z|S2aHw3v~XrFX-jVyC~pkwS_6wD^Z27u=LDOgPQ50_Y_57 z8C0bumB_R$vzX=tGMaDVrp#3UE;S@%gKaq?G=Z0!9>+|&H;ZZOKF{|RM4RToxh`6{ zX|h`3OwsE23dmlp&{6rrU;RRXu_QuO14^vJt#TmEcss6v ixCY`Hh-+XxHSk|nY+^_(vZJ#A0000