Browse Source

Fix #67 and added unicode addon in the xterm.js sandbox

pull/71/head
Eugenio Parodi 3 years ago
parent
commit
7a76a72fc3
  1. 12
      TermTk/TTkCore/canvas.py
  2. 15
      TermTk/TTkCore/string.py
  3. 2
      TermTk/TTkTestWidgets/testwidget.py
  4. 9
      tests/sandbox/sandbox.html
  5. 10
      tests/sandbox/standalone.fullscreen.html
  6. 10
      tests/sandbox/standalone.html

12
TermTk/TTkCore/canvas.py

@ -22,8 +22,6 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
import unicodedata
from TermTk.TTkCore.TTkTerm.term import TTkTerm
from TermTk.TTkCore.constant import TTkK
from TermTk.TTkCore.log import TTkLog
@ -197,8 +195,7 @@ class TTkCanvas:
if self._data[y][x+a] == '':
self._data[y][x+a] = TTkCfg.theme.unicodeWideOverflowCh[0]
self._colors[y][x+a] = TTkCfg.theme.unicodeWideOverflowColor
if ( len(ch:=self._data[y][x+b-1])==1
and unicodedata.east_asian_width(ch)=='W'):
if TTkString._isWideCharData(self._data[y][x+b-1]):
self._data[y][x+b-1] = TTkCfg.theme.unicodeWideOverflowCh[1]
self._colors[y][x+b-1] = TTkCfg.theme.unicodeWideOverflowColor
@ -620,19 +617,16 @@ class TTkCanvas:
if self._data[y+iy][a]=='':
self._data[y+iy][a] = TTkCfg.theme.unicodeWideOverflowCh[0]
self._colors[y+iy][a] = TTkCfg.theme.unicodeWideOverflowColor
if ( len(ch:=self._data[y+iy][b-1])==1
and unicodedata.east_asian_width(ch)=='W'):
if TTkString._isWideCharData(self._data[y+iy][b-1]):
self._data[y+iy][b-1] = TTkCfg.theme.unicodeWideOverflowCh[1]
self._colors[y+iy][b-1] = TTkCfg.theme.unicodeWideOverflowColor
if ( a and len(ch:=self._data[y+iy][a-1])==1
and unicodedata.east_asian_width(ch)=='W'):
if TTkString._isWideCharData(self._data[y+iy][a-1]):
self._data[y+iy][a-1] = TTkCfg.theme.unicodeWideOverflowCh[1]
self._colors[y+iy][a-1] = TTkCfg.theme.unicodeWideOverflowColor
if ( b<self._width-1 and self._data[y+iy][b]=='' ):
self._data[y+iy][b] = TTkCfg.theme.unicodeWideOverflowCh[0]
self._colors[y+iy][b] = TTkCfg.theme.unicodeWideOverflowColor
def pushToTerminal(self, x, y, w, h):
# TTkLog.debug("pushToTerminal")
lastcolor = TTkColor.RST

15
TermTk/TTkCore/string.py

@ -537,7 +537,15 @@ class TTkString():
ret += self + s
return ret
# Zero/Half/Normal sized chars helpers:
# Unicode Zero/Half/Normal sized chars helpers:
@staticmethod
def _isWideCharData(ch):
if len(ch) == 1:
return unicodedata.east_asian_width(ch)=='W'
if len(ch) > 1:
return unicodedata.east_asian_width(ch[0])=='W'
return False
@staticmethod
def _isSpecialWidthChar(ch):
return ( unicodedata.east_asian_width(ch) == 'W' or
@ -594,7 +602,10 @@ class TTkString():
retCol += (self._colors[i],self._colors[i])
elif unicodedata.category(ch) in ('Me','Mn'):
if retTxt:
retTxt[-1]+=ch
if len(retTxt)>1 and retTxt[-1] == '':
retTxt[-2]+=ch
else:
retTxt[-1]+=ch
#else:
# retTxt = [f"{ch}"]
# retCol = [TTkColor.RST]

2
TermTk/TTkTestWidgets/testwidget.py

@ -33,7 +33,7 @@ from TermTk.TTkWidgets.frame import *
class _TestContent(TTkWidget):
def paintEvent(self):
# TTkLog.debug(f"Test Paint - {self._name}")
y=0; self._canvas.drawText(pos=(-5,y),text=TTkString(color=TTkColor.fg("#ff0000") ,text=" L😎rem ipsum dolor sit amet,"))
y=0; self._canvas.drawText(pos=(-5,y),text=TTkString(color=TTkColor.fg("#ff0000") ,text=" L😎rem ipsum dolor sit amet, ⌚⌚ ❤❤ 🙋🙋🙋'"))
y+=1; self._canvas.drawText(pos=(0,y), text=TTkString(color=TTkColor.fg("#ff8800") ,text="consectetur adipiscing elit,"))
y+=1; self._canvas.drawText(pos=(0,y), text=TTkString(color=TTkColor.fg("#ffff00") ,text="sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."))
y+=1; self._canvas.drawText(pos=(0,y), text=TTkString(color=TTkColor.fg("#00ff00") ,text="Ut enim ad minim veniam,"))

9
tests/sandbox/sandbox.html

@ -9,6 +9,7 @@
<link href="www/xterm/xterm.css" rel="stylesheet" />
<script src="www/xterm/xterm.js"></script>
<script src="www/xterm-addon-fit/xterm-addon-fit.js"></script>
<script src="www/xterm-addon-unicode11/xterm-addon-unicode11.js"></script>
<!--
<link href="https://ceccopierangiolieugenio.github.io/binaryRepo/pyTermTk/www/xterm/xterm.css" rel="stylesheet" />
<script src="https://ceccopierangiolieugenio.github.io/binaryRepo/pyTermTk/www/xterm/xterm.js"></script>
@ -88,10 +89,16 @@
<script type="text/javascript">
/* xterm.js demo */
/* https://www.npmjs.com/package/xterm-addon-fit */
const fitAddon = new FitAddon.FitAddon();
/* https://www.npmjs.com/package/xterm-addon-unicode11 */
const unicode11Addon = new Unicode11Addon.Unicode11Addon();
var term = new Terminal();
var term = new Terminal({allowProposedApi: true});
term.loadAddon(fitAddon);
term.loadAddon(unicode11Addon);
term.unicode.activeVersion = '11';
term.open(document.getElementById('terminal'));

10
tests/sandbox/standalone.fullscreen.html

@ -9,7 +9,7 @@
<link href="www/xterm/xterm.css" rel="stylesheet" />
<script src="www/xterm/xterm.js"></script>
<script src="www/xterm-addon-fit/xterm-addon-fit.js"></script>
<script src="www/xterm-addon-unicode11/xterm-addon-unicode11.js"></script>
<!--
<link href="https://ceccopierangiolieugenio.github.io/binaryRepo/pyTermTk/www/xterm/xterm.css" rel="stylesheet" />
<script src="https://ceccopierangiolieugenio.github.io/binaryRepo/pyTermTk/www/xterm/xterm.js"></script>
@ -22,10 +22,16 @@
<script type="text/javascript">
/* xterm.js demo */
/* https://www.npmjs.com/package/xterm-addon-fit */
const fitAddon = new FitAddon.FitAddon();
/* https://www.npmjs.com/package/xterm-addon-unicode11 */
const unicode11Addon = new Unicode11Addon.Unicode11Addon();
var term = new Terminal();
var term = new Terminal({allowProposedApi: true});
term.loadAddon(fitAddon);
term.loadAddon(unicode11Addon);
term.unicode.activeVersion = '11';
term.open(document.getElementById('terminal'));

10
tests/sandbox/standalone.html

@ -8,6 +8,7 @@
<link href="www/xterm/xterm.css" rel="stylesheet" />
<script src="www/xterm/xterm.js"></script>
<script src="www/xterm-addon-unicode11/xterm-addon-unicode11.js"></script>
<!--
<link href="https://ceccopierangiolieugenio.github.io/binaryRepo/pyTermTk/www/xterm/xterm.css" rel="stylesheet" />
<script src="https://ceccopierangiolieugenio.github.io/binaryRepo/pyTermTk/www/xterm/xterm.js"></script>
@ -19,7 +20,14 @@
<script type="text/javascript">
/* xterm.js demo */
var term = new Terminal();
/* https://www.npmjs.com/package/xterm-addon-unicode11 */
const unicode11Addon = new Unicode11Addon.Unicode11Addon();
var term = new Terminal({allowProposedApi: true});
term.loadAddon(unicode11Addon);
term.unicode.activeVersion = '11';
term.open(document.getElementById('terminal'));
term.write('xterm.js - Loaded\n\r')

Loading…
Cancel
Save