mirror of
https://github.com/shlomif/PySolFC.git
synced 2025-04-05 00:02:29 -04:00
Better and more convenient support for android back key.
This commit is contained in:
parent
957133999a
commit
93f0559549
3 changed files with 138 additions and 92 deletions
|
@ -58,7 +58,6 @@ from kivy.uix.treeview import TreeViewLabel
|
||||||
from kivy.core.window import Window
|
from kivy.core.window import Window
|
||||||
from kivy.cache import Cache
|
from kivy.cache import Cache
|
||||||
|
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
@ -78,6 +77,19 @@ class LBase(object):
|
||||||
def __init__(self, **kw):
|
def __init__(self, **kw):
|
||||||
super(LBase, self).__init__()
|
super(LBase, self).__init__()
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
class LPopCommander(LBase):
|
||||||
|
def __init__(self, **kw):
|
||||||
|
super(LPopCommander, self).__init__()
|
||||||
|
self.pop_command = kw['pop_command']
|
||||||
|
|
||||||
|
def pop(self):
|
||||||
|
if self.pop_command is not None:
|
||||||
|
self.pop_command(0)
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
|
@ -804,6 +816,21 @@ class LTreeRoot(TreeView, LBase):
|
||||||
super(LTreeRoot, self).__init__(**kw)
|
super(LTreeRoot, self).__init__(**kw)
|
||||||
self.kw = kw
|
self.kw = kw
|
||||||
|
|
||||||
|
def closeLastNode(self):
|
||||||
|
ret = False
|
||||||
|
lastopen = None
|
||||||
|
for ti in reversed(self.children):
|
||||||
|
if isinstance(ti, LTreeNode):
|
||||||
|
if ti.is_open:
|
||||||
|
lastopen = ti
|
||||||
|
|
||||||
|
if lastopen is not None:
|
||||||
|
self.toggle_node(lastopen)
|
||||||
|
self.select_node(lastopen)
|
||||||
|
ret = True
|
||||||
|
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
class LTreeNode(ButtonBehavior, TreeViewLabel, LBase):
|
class LTreeNode(ButtonBehavior, TreeViewLabel, LBase):
|
||||||
|
|
||||||
|
@ -1060,9 +1087,28 @@ class LTopLevel(BoxLayout, LBase):
|
||||||
self.add_widget(self.titleline)
|
self.add_widget(self.titleline)
|
||||||
self.add_widget(self.content)
|
self.add_widget(self.content)
|
||||||
|
|
||||||
# =============================================================================
|
def processAndroidBack(self):
|
||||||
|
ret = False
|
||||||
|
# try to collapse the last open tree node
|
||||||
|
# the treeview will be located inside of a scrollview
|
||||||
|
# (-> menubar.py)
|
||||||
|
for c in self.content.children:
|
||||||
|
print("childitem: %s" % str(c))
|
||||||
|
if isinstance(c, LScrollView):
|
||||||
|
for t in reversed(c.children):
|
||||||
|
# print(" childitem: %s" % str(t))
|
||||||
|
if isinstance(t, LTreeRoot):
|
||||||
|
ret = t.closeLastNode()
|
||||||
|
if isinstance(c, BoxLayout):
|
||||||
|
for t in reversed(c.children):
|
||||||
|
# print(" childitem: %s" % str(t))
|
||||||
|
if isinstance(t, LPopCommander):
|
||||||
|
ret = t.pop()
|
||||||
|
pass
|
||||||
|
return ret
|
||||||
|
|
||||||
# class LMenuBar(ActionBar):
|
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
|
||||||
class LMenuBar(BoxLayout, LBase):
|
class LMenuBar(BoxLayout, LBase):
|
||||||
|
@ -1490,10 +1536,15 @@ class LMainWindow(BoxLayout, LTkBase):
|
||||||
# multiclick detection
|
# multiclick detection
|
||||||
'''
|
'''
|
||||||
if touch.is_double_tap:
|
if touch.is_double_tap:
|
||||||
print('Touch is a double tap !')
|
# print('Touch is a double tap !')
|
||||||
print(' - interval is', touch.double_tap_time)
|
# print(' - interval is', touch.double_tap_time)
|
||||||
print(' - distance between previous is', touch.double_tap_distance)
|
# print(' - distance betw. previous is', touch.double_tap_distance)
|
||||||
|
# test the functions of Android back key
|
||||||
|
ret = self.processAndroidBack()
|
||||||
|
if (ret):
|
||||||
|
return ret
|
||||||
|
'''
|
||||||
|
'''
|
||||||
if touch.is_triple_tap:
|
if touch.is_triple_tap:
|
||||||
print('Touch is a triple tap !')
|
print('Touch is a triple tap !')
|
||||||
print(' - interval is', touch.triple_tap_time)
|
print(' - interval is', touch.triple_tap_time)
|
||||||
|
@ -1584,6 +1635,27 @@ class LMainWindow(BoxLayout, LTkBase):
|
||||||
def getWork(self, key):
|
def getWork(self, key):
|
||||||
return self.workStack.peek(key)
|
return self.workStack.peek(key)
|
||||||
|
|
||||||
|
def processAndroidBack(self):
|
||||||
|
ret = False
|
||||||
|
# try to close currently open popup windows, one by one
|
||||||
|
r = range(len(self.workStack.items))
|
||||||
|
rr = reversed(r)
|
||||||
|
for i in rr:
|
||||||
|
t = self.workStack.items[i]
|
||||||
|
print("stackkey: %s" % str(t[0]))
|
||||||
|
print("stackitem: %s" % str(t[1]))
|
||||||
|
if t[0] is 'playground':
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
if isinstance(t[1], LTopLevel):
|
||||||
|
ret = t[1].processAndroidBack()
|
||||||
|
if not ret:
|
||||||
|
self.popWork(t[0])
|
||||||
|
ret = True
|
||||||
|
if ret:
|
||||||
|
break
|
||||||
|
return ret
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
@ -1598,6 +1670,10 @@ class LApp(App):
|
||||||
if app is None:
|
if app is None:
|
||||||
return False # delegate
|
return False # delegate
|
||||||
|
|
||||||
|
# redirect to mainwindow to close popups and tree nodes
|
||||||
|
if (self.mainWindow.processAndroidBack()):
|
||||||
|
return True
|
||||||
|
|
||||||
# redirect to game undo last step
|
# redirect to game undo last step
|
||||||
app.menubar.mUndo()
|
app.menubar.mUndo()
|
||||||
return True # consumed
|
return True # consumed
|
||||||
|
|
|
@ -47,7 +47,8 @@ from kivy.clock import Clock
|
||||||
|
|
||||||
|
|
||||||
class SelectGameLeaf(SelectDialogTreeLeaf):
|
class SelectGameLeaf(SelectDialogTreeLeaf):
|
||||||
pass
|
def getContents(self):
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
class SelectGameNode(SelectDialogTreeNode):
|
class SelectGameNode(SelectDialogTreeNode):
|
||||||
|
|
|
@ -30,11 +30,12 @@ import formatter
|
||||||
|
|
||||||
# PySol imports
|
# PySol imports
|
||||||
from pysollib.mygettext import _
|
from pysollib.mygettext import _
|
||||||
from pysollib.pysoltk import bind, unbind_destroy
|
|
||||||
from pysollib.mfxutil import Struct, openURL
|
from pysollib.mfxutil import Struct, openURL
|
||||||
from pysollib.settings import TITLE
|
from pysollib.settings import TITLE
|
||||||
from pysollib.kivy.LApp import LTopLevel
|
from pysollib.kivy.LApp import LTopLevel
|
||||||
from pysollib.kivy.LApp import LScrollView
|
from pysollib.kivy.LApp import LScrollView
|
||||||
|
from pysollib.kivy.LApp import LPopCommander
|
||||||
|
from pysollib.kivy.LApp import get_platform
|
||||||
from pysollib.pysoltk import MfxMessageDialog
|
from pysollib.pysoltk import MfxMessageDialog
|
||||||
|
|
||||||
from kivy.uix.boxlayout import BoxLayout
|
from kivy.uix.boxlayout import BoxLayout
|
||||||
|
@ -108,11 +109,11 @@ class tkHTMLWriter(formatter.NullWriter):
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def write(self, data):
|
def write(self, data):
|
||||||
print('writer: write %s' % data)
|
# print('writer: write %s' % data)
|
||||||
self.text.insert("insert", data)
|
self.text.insert("insert", data)
|
||||||
|
|
||||||
def anchor_bgn(self, href, name, type):
|
def anchor_bgn(self, href, name, type):
|
||||||
print('writer: anchor_bgn %s - %s' % (href, name))
|
# print('writer: anchor_bgn %s - %s' % (href, name))
|
||||||
if href:
|
if href:
|
||||||
# self.text.update_idletasks() # update display during parsing
|
# self.text.update_idletasks() # update display during parsing
|
||||||
self.anchor = (href, name, type)
|
self.anchor = (href, name, type)
|
||||||
|
@ -128,10 +129,11 @@ class tkHTMLWriter(formatter.NullWriter):
|
||||||
# self.text.tag_config(tag, foreground=fg, underline=1)
|
# self.text.tag_config(tag, foreground=fg, underline=1)
|
||||||
|
|
||||||
def refpress(self, instance, value):
|
def refpress(self, instance, value):
|
||||||
print('writer: refpress %s, %s' % (instance, value))
|
# print('writer: refpress %s, %s' % (instance, value))
|
||||||
|
pass
|
||||||
|
|
||||||
def anchor_end(self):
|
def anchor_end(self):
|
||||||
print('writer: anchor_end')
|
# print('writer: anchor_end')
|
||||||
if self.anchor:
|
if self.anchor:
|
||||||
|
|
||||||
self.anchor = None
|
self.anchor = None
|
||||||
|
@ -148,7 +150,7 @@ class tkHTMLWriter(formatter.NullWriter):
|
||||||
self.text.config(cursor=self.viewer.defcursor)
|
self.text.config(cursor=self.viewer.defcursor)
|
||||||
|
|
||||||
def new_font(self, font):
|
def new_font(self, font):
|
||||||
print('writer: new_font %s' % str(font))
|
# print('writer: new_font %s' % str(font))
|
||||||
# end the current font
|
# end the current font
|
||||||
if self.font:
|
if self.font:
|
||||||
# print "end_font(%s)" % `self.font`
|
# print "end_font(%s)" % `self.font`
|
||||||
|
@ -170,11 +172,11 @@ class tkHTMLWriter(formatter.NullWriter):
|
||||||
self.font = None
|
self.font = None
|
||||||
|
|
||||||
def new_margin(self, margin, level):
|
def new_margin(self, margin, level):
|
||||||
print('writer: new_margin %s, %s' % (margin, level))
|
# print('writer: new_margin %s, %s' % (margin, level))
|
||||||
self.indent = " " * level
|
self.indent = " " * level
|
||||||
|
|
||||||
def send_label_data(self, data):
|
def send_label_data(self, data):
|
||||||
print('writer: send_label_data %s' % (data))
|
# print('writer: send_label_data %s' % (data))
|
||||||
# self.write(self.indent + data + " ")
|
# self.write(self.indent + data + " ")
|
||||||
self.write(self.indent)
|
self.write(self.indent)
|
||||||
if data == '*': # <li>
|
if data == '*': # <li>
|
||||||
|
@ -189,34 +191,35 @@ class tkHTMLWriter(formatter.NullWriter):
|
||||||
self.write(' ')
|
self.write(' ')
|
||||||
|
|
||||||
def send_paragraph(self, blankline):
|
def send_paragraph(self, blankline):
|
||||||
print('writer: send_paragraph %s' % (blankline))
|
# print('writer: send_paragraph %s' % (blankline))
|
||||||
self.write('\n' * blankline)
|
self.write('\n' * blankline)
|
||||||
|
|
||||||
def send_line_break(self):
|
def send_line_break(self):
|
||||||
print('writer: send_break')
|
# print('writer: send_break')
|
||||||
self.write('\n')
|
self.write('\n')
|
||||||
|
|
||||||
def send_hor_rule(self, *args):
|
def send_hor_rule(self, *args):
|
||||||
if (args):
|
if (args):
|
||||||
print('writer: send_hor_rule %s' % (args))
|
pass
|
||||||
|
# print('writer: send_hor_rule %s' % (args))
|
||||||
# width = int(int(self.text["width"]) * 0.9)
|
# width = int(int(self.text["width"]) * 0.9)
|
||||||
width = 20
|
width = 20
|
||||||
self.write("_" * width)
|
self.write("_" * width)
|
||||||
self.write("\n")
|
self.write("\n")
|
||||||
|
|
||||||
def send_literal_data(self, data):
|
def send_literal_data(self, data):
|
||||||
print('writer: send_literal_data %s' % (data))
|
# print('writer: send_literal_data %s' % (data))
|
||||||
self.write(data)
|
self.write(data)
|
||||||
|
|
||||||
def send_flowing_data(self, data):
|
def send_flowing_data(self, data):
|
||||||
print('writer: send_flowing_data %s' % (data))
|
# print('writer: send_flowing_data %s' % (data))
|
||||||
self.write(data)
|
self.write(data)
|
||||||
|
|
||||||
|
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
# *
|
# *
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
|
|
||||||
|
|
||||||
class tkHTMLParser(htmllib.HTMLParser):
|
class tkHTMLParser(htmllib.HTMLParser):
|
||||||
def anchor_bgn(self, href, name, type):
|
def anchor_bgn(self, href, name, type):
|
||||||
self.formatter.flush_softspace()
|
self.formatter.flush_softspace()
|
||||||
|
@ -224,13 +227,13 @@ class tkHTMLParser(htmllib.HTMLParser):
|
||||||
self.formatter.writer.anchor_bgn(href, name, type)
|
self.formatter.writer.anchor_bgn(href, name, type)
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
print('tkHTMLParser1: close()')
|
# print('tkHTMLParser1: close()')
|
||||||
self.formatter.writer.text.applyBuffer()
|
self.formatter.writer.text.applyBuffer()
|
||||||
label = self.formatter.writer.text.label
|
# label = self.formatter.writer.text.label
|
||||||
print('tkHTMLParser: label.refs %s' % str(label.refs))
|
# print('tkHTMLParser: label.refs %s' % str(label.refs))
|
||||||
# print ('tkHTMLParser: label.refs %s' % str(Label.refs))
|
# print ('tkHTMLParser: label.refs %s' % str(Label.refs))
|
||||||
|
|
||||||
print('tkHTMLParser2: close()')
|
# print('tkHTMLParser2: close()')
|
||||||
htmllib.HTMLParser.close(self)
|
htmllib.HTMLParser.close(self)
|
||||||
|
|
||||||
def anchor_end(self):
|
def anchor_end(self):
|
||||||
|
@ -274,7 +277,7 @@ class HTMLLabel(Label):
|
||||||
self.height = self.texture_size[1]
|
self.height = self.texture_size[1]
|
||||||
|
|
||||||
|
|
||||||
class HTMLText(LScrollView):
|
class HTMLText(LScrollView, LPopCommander):
|
||||||
def __init__(self, **kw):
|
def __init__(self, **kw):
|
||||||
super(HTMLText, self).__init__(**kw)
|
super(HTMLText, self).__init__(**kw)
|
||||||
|
|
||||||
|
@ -284,11 +287,11 @@ class HTMLText(LScrollView):
|
||||||
self.add_widget(self.label)
|
self.add_widget(self.label)
|
||||||
|
|
||||||
def applyBuffer(self):
|
def applyBuffer(self):
|
||||||
print('applybuffer:')
|
# print('applybuffer:')
|
||||||
self.label.text = self.textbuffer
|
self.label.text = self.textbuffer
|
||||||
|
|
||||||
def config(self, **kw):
|
def config(self, **kw):
|
||||||
print('config: %s' % kw)
|
# print('config: %s' % kw)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def update_idletasks(self):
|
def update_idletasks(self):
|
||||||
|
@ -304,16 +307,16 @@ class HTMLText(LScrollView):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def index(self, cmd):
|
def index(self, cmd):
|
||||||
print('index: %s' % cmd)
|
# print('index: %s' % cmd)
|
||||||
# was sollen wir hier zuruckgeben ?
|
# was sollen wir hier zuruckgeben ?
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def tag_add(self, font, fontmark, cmd):
|
def tag_add(self, font, fontmark, cmd):
|
||||||
print('tag_add: %s, %s, %s' % (font, fontmark, cmd))
|
# print('tag_add: %s, %s, %s' % (font, fontmark, cmd))
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def tag_config(self, tag, **kw):
|
def tag_config(self, tag, **kw):
|
||||||
print('tag_config: %s, %s' % (tag, kw))
|
# print('tag_config: %s, %s' % (tag, kw))
|
||||||
# self.tags[tag] = kw
|
# self.tags[tag] = kw
|
||||||
|
|
||||||
# for t, k in self.tags:
|
# for t, k in self.tags:
|
||||||
|
@ -322,11 +325,11 @@ class HTMLText(LScrollView):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def xview_moveto(self, xview):
|
def xview_moveto(self, xview):
|
||||||
print('xview_moveto: %s' % xview)
|
# print('xview_moveto: %s' % xview)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def yview_moveto(self, yview):
|
def yview_moveto(self, yview):
|
||||||
print('yview_moveto: %s' % yview)
|
# print('yview_moveto: %s' % yview)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@ -339,11 +342,18 @@ class HTMLViewer:
|
||||||
if self.history.index > 1:
|
if self.history.index > 1:
|
||||||
self.goBack(event)
|
self.goBack(event)
|
||||||
return None
|
return None
|
||||||
self.history.list = None
|
del self.history.list
|
||||||
self.history.index = 0
|
self.history.index = 0
|
||||||
parent.popWork(title)
|
parent.popWork(title)
|
||||||
return pop_command
|
return pop_command
|
||||||
|
|
||||||
|
def make_close_command(self, parent, title):
|
||||||
|
def close_command(event):
|
||||||
|
del self.history.list
|
||||||
|
self.history.index = 0
|
||||||
|
parent.popWork(title)
|
||||||
|
return close_command
|
||||||
|
|
||||||
def refpress(self, instance, value):
|
def refpress(self, instance, value):
|
||||||
# print('writer: refpress %s, %s' % (instance, value))
|
# print('writer: refpress %s, %s' % (instance, value))
|
||||||
self.updateHistoryXYView()
|
self.updateHistoryXYView()
|
||||||
|
@ -376,11 +386,12 @@ class HTMLViewer:
|
||||||
parent.popWork(self.title)
|
parent.popWork(self.title)
|
||||||
|
|
||||||
pc = self.make_pop_command(parent, self.title)
|
pc = self.make_pop_command(parent, self.title)
|
||||||
|
cc = self.make_close_command(parent, self.title)
|
||||||
|
|
||||||
# neuen Dialog aufbauen.
|
# neuen Dialog aufbauen.
|
||||||
|
|
||||||
window = LTopLevel(app.top, self.title, size_hint=(1.8, 1.0))
|
window = LTopLevel(app.top, self.title, size_hint=(1.8, 1.0))
|
||||||
window.titleline.bind(on_press=pc)
|
window.titleline.bind(on_press=cc)
|
||||||
self.parent.pushWork(self.title, window)
|
self.parent.pushWork(self.title, window)
|
||||||
self.window = window
|
self.window = window
|
||||||
self.running = True
|
self.running = True
|
||||||
|
@ -425,7 +436,8 @@ class HTMLViewer:
|
||||||
|
|
||||||
# create text widget
|
# create text widget
|
||||||
|
|
||||||
self.text = HTMLText(text="hallo", size_hint=(1.0, 1.0))
|
self.text = HTMLText(
|
||||||
|
pop_command=pc, text="hallo", size_hint=(1.0, 1.0))
|
||||||
self.text.label.bind(on_ref_press=self.refpress)
|
self.text.label.bind(on_ref_press=self.refpress)
|
||||||
content.add_widget(self.text)
|
content.add_widget(self.text)
|
||||||
'''
|
'''
|
||||||
|
@ -456,33 +468,6 @@ class HTMLViewer:
|
||||||
for name, fn in self.symbols_fn.items():
|
for name, fn in self.symbols_fn.items():
|
||||||
self.symbols_img[name] = self.getImage(fn)
|
self.symbols_img[name] = self.getImage(fn)
|
||||||
|
|
||||||
# self.initBindings()
|
|
||||||
|
|
||||||
def initBindings(self):
|
|
||||||
w = self.parent
|
|
||||||
bind(w, "WM_DELETE_WINDOW", self.destroy)
|
|
||||||
bind(w, "<Escape>", self.destroy)
|
|
||||||
bind(w, "<KeyPress-Prior>", self.page_up)
|
|
||||||
bind(w, "<KeyPress-Next>", self.page_down)
|
|
||||||
bind(w, "<KeyPress-Up>", self.unit_up)
|
|
||||||
bind(w, "<KeyPress-Down>", self.unit_down)
|
|
||||||
bind(w, "<KeyPress-Begin>", self.scroll_top)
|
|
||||||
bind(w, "<KeyPress-Home>", self.scroll_top)
|
|
||||||
bind(w, "<KeyPress-End>", self.scroll_bottom)
|
|
||||||
bind(w, "<KeyPress-BackSpace>", self.goBack)
|
|
||||||
|
|
||||||
def destroy(self, *event):
|
|
||||||
unbind_destroy(self.parent)
|
|
||||||
try:
|
|
||||||
self.parent.wm_withdraw()
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
try:
|
|
||||||
self.parent.destroy()
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
self.parent = None
|
|
||||||
|
|
||||||
def _yview(self, *args):
|
def _yview(self, *args):
|
||||||
self.text.yview(*args)
|
self.text.yview(*args)
|
||||||
return 'break'
|
return 'break'
|
||||||
|
@ -557,7 +542,15 @@ class HTMLViewer:
|
||||||
# far too limited to display anything but our documentation...
|
# far too limited to display anything but our documentation...
|
||||||
for p in REMOTE_PROTOCOLS:
|
for p in REMOTE_PROTOCOLS:
|
||||||
if url.startswith(p):
|
if url.startswith(p):
|
||||||
if not openURL(url):
|
plat = get_platform()
|
||||||
|
if plat == 'android':
|
||||||
|
pass
|
||||||
|
print("Open url: %s (TBD)" % url)
|
||||||
|
# import android
|
||||||
|
# tbd.
|
||||||
|
# start android webbrowser. with url
|
||||||
|
# ???
|
||||||
|
elif not openURL(url):
|
||||||
return
|
return
|
||||||
|
|
||||||
# locate the file relative to the current url
|
# locate the file relative to the current url
|
||||||
|
@ -575,8 +568,10 @@ class HTMLViewer:
|
||||||
file.close()
|
file.close()
|
||||||
file = None
|
file = None
|
||||||
except Exception:
|
except Exception:
|
||||||
|
print("Open url(1) - Exception: %s" % url)
|
||||||
if file:
|
if file:
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
'''
|
'''
|
||||||
self.errorDialog(_("Unable to service request:\n") + url)
|
self.errorDialog(_("Unable to service request:\n") + url)
|
||||||
'''
|
'''
|
||||||
|
@ -673,14 +668,6 @@ class HTMLViewer:
|
||||||
return self.images[fn]
|
return self.images[fn]
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
'''
|
|
||||||
try:
|
|
||||||
img = Tkinter.PhotoImage(master=self.parent, file=fn)
|
|
||||||
except:
|
|
||||||
img = None
|
|
||||||
self.images[fn] = img
|
|
||||||
return img
|
|
||||||
'''
|
|
||||||
|
|
||||||
def showImage(self, src, alt, ismap, align, width, height):
|
def showImage(self, src, alt, ismap, align, width, height):
|
||||||
url = self.basejoin(src)
|
url = self.basejoin(src)
|
||||||
|
@ -689,26 +676,8 @@ class HTMLViewer:
|
||||||
self.text.image_create(index="insert", image=img, padx=0, pady=0)
|
self.text.image_create(index="insert", image=img, padx=0, pady=0)
|
||||||
|
|
||||||
|
|
||||||
''
|
|
||||||
|
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
# *
|
# *
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
|
|
||||||
'''
|
''
|
||||||
def tkhtml_main(args):
|
|
||||||
try:
|
|
||||||
url = args[1]
|
|
||||||
except:
|
|
||||||
url = os.path.join(os.pardir, os.pardir, "data", "html", "index.html")
|
|
||||||
top = Tkinter.Tk()
|
|
||||||
top.wm_minsize(400, 200)
|
|
||||||
viewer = HTMLViewer(top)
|
|
||||||
viewer.app = None
|
|
||||||
viewer.display(url)
|
|
||||||
top.mainloop()
|
|
||||||
return 0
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
sys.exit(tkhtml_main(sys.argv))
|
|
||||||
'''
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue