From 0e2360591cf53d5923a9ba6704a1309301d04de9 Mon Sep 17 00:00:00 2001 From: abakkk Date: Thu, 7 Mar 2019 16:32:06 +0100 Subject: [PATCH] add square area --- draw.js | 18 +++++++++++++++++- extension.js | 3 ++- locale/draw-on-your-screen.pot | 3 +++ prefs.js | 1 + schemas/gschemas.compiled | Bin 2884 -> 2960 bytes ...extensions.draw-on-your-screen.gschema.xml | 5 +++++ stylesheet.css | 17 ++++++++++++----- 7 files changed, 40 insertions(+), 7 deletions(-) diff --git a/draw.js b/draw.js index e4ac7a9..491467d 100644 --- a/draw.js +++ b/draw.js @@ -52,7 +52,7 @@ var DrawingArea = new Lang.Class({ Name: 'DrawingArea', Extends: St.DrawingArea, - _init: function(params, helper) { + _init: function(params, monitor, helper) { this.parent({ style_class: 'draw-on-your-screen', name: params && params.name ? params.name : ""}); // 'style-changed' is emitted when 'this' is added to an actor @@ -62,12 +62,14 @@ var DrawingArea = new Lang.Class({ this.settings = Convenience.getSettings(); this.emitter = new DrawingAreaEmitter(); + this.monitor = monitor; this.helper = helper; this.elements = []; this.undoneElements = []; this.currentElement = null; this.currentShape = Shapes.NONE; + this.isSquareArea = false; this.hasBackground = false; this.textHasCursor = false; this.dashedLine = false; @@ -362,6 +364,20 @@ var DrawingArea = new Lang.Class({ this.get_parent().set_background_color(this.hasBackground ? this.activeBackgroundColor : null); }, + toggleSquareArea: function() { + this.isSquareArea = !this.isSquareArea; + if (this.isSquareArea) { + let squareWidth = Math.min(this.monitor.width, this.monitor.height) * 3 / 4; + this.set_position(Math.floor(this.monitor.width / 2 - squareWidth / 2), Math.floor(this.monitor.width / 2 - squareWidth / 2)); + this.set_size(squareWidth, squareWidth); + this.add_style_class_name('draw-on-your-screen-square-area'); + } else { + this.set_position(this.monitor.x, this.monitor.y); + this.set_size(this.monitor.width, this.monitor.height); + this.remove_style_class_name('draw-on-your-screen-square-area'); + } + }, + toggleColor: function() { this.selectColor((this.currentColor == this.colors[1]) ? 2 : 1); }, diff --git a/extension.js b/extension.js index 77b12a9..1b3975a 100644 --- a/extension.js +++ b/extension.js @@ -98,7 +98,7 @@ var AreaManager = new Lang.Class({ let monitor = this.monitors[i]; let helper = new Draw.DrawingHelper({ name: 'drawOnYourSreenHelper' + i }, monitor); let bgContainer = new St.Bin({ name: 'drawOnYourSreenContainer' + i }); - let area = new Draw.DrawingArea({ name: 'drawOnYourSreenArea' + i }, helper); + let area = new Draw.DrawingArea({ name: 'drawOnYourSreenArea' + i }, monitor, helper); bgContainer.set_child(area); Main.uiGroup.add_actor(bgContainer); Main.uiGroup.add_actor(helper); @@ -120,6 +120,7 @@ var AreaManager = new Lang.Class({ 'smooth-last-element': this.activeArea.smoothLastElement.bind(this.activeArea), 'save-as-svg': this.activeArea.save.bind(this.activeArea), 'toggle-background': this.activeArea.toggleBackground.bind(this.activeArea), + 'toggle-square-area': this.activeArea.toggleSquareArea.bind(this.activeArea), 'increment-line-width': () => this.activeArea.incrementLineWidth(1), 'decrement-line-width': () => this.activeArea.incrementLineWidth(-1), 'increment-line-width-more': () => this.activeArea.incrementLineWidth(5), diff --git a/locale/draw-on-your-screen.pot b/locale/draw-on-your-screen.pot index c3194bb..15b87a1 100644 --- a/locale/draw-on-your-screen.pot +++ b/locale/draw-on-your-screen.pot @@ -130,6 +130,9 @@ msgstr "" msgid "Add a drawing background" msgstr "" +msgid "Square drawing area" +msgstr "" + msgid "Save drawing as a SVG file" msgstr "" diff --git a/prefs.js b/prefs.js index 2f9737b..fd13a4e 100644 --- a/prefs.js +++ b/prefs.js @@ -63,6 +63,7 @@ var INTERNAL_KEYBINDINGS = { '-separator-4': '', 'toggle-panel-and-dock-visibility': "Hide panel and dock", 'toggle-background': "Add a drawing background", + 'toggle-square-area': "Square drawing area", '-separator-5': '', 'save-as-svg': "Save drawing as a SVG file", 'open-stylesheet': "Open stylesheet.css", diff --git a/schemas/gschemas.compiled b/schemas/gschemas.compiled index 1300e090abc1e5c980c9380c79ad189490eee477..37b8a67896cb5cb6b863c03995ed2d90d5aa141f 100644 GIT binary patch literal 2960 zcmZuzU1%It7`@d-V`JL%$C$LK#@1*e%&z(0K#Wvl+f;>=PzgR5Z+32Wr}BSm-U2@Z9s+hXe()lF>W%P+ z!4e3LT^^)Qy%qi}_&6|ssOc(wYSy^`{sIs?fBuI)^=A0X;H$vWOY=2co77eCuY>ni z3-R8GW7il@&2h+phk$cWpINO3I;;nr2hN<^<1(JQ2Jy4tH-UxcFHF#zv)`R;pij;5nFXH$YJYF~ias^lT>yUsT>C8b3VmwM*G2I6!05XdKBQ00 z{43xa!2E0H-=|N_^;w6F*#3*`cH2iW;`|LB@ZqElYe(M(WmD4p9U`i zkLx_t%yS;R3`A!PHP0Bbi8H3{w{$i0P>1UT%yY(uoEke)M29QO z?yl@-cU*UORCltUJr(`ziQ{|Li|?(7?~UVoqj)_o6D~S2qpVzB-z??vn9<{*3&GuB z6@6v+d09j^gl_sKZaH8M3GcrqK{ zLgU=)%)Cx5Cl_W#zxUa}K>x^8QF#LF{DshZl1?zL?YNT+C_g zrsR}P$bw~;l66h!`aQL_|NSF*Ya$q!!wydri?={AtfV}D``dB1Czi6~V&zAxAu*3d z-HtD(l_7n@pANfR&f~8gZ*HKYuH}?}KN|hN;JVmVmHV(9r(T$nHjc?e(WdnC<=nQ#ok;*^P%=DCyH54bhQ+mt7(Bu{hTFr0dP=hSIL=u+&SAS9iQmy~M;zS|waa&5GjJ=wcO2hyc&6b#;hiYN z-2mTn_XGTF0IC2yS;Ds_u8;7oi7QUr3)BO=cKAl*`*An01>n1pZ%)259{_N5hwn_j c6ZzKU`*km{8AxuR@Cbod9uG_R6COYR0T!ye8vpPBS~Rote#F zYX~YR_=EI8L$O#9qz{GUL5mMnQv?Y@p?%TjErJggYRQ8yK4|^E**iP4NgVk24&R(P z=iHw;_a1#sa}3S$6!|oO#|n1KeNrm}mv78>lld;D98=x{e_O676^|&&Jv@i2AtXF%gZxe&B$_<6zc|Rp+IyiVz$btg zX8*iFopufM3GgEDqSR?q{}{XiZ2t282>od@{wnw;FeLqH(|-fZNqb4^w5ivD+kn+K z7pl2_v@4(|z*E2x=}(*fv*0D5Zo~PPd1c{x`szz%i-QrmpP590M;) zoi_D0@G!7^;=)V@Sa0&b)u$nUJsngyA{TBE(5d1&1`TyJjpT*`jN5-F{KW)~t1YQO%PFzV* zr_K6T!8ZZ#%=IDaw5k6A{u?-V@3(KL(`KEORfq?i|KQAB>at}P`*rLs>a@8om%vwnzp~B#{Lp6JHSju6(f(Bx{b|=j-vpPT zU$owiS5l|VybaWVnmbM3Q>V@KO@P^J?3}Pv*PAm1`it6YbHvIsWhYdcyLxYbi ziW^PUU7SDE)g9*P4)W-jXit>RInpXazOL-rHhDdKTRPsJFm6u}H(EsR7XRMRzjr79 z#1{WV=${Du9iiJLb@Y#BjFdMpkH2i|7U|m(uP=<(7sQLK_bJ=3LXT5&z4MlzusEOd zrTf6cx)e8mG@mE^bb%9?TUzCwQfCYuTRm$#{8^&@!&+L557{#o+CB#&3(IMiFjdXc zRozZbsndpQOd6))%@sZm>&?h~@;h7#uzMrxb)+5VIRo!hP{a@WWi&tOIa<=g0UxO( zWn&C8!boR$nJLc4jLZv-cLClD&_4V#z8TE>0H58!V*rkCoP+)`<=->Vp0?dHcn{*8 zf%gdB5qRg|UFB(@2{;Jw{=&P(A%J&}dH_ctdRyUM!n=xL{r}V#>-XpVWDXxjwvT0F zsr;5!^vjjb@1&NTN;@`o2NK~a`b|ndSDO~9=Bn;=y5zlE8pog2l$JHj!ipB-q=Gnw zKI?Cupvgw_nbL2k!AAYCu7kRcdmM);91T4?=*fP4k-jWsUzS@**W64vKCQGa2Zw-W ovBMXNE7tGqFi!tGVYbM889_Y%5D+>J9mk%+-_bJJT5whV0|_9faR2}S diff --git a/schemas/org.gnome.shell.extensions.draw-on-your-screen.gschema.xml b/schemas/org.gnome.shell.extensions.draw-on-your-screen.gschema.xml index ef4d5e8..215a9c3 100644 --- a/schemas/org.gnome.shell.extensions.draw-on-your-screen.gschema.xml +++ b/schemas/org.gnome.shell.extensions.draw-on-your-screen.gschema.xml @@ -46,6 +46,11 @@ hide or show panel and dock hide or show panel and dock + + ["<Primary>n"] + toggle square area + toggle square area + ["<Primary>e"] select cercle diff --git a/stylesheet.css b/stylesheet.css index 9261fd1..13db721 100644 --- a/stylesheet.css +++ b/stylesheet.css @@ -46,11 +46,18 @@ /*********************************************/ -/* - * The following styles don't affect the drawing, - * but the "Ctrl + F1" on-screen-display - * - */ +/* square area */ + +.draw-on-your-screen-square-area { + outline: 2px solid rgba(255, 0, 0, 0.7); +} + +.draw-on-your-screen-square-area:insensitive { + outline: none; +} + +/* The following styles don't affect the drawing, + * but the "Ctrl + F1" on-screen-display */ .draw-on-your-screen-helper { margin: 0;