Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
68e55688
Commit
68e55688
authored
Apr 27, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Draft mut(an)ed(itor)
parent
883810b5
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
8300 additions
and
0 deletions
+8300
-0
codemirror.css
ethereal/assets/muted/codemirror.css
+272
-0
debugger.html
ethereal/assets/muted/debugger.html
+53
-0
eclipse.css
ethereal/assets/muted/eclipse.css
+23
-0
index.html
ethereal/assets/muted/index.html
+38
-0
codemirror.js
ethereal/assets/muted/lib/codemirror.js
+7526
-0
go.js
ethereal/assets/muted/lib/go.js
+182
-0
matchbrackets.js
ethereal/assets/muted/lib/matchbrackets.js
+117
-0
muted.qml
ethereal/assets/qml/muted.qml
+65
-0
wallet.qml
ethereal/assets/qml/wallet.qml
+5
-0
ui_lib.go
ethereal/ui/ui_lib.go
+19
-0
No files found.
ethereal/assets/muted/codemirror.css
0 → 100644
View file @
68e55688
/* BASICS */
.CodeMirror
{
/* Set height, width, borders, and global font properties here */
font-family
:
monospace
;
height
:
300px
;
}
.CodeMirror-scroll
{
/* Set scrolling behaviour here */
overflow
:
auto
;
}
/* PADDING */
.CodeMirror-lines
{
padding
:
4px
0
;
/* Vertical padding around content */
}
.CodeMirror
pre
{
padding
:
0
4px
;
/* Horizontal padding of content */
}
.CodeMirror-scrollbar-filler
,
.CodeMirror-gutter-filler
{
background-color
:
white
;
/* The little square between H and V scrollbars */
}
/* GUTTER */
.CodeMirror-gutters
{
border-right
:
1px
solid
#ddd
;
background-color
:
#f7f7f7
;
white-space
:
nowrap
;
}
.CodeMirror-linenumbers
{}
.CodeMirror-linenumber
{
padding
:
0
3px
0
5px
;
min-width
:
20px
;
text-align
:
right
;
color
:
#999
;
-moz-box-sizing
:
content-box
;
box-sizing
:
content-box
;
}
/* CURSOR */
.CodeMirror
div
.CodeMirror-cursor
{
border-left
:
1px
solid
black
;
}
/* Shown when moving in bi-directional text */
.CodeMirror
div
.CodeMirror-secondarycursor
{
border-left
:
1px
solid
silver
;
}
.CodeMirror.cm-keymap-fat-cursor
div
.CodeMirror-cursor
{
width
:
auto
;
border
:
0
;
background
:
#7e7
;
}
/* Can style cursor different in overwrite (non-insert) mode */
div
.CodeMirror-overwrite
div
.CodeMirror-cursor
{}
.cm-tab
{
display
:
inline-block
;
}
.CodeMirror-ruler
{
border-left
:
1px
solid
#ccc
;
position
:
absolute
;
}
/* DEFAULT THEME */
.cm-s-default
.cm-keyword
{
color
:
#708
;}
.cm-s-default
.cm-atom
{
color
:
#219
;}
.cm-s-default
.cm-number
{
color
:
#164
;}
.cm-s-default
.cm-def
{
color
:
#00f
;}
.cm-s-default
.cm-variable
,
.cm-s-default
.cm-punctuation
,
.cm-s-default
.cm-property
,
.cm-s-default
.cm-operator
{}
.cm-s-default
.cm-variable-2
{
color
:
#05a
;}
.cm-s-default
.cm-variable-3
{
color
:
#085
;}
.cm-s-default
.cm-comment
{
color
:
#a50
;}
.cm-s-default
.cm-string
{
color
:
#a11
;}
.cm-s-default
.cm-string-2
{
color
:
#f50
;}
.cm-s-default
.cm-meta
{
color
:
#555
;}
.cm-s-default
.cm-qualifier
{
color
:
#555
;}
.cm-s-default
.cm-builtin
{
color
:
#30a
;}
.cm-s-default
.cm-bracket
{
color
:
#997
;}
.cm-s-default
.cm-tag
{
color
:
#170
;}
.cm-s-default
.cm-attribute
{
color
:
#00c
;}
.cm-s-default
.cm-header
{
color
:
blue
;}
.cm-s-default
.cm-quote
{
color
:
#090
;}
.cm-s-default
.cm-hr
{
color
:
#999
;}
.cm-s-default
.cm-link
{
color
:
#00c
;}
.cm-negative
{
color
:
#d44
;}
.cm-positive
{
color
:
#292
;}
.cm-header
,
.cm-strong
{
font-weight
:
bold
;}
.cm-em
{
font-style
:
italic
;}
.cm-link
{
text-decoration
:
underline
;}
.cm-s-default
.cm-error
{
color
:
#f00
;}
.cm-invalidchar
{
color
:
#f00
;}
div
.CodeMirror
span
.CodeMirror-matchingbracket
{
color
:
#0f0
;}
div
.CodeMirror
span
.CodeMirror-nonmatchingbracket
{
color
:
#f22
;}
.CodeMirror-activeline-background
{
background
:
#e8f2ff
;}
/* STOP */
/* The rest of this file contains styles related to the mechanics of
the editor. You probably shouldn't touch them. */
.CodeMirror
{
line-height
:
1
;
position
:
relative
;
overflow
:
hidden
;
background
:
white
;
color
:
black
;
}
.CodeMirror-scroll
{
/* 30px is the magic margin used to hide the element's real scrollbars */
/* See overflow: hidden in .CodeMirror */
margin-bottom
:
-30px
;
margin-right
:
-30px
;
padding-bottom
:
30px
;
height
:
100%
;
outline
:
none
;
/* Prevent dragging from highlighting the element */
position
:
relative
;
-moz-box-sizing
:
content-box
;
box-sizing
:
content-box
;
}
.CodeMirror-sizer
{
position
:
relative
;
border-right
:
30px
solid
transparent
;
-moz-box-sizing
:
content-box
;
box-sizing
:
content-box
;
}
/* The fake, visible scrollbars. Used to force redraw during scrolling
before actuall scrolling happens, thus preventing shaking and
flickering artifacts. */
.CodeMirror-vscrollbar
,
.CodeMirror-hscrollbar
,
.CodeMirror-scrollbar-filler
,
.CodeMirror-gutter-filler
{
position
:
absolute
;
z-index
:
6
;
display
:
none
;
}
.CodeMirror-vscrollbar
{
right
:
0
;
top
:
0
;
overflow-x
:
hidden
;
overflow-y
:
scroll
;
}
.CodeMirror-hscrollbar
{
bottom
:
0
;
left
:
0
;
overflow-y
:
hidden
;
overflow-x
:
scroll
;
}
.CodeMirror-scrollbar-filler
{
right
:
0
;
bottom
:
0
;
}
.CodeMirror-gutter-filler
{
left
:
0
;
bottom
:
0
;
}
.CodeMirror-gutters
{
position
:
absolute
;
left
:
0
;
top
:
0
;
padding-bottom
:
30px
;
z-index
:
3
;
}
.CodeMirror-gutter
{
white-space
:
normal
;
height
:
100%
;
-moz-box-sizing
:
content-box
;
box-sizing
:
content-box
;
padding-bottom
:
30px
;
margin-bottom
:
-32px
;
display
:
inline-block
;
/* Hack to make IE7 behave */
*
zoom
:
1
;
*
display
:
inline
;
}
.CodeMirror-gutter-elt
{
position
:
absolute
;
cursor
:
default
;
z-index
:
4
;
}
.CodeMirror-lines
{
cursor
:
text
;
}
.CodeMirror
pre
{
/* Reset some styles that the rest of the page might have set */
-moz-border-radius
:
0
;
-webkit-border-radius
:
0
;
border-radius
:
0
;
border-width
:
0
;
background
:
transparent
;
font-family
:
inherit
;
font-size
:
inherit
;
margin
:
0
;
white-space
:
pre
;
word-wrap
:
normal
;
line-height
:
inherit
;
color
:
inherit
;
z-index
:
2
;
position
:
relative
;
overflow
:
visible
;
}
.CodeMirror-wrap
pre
{
word-wrap
:
break-word
;
white-space
:
pre-wrap
;
word-break
:
normal
;
}
.CodeMirror-linebackground
{
position
:
absolute
;
left
:
0
;
right
:
0
;
top
:
0
;
bottom
:
0
;
z-index
:
0
;
}
.CodeMirror-linewidget
{
position
:
relative
;
z-index
:
2
;
overflow
:
auto
;
}
.CodeMirror-widget
{}
.CodeMirror-wrap
.CodeMirror-scroll
{
overflow-x
:
hidden
;
}
.CodeMirror-measure
{
position
:
absolute
;
width
:
100%
;
height
:
0
;
overflow
:
hidden
;
visibility
:
hidden
;
}
.CodeMirror-measure
pre
{
position
:
static
;
}
.CodeMirror
div
.CodeMirror-cursor
{
position
:
absolute
;
border-right
:
none
;
width
:
0
;
}
div
.CodeMirror-cursors
{
visibility
:
hidden
;
position
:
relative
;
z-index
:
1
;
}
.CodeMirror-focused
div
.CodeMirror-cursors
{
visibility
:
visible
;
}
.CodeMirror-selected
{
background
:
#d9d9d9
;
}
.CodeMirror-focused
.CodeMirror-selected
{
background
:
#d7d4f0
;
}
.CodeMirror-crosshair
{
cursor
:
crosshair
;
}
.cm-searching
{
background
:
#ffa
;
background
:
rgba
(
255
,
255
,
0
,
.4
);
}
/* IE7 hack to prevent it from returning funny offsetTops on the spans */
.CodeMirror
span
{
*
vertical-align
:
text-bottom
;
}
/* Used to force a border model for a node */
.cm-force-border
{
padding-right
:
.1px
;
}
@media
print
{
/* Hide the cursor when printing */
.CodeMirror
div
.CodeMirror-cursors
{
visibility
:
hidden
;
}
}
ethereal/assets/muted/debugger.html
0 → 100644
View file @
68e55688
<
!
doctype
>
<html>
<head>
<style
type=
"text/css"
>
html
,
body
{
margin
:
0
;
padding
:
0
;
min-height
:
100%
;
}
#debugger
{
height
:
100%
;
font-family
:
"Monaco"
}
#debugger
.line
{
overflow
:
none
;
}
#debugger
.col1
,
#debugger
.col2
{
float
:
left
;
padding
:
3px
;
}
#debugger
.col1
{
width
:
10px
;
padding-left
:
10px
-webkit-touch-callout
:
none
;
-webkit-user-select
:
none
;
-khtml-user-select
:
none
;
-moz-user-select
:
none
;
-ms-user-select
:
none
;
user-select
:
none
;
}
#debugger
.col2
{
width
:
90%
;
}
.prompt
{
color
:
"#5089D4"
;
}
</style>
</head>
<body>
<div
id=
"debugger"
>
<div
class=
"line"
>
<div
class=
"col1 prompt"
>
>
</div>
<div
class=
"col2"
contenteditable
>
</div>
</div>
</div>
</body>
</html>
ethereal/assets/muted/eclipse.css
0 → 100644
View file @
68e55688
.cm-s-eclipse
span
.cm-meta
{
color
:
#FF1717
;}
.cm-s-eclipse
span
.cm-keyword
{
line-height
:
1em
;
font-weight
:
bold
;
color
:
#7F0055
;
}
.cm-s-eclipse
span
.cm-atom
{
color
:
#219
;}
.cm-s-eclipse
span
.cm-number
{
color
:
#164
;}
.cm-s-eclipse
span
.cm-def
{
color
:
#00f
;}
.cm-s-eclipse
span
.cm-variable
{
color
:
black
;}
.cm-s-eclipse
span
.cm-variable-2
{
color
:
#0000C0
;}
.cm-s-eclipse
span
.cm-variable-3
{
color
:
#0000C0
;}
.cm-s-eclipse
span
.cm-property
{
color
:
black
;}
.cm-s-eclipse
span
.cm-operator
{
color
:
black
;}
.cm-s-eclipse
span
.cm-comment
{
color
:
#3F7F5F
;}
.cm-s-eclipse
span
.cm-string
{
color
:
#2A00FF
;}
.cm-s-eclipse
span
.cm-string-2
{
color
:
#f50
;}
.cm-s-eclipse
span
.cm-qualifier
{
color
:
#555
;}
.cm-s-eclipse
span
.cm-builtin
{
color
:
#30a
;}
.cm-s-eclipse
span
.cm-bracket
{
color
:
#cc7
;}
.cm-s-eclipse
span
.cm-tag
{
color
:
#170
;}
.cm-s-eclipse
span
.cm-attribute
{
color
:
#00c
;}
.cm-s-eclipse
span
.cm-link
{
color
:
#219
;}
.cm-s-eclipse
span
.cm-error
{
color
:
#f00
;}
.cm-s-eclipse
.CodeMirror-activeline-background
{
background
:
#e8f2ff
!important
;}
.cm-s-eclipse
.CodeMirror-matchingbracket
{
outline
:
1px
solid
grey
;
color
:
black
!important
;}
ethereal/assets/muted/index.html
0 → 100644
View file @
68e55688
<
!
doctype
>
<html>
<head>
<title>
Mutan Editor
</title>
<link
rel=
"stylesheet"
href=
"codemirror.css"
>
<link
rel=
"stylesheet"
href=
"eclipse.css"
>
<script
src=
"lib/codemirror.js"
></script>
<script
src=
"lib/matchbrackets.js"
></script>
<script
src=
"lib/go.js"
></script>
<style
type=
"text/css"
>
html
,
body
{
margin
:
0
;
padding
:
0
;
}
.CodeMirror
{
height
:
100%
;
}
</style>
</head>
<body>
<textarea
id=
"editor"
></textarea>
<script>
var
textArea
=
document
.
querySelector
(
"#editor"
)
var
editor
=
CodeMirror
.
fromTextArea
(
textArea
,
{
theme
:
"eclipse"
,
mode
:
"text/html"
,
lineNumbers
:
true
,
mode
:
"text/x-go"
,
indentUnit
:
8
,
tabSize
:
8
,
indentWithTabs
:
true
,
});
</script>
</body>
</html>
ethereal/assets/muted/lib/codemirror.js
0 → 100644
View file @
68e55688
This diff is collapsed.
Click to expand it.
ethereal/assets/muted/lib/go.js
0 → 100644
View file @
68e55688
(
function
(
mod
)
{
if
(
typeof
exports
==
"object"
&&
typeof
module
==
"object"
)
// CommonJS
mod
(
require
(
"../../lib/codemirror"
));
else
if
(
typeof
define
==
"function"
&&
define
.
amd
)
// AMD
define
([
"../../lib/codemirror"
],
mod
);
else
// Plain browser env
mod
(
CodeMirror
);
})(
function
(
CodeMirror
)
{
"use strict"
;
CodeMirror
.
defineMode
(
"go"
,
function
(
config
)
{
var
indentUnit
=
config
.
indentUnit
;
var
keywords
=
{
"break"
:
true
,
"case"
:
true
,
"chan"
:
true
,
"const"
:
true
,
"continue"
:
true
,
"default"
:
true
,
"defer"
:
true
,
"else"
:
true
,
"fallthrough"
:
true
,
"for"
:
true
,
"func"
:
true
,
"go"
:
true
,
"goto"
:
true
,
"if"
:
true
,
"import"
:
true
,
"interface"
:
true
,
"map"
:
true
,
"package"
:
true
,
"range"
:
true
,
"return"
:
true
,
"select"
:
true
,
"struct"
:
true
,
"switch"
:
true
,
"type"
:
true
,
"var"
:
true
,
"bool"
:
true
,
"byte"
:
true
,
"complex64"
:
true
,
"complex128"
:
true
,
"float32"
:
true
,
"float64"
:
true
,
"int8"
:
true
,
"int16"
:
true
,
"int32"
:
true
,
"int64"
:
true
,
"string"
:
true
,
"uint8"
:
true
,
"uint16"
:
true
,
"uint32"
:
true
,
"uint64"
:
true
,
"int"
:
true
,
"uint"
:
true
,
"uintptr"
:
true
,
"big"
:
true
,
"main"
:
true
,
"init"
:
true
,
"this"
:
true
};
var
atoms
=
{
"true"
:
true
,
"false"
:
true
,
"iota"
:
true
,
"nil"
:
true
,
"append"
:
true
,
"cap"
:
true
,
"close"
:
true
,
"complex"
:
true
,
"copy"
:
true
,
"imag"
:
true
,
"len"
:
true
,
"make"
:
true
,
"new"
:
true
,
"panic"
:
true
,
"print"
:
true
,
"println"
:
true
,
"real"
:
true
,
"recover"
:
true
,
};
var
isOperatorChar
=
/
[
+
\-
*&^%:=<>!|
\/]
/
;
var
curPunc
;
function
tokenBase
(
stream
,
state
)
{
var
ch
=
stream
.
next
();
if
(
ch
==
'"'
||
ch
==
"'"
||
ch
==
"`"
)
{
state
.
tokenize
=
tokenString
(
ch
);
return
state
.
tokenize
(
stream
,
state
);
}
if
(
/
[\d\.]
/
.
test
(
ch
))
{
if
(
ch
==
"."
)
{
stream
.
match
(
/^
[
0-9
]
+
([
eE
][\-
+
]?[
0-9
]
+
)?
/
);
}
else
if
(
ch
==
"0"
)
{
stream
.
match
(
/^
[
xX
][
0-9a-fA-F
]
+/
)
||
stream
.
match
(
/^0
[
0-7
]
+/
);
}
else
{
stream
.
match
(
/^
[
0-9
]
*
\.?[
0-9
]
*
([
eE
][\-
+
]?[
0-9
]
+
)?
/
);
}
return
"number"
;
}
if
(
/
[\[\]
{}
\(\)
,;
\:\.]
/
.
test
(
ch
))
{
curPunc
=
ch
;
return
null
;
}
if
(
ch
==
"/"
)
{
if
(
stream
.
eat
(
"*"
))
{
state
.
tokenize
=
tokenComment
;
return
tokenComment
(
stream
,
state
);
}
if
(
stream
.
eat
(
"/"
))
{
stream
.
skipToEnd
();
return
"comment"
;
}
}
if
(
isOperatorChar
.
test
(
ch
))
{
stream
.
eatWhile
(
isOperatorChar
);
return
"operator"
;
}
stream
.
eatWhile
(
/
[\w\$
_
]
/
);
var
cur
=
stream
.
current
();
if
(
keywords
.
propertyIsEnumerable
(
cur
))
{
if
(
cur
==
"case"
||
cur
==
"default"
)
curPunc
=
"case"
;
return
"keyword"
;
}
if
(
atoms
.
propertyIsEnumerable
(
cur
))
return
"atom"
;
return
"variable"
;
}
function
tokenString
(
quote
)
{
return
function
(
stream
,
state
)
{
var
escaped
=
false
,
next
,
end
=
false
;
while
((
next
=
stream
.
next
())
!=
null
)
{
if
(
next
==
quote
&&
!
escaped
)
{
end
=
true
;
break
;}
escaped
=
!
escaped
&&
next
==
"
\
\"
;
}
if (end || !(escaped || quote == "`"))
state.tokenize = tokenBase;
return "string";
};
}
function tokenComment(stream, state) {
var maybeEnd = false, ch;
while (ch = stream.next()) {
if (ch == "/" && maybeEnd) {
state.tokenize = tokenBase;
break;
}
maybeEnd = (ch == "*");
}
return "comment";
}
function Context(indented, column, type, align, prev) {
this.indented = indented;
this.column = column;
this.type = type;
this.align = align;
this.prev = prev;
}
function pushContext(state, col, type) {
return state.context = new Context(state.indented, col, type, null, state.context);
}
function popContext(state) {
var t = state.context.type;
if (t == ")" || t == "]" || t == "}")
state.indented = state.context.indented;
return state.context = state.context.prev;
}
// Interface
return {
startState: function(basecolumn) {
return {
tokenize: null,
context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
indented: 0,
startOfLine: true
};
},
token: function(stream, state) {
var ctx = state.context;
if (stream.sol()) {
if (ctx.align == null) ctx.align = false;
state.indented = stream.indentation();
state.startOfLine = true;
if (ctx.type == "case") ctx.type = "}";
}
if (stream.eatSpace()) return null;
curPunc = null;
var style = (state.tokenize || tokenBase)(stream, state);
if (style == "comment") return style;
if (ctx.align == null) ctx.align = true;
if (curPunc == "{") pushContext(state, stream.column(), "}");
else if (curPunc == "[") pushContext(state, stream.column(), "]");
else if (curPunc == "(") pushContext(state, stream.column(), ")");
else if (curPunc == "case") ctx.type = "case";
else if (curPunc == "}" && ctx.type == "}") ctx = popContext(state);
else if (curPunc == ctx.type) popContext(state);
state.startOfLine = false;
return style;
},
indent: function(state, textAfter) {
if (state.tokenize != tokenBase && state.tokenize != null) return 0;
var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);
if (ctx.type == "case" && /^(?:case|default)\b/.test(textAfter)) {
state.context.type = "}";
return ctx.indented;
}
var closing = firstChar == ctx.type;
if (ctx.align) return ctx.column + (closing ? 0 : 1);
else return ctx.indented + (closing ? 0 : indentUnit);
},
electricChars: "{}):",
fold: "brace",
blockCommentStart: "/*",
blockCommentEnd: "*/",
lineComment: "//"
};
});
CodeMirror.defineMIME("text/x-go", "go");
});
ethereal/assets/muted/lib/matchbrackets.js
0 → 100644
View file @
68e55688
(
function
(
mod
)
{
if
(
typeof
exports
==
"object"
&&
typeof
module
==
"object"
)
// CommonJS
mod
(
require
(
"../../lib/codemirror"
));
else
if
(
typeof
define
==
"function"
&&
define
.
amd
)
// AMD
define
([
"../../lib/codemirror"
],
mod
);
else
// Plain browser env
mod
(
CodeMirror
);
})(
function
(
CodeMirror
)
{
var
ie_lt8
=
/MSIE
\d
/
.
test
(
navigator
.
userAgent
)
&&
(
document
.
documentMode
==
null
||
document
.
documentMode
<
8
);
var
Pos
=
CodeMirror
.
Pos
;
var
matching
=
{
"("
:
")>"
,
")"
:
"(<"
,
"["
:
"]>"
,
"]"
:
"[<"
,
"{"
:
"}>"
,
"}"
:
"{<"
};
function
findMatchingBracket
(
cm
,
where
,
strict
,
config
)
{
var
line
=
cm
.
getLineHandle
(
where
.
line
),
pos
=
where
.
ch
-
1
;
var
match
=
(
pos
>=
0
&&
matching
[
line
.
text
.
charAt
(
pos
)])
||
matching
[
line
.
text
.
charAt
(
++
pos
)];
if
(
!
match
)
return
null
;
var
dir
=
match
.
charAt
(
1
)
==
">"
?
1
:
-
1
;
if
(
strict
&&
(
dir
>
0
)
!=
(
pos
==
where
.
ch
))
return
null
;
var
style
=
cm
.
getTokenTypeAt
(
Pos
(
where
.
line
,
pos
+
1
));
var
found
=
scanForBracket
(
cm
,
Pos
(
where
.
line
,
pos
+
(
dir
>
0
?
1
:
0
)),
dir
,
style
||
null
,
config
);
if
(
found
==
null
)
return
null
;
return
{
from
:
Pos
(
where
.
line
,
pos
),
to
:
found
&&
found
.
pos
,
match
:
found
&&
found
.
ch
==
match
.
charAt
(
0
),
forward
:
dir
>
0
};
}
// bracketRegex is used to specify which type of bracket to scan
// should be a regexp, e.g. /[[\]]/
//
// Note: If "where" is on an open bracket, then this bracket is ignored.
//
// Returns false when no bracket was found, null when it reached
// maxScanLines and gave up
function
scanForBracket
(
cm
,
where
,
dir
,
style
,
config
)
{
var
maxScanLen
=
(
config
&&
config
.
maxScanLineLength
)
||
10000
;
var
maxScanLines
=
(
config
&&
config
.
maxScanLines
)
||
1000
;
var
stack
=
[];
var
re
=
config
&&
config
.
bracketRegex
?
config
.
bracketRegex
:
/
[
(){}[
\]]
/
;
var
lineEnd
=
dir
>
0
?
Math
.
min
(
where
.
line
+
maxScanLines
,
cm
.
lastLine
()
+
1
)
:
Math
.
max
(
cm
.
firstLine
()
-
1
,
where
.
line
-
maxScanLines
);
for
(
var
lineNo
=
where
.
line
;
lineNo
!=
lineEnd
;
lineNo
+=
dir
)
{
var
line
=
cm
.
getLine
(
lineNo
);
if
(
!
line
)
continue
;
var
pos
=
dir
>
0
?
0
:
line
.
length
-
1
,
end
=
dir
>
0
?
line
.
length
:
-
1
;
if
(
line
.
length
>
maxScanLen
)
continue
;
if
(
lineNo
==
where
.
line
)
pos
=
where
.
ch
-
(
dir
<
0
?
1
:
0
);
for
(;
pos
!=
end
;
pos
+=
dir
)
{
var
ch
=
line
.
charAt
(
pos
);
if
(
re
.
test
(
ch
)
&&
(
style
===
undefined
||
cm
.
getTokenTypeAt
(
Pos
(
lineNo
,
pos
+
1
))
==
style
))
{
var
match
=
matching
[
ch
];
if
((
match
.
charAt
(
1
)
==
">"
)
==
(
dir
>
0
))
stack
.
push
(
ch
);
else
if
(
!
stack
.
length
)
return
{
pos
:
Pos
(
lineNo
,
pos
),
ch
:
ch
};
else
stack
.
pop
();
}
}
}
return
lineNo
-
dir
==
(
dir
>
0
?
cm
.
lastLine
()
:
cm
.
firstLine
())
?
false
:
null
;
}
function
matchBrackets
(
cm
,
autoclear
,
config
)
{
// Disable brace matching in long lines, since it'll cause hugely slow updates
var
maxHighlightLen
=
cm
.
state
.
matchBrackets
.
maxHighlightLineLength
||
1000
;
var
marks
=
[],
ranges
=
cm
.
listSelections
();
for
(
var
i
=
0
;
i
<
ranges
.
length
;
i
++
)
{
var
match
=
ranges
[
i
].
empty
()
&&
findMatchingBracket
(
cm
,
ranges
[
i
].
head
,
false
,
config
);
if
(
match
&&
cm
.
getLine
(
match
.
from
.
line
).
length
<=
maxHighlightLen
)
{
var
style
=
match
.
match
?
"CodeMirror-matchingbracket"
:
"CodeMirror-nonmatchingbracket"
;
marks
.
push
(
cm
.
markText
(
match
.
from
,
Pos
(
match
.
from
.
line
,
match
.
from
.
ch
+
1
),
{
className
:
style
}));
if
(
match
.
to
&&
cm
.
getLine
(
match
.
to
.
line
).
length
<=
maxHighlightLen
)
marks
.
push
(
cm
.
markText
(
match
.
to
,
Pos
(
match
.
to
.
line
,
match
.
to
.
ch
+
1
),
{
className
:
style
}));
}
}
if
(
marks
.
length
)
{
// Kludge to work around the IE bug from issue #1193, where text
// input stops going to the textare whever this fires.
if
(
ie_lt8
&&
cm
.
state
.
focused
)
cm
.
display
.
input
.
focus
();
var
clear
=
function
()
{
cm
.
operation
(
function
()
{
for
(
var
i
=
0
;
i
<
marks
.
length
;
i
++
)
marks
[
i
].
clear
();
});
};
if
(
autoclear
)
setTimeout
(
clear
,
800
);
else
return
clear
;
}
}
var
currentlyHighlighted
=
null
;
function
doMatchBrackets
(
cm
)
{
cm
.
operation
(
function
()
{
if
(
currentlyHighlighted
)
{
currentlyHighlighted
();
currentlyHighlighted
=
null
;}
currentlyHighlighted
=
matchBrackets
(
cm
,
false
,
cm
.
state
.
matchBrackets
);
});
}
CodeMirror
.
defineOption
(
"matchBrackets"
,
false
,
function
(
cm
,
val
,
old
)
{
if
(
old
&&
old
!=
CodeMirror
.
Init
)
cm
.
off
(
"cursorActivity"
,
doMatchBrackets
);
if
(
val
)
{
cm
.
state
.
matchBrackets
=
typeof
val
==
"object"
?
val
:
{};
cm
.
on
(
"cursorActivity"
,
doMatchBrackets
);
}
});
CodeMirror
.
defineExtension
(
"matchBrackets"
,
function
()
{
matchBrackets
(
this
,
true
);});
CodeMirror
.
defineExtension
(
"findMatchingBracket"
,
function
(
pos
,
strict
,
config
){
return
findMatchingBracket
(
this
,
pos
,
strict
,
config
);
});
CodeMirror
.
defineExtension
(
"scanForBracket"
,
function
(
pos
,
dir
,
style
,
config
){
return
scanForBracket
(
this
,
pos
,
dir
,
style
,
config
);
});
});
ethereal/assets/qml/muted.qml
0 → 100644
View file @
68e55688
import
QtQuick
2.0
import
QtWebKit
3.0
import
QtWebKit
.
experimental
1.0
import
QtQuick
.
Controls
1.0
;
import
QtQuick
.
Layouts
1.0
;
import
QtQuick
.
Window
2.1
;
import
Ethereum
1.0
ApplicationWindow
{
id
:
window
title
:
"muted"
width
:
900
height
:
600
minimumHeight
:
300
property
alias
url
:
webView
.
url
property
alias
debugUrl
:
debugView
.
url
property
alias
webView
:
webView
Item
{
id
:
root
anchors.fill
:
parent
WebView
{
objectName
:
"webView"
id
:
webView
anchors
{
top
:
root
.
top
right
:
root
.
right
left
:
root
.
left
bottom
:
sizeGrip
.
top
}
}
Rectangle
{
id
:
sizeGrip
color
:
"gray"
height
:
5
anchors
{
left
:
root
.
left
right
:
root
.
right
}
y
:
Math
.
round
(
root
.
height
*
2
/
3
)
MouseArea
{
anchors.fill
:
parent
drag.target
:
sizeGrip
drag.minimumY
:
0
drag.maximumY
:
root
.
height
-
sizeGrip
.
height
drag.axis
:
Drag
.
YAxis
}
}
WebView
{
id
:
debugView
objectName
:
"debugView"
anchors
{
left
:
root
.
left
right
:
root
.
right
bottom
:
root
.
bottom
top
:
sizeGrip
.
bottom
}
}
}
}
ethereal/assets/qml/wallet.qml
View file @
68e55688
...
...
@@ -23,6 +23,11 @@ ApplicationWindow {
shortcut
:
"Ctrl+o"
onTriggered
:
openAppDialog
.
open
()
}
MenuItem
{
text
:
"Muted"
shortcut
:
"Ctrl+e"
onTriggered
:
ui
.
muted
(
""
)
}
}
Menu
{
...
...
ethereal/ui/ui_lib.go
View file @
68e55688
...
...
@@ -108,6 +108,25 @@ func (ui *UiLib) OpenHtml(path string) {
}()
}
func
(
ui
*
UiLib
)
Muted
(
content
string
)
{
component
,
err
:=
ui
.
engine
.
LoadFile
(
ui
.
AssetPath
(
"qml/muted.qml"
))
if
err
!=
nil
{
ethutil
.
Config
.
Log
.
Debugln
(
err
)
return
}
win
:=
component
.
CreateWindow
(
nil
)
go
func
()
{
path
:=
"file://"
+
ui
.
AssetPath
(
"muted/index.html"
)
win
.
Set
(
"url"
,
path
)
debuggerPath
:=
"file://"
+
ui
.
AssetPath
(
"muted/debugger.html"
)
win
.
Set
(
"debugUrl"
,
debuggerPath
)
win
.
Show
()
win
.
Wait
()
}()
}
func
(
ui
*
UiLib
)
Connect
(
button
qml
.
Object
)
{
if
!
ui
.
connected
{
ui
.
eth
.
Start
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment