diff --git a/kivyblocks/download.py b/kivyblocks/download.py new file mode 100644 index 0000000..784df93 --- /dev/null +++ b/kivyblocks/download.py @@ -0,0 +1,7 @@ +from kivy.properties import StringProperty + +class DownloadFile(ClickableIconText): + def __init__(self, **kw): + pass + + diff --git a/kivyblocks/imgs/download.png b/kivyblocks/imgs/download.png new file mode 100644 index 0000000..99b9876 Binary files /dev/null and b/kivyblocks/imgs/download.png differ diff --git a/kivyblocks/imgs/upload.png b/kivyblocks/imgs/upload.png new file mode 100644 index 0000000..9dcf37a Binary files /dev/null and b/kivyblocks/imgs/upload.png differ diff --git a/kivyblocks/markdown.py b/kivyblocks/markdown.py index fea4163..58e98d5 100644 --- a/kivyblocks/markdown.py +++ b/kivyblocks/markdown.py @@ -191,7 +191,7 @@ class MarkdownBody(VBox): self.md_obj = md_obj super().__init__(**kw) self.padding=padding - self.size_hint = None,None + self.size_hint = 1,None self.bind(parent=self.resize) self.resize() @@ -205,6 +205,7 @@ class MarkdownBody(VBox): f(v) def resize(self, *args): + return Logger.info('MDBody:resize called') if self.parent: ps = [0,0,0,0] diff --git a/kivyblocks/register.py b/kivyblocks/register.py index 0219800..f4a9f2f 100644 --- a/kivyblocks/register.py +++ b/kivyblocks/register.py @@ -42,10 +42,12 @@ from .block_test import BlockTest from .hierarchy import Hierarchy from .price import PriceView from .ffpyplayer_video import FFVideo +from .upload import UploadFile r = Factory.register # if kivy.platform in ['win','linux', 'macosx']: # r('ScreenWithMic', ScreenWithMic) +r('UploadFile', UploadFile) r('FFVideo', FFVideo) r('AnchorBox', AnchorBox) r('FloatBox', FloatBox) diff --git a/kivyblocks/upload.py b/kivyblocks/upload.py new file mode 100644 index 0000000..078ade4 --- /dev/null +++ b/kivyblocks/upload.py @@ -0,0 +1,57 @@ +import os +from kivy.properties import StringProperty, ListProperty +from kivyblocks.utils import blockImage, CSize +import requests +from plyer import filechooser +from .i18n import I18n +from .clickable import ClickableIconText +from .baseWidget import Running +from .message import Error + +class UploadFile(ClickableIconText): + upload_url = StringProperty(None) + name = StringProperty('upfile') + # suffixes = ListProperty([]) + def __init__(self, **kw): + super().__init__(**kw) + self.otext = 'please select file' + self.img_kw = { + "size_hint":[None, None], + "width":CSize(1), + "height":CSize(1) + } + self.source = blockImage('upload.png') + self.file_url = None + self.running = None + + def getValue(self): + return { + self.name:self.file_url + } + + def on_press(self, *args): + i18n = I18n() + filechooser.open_file(title=i18n('open file'), + on_selection=self.file_selected) + + def file_selected(self, files): + running = Running(self) + def readfile(f): + with open(f, 'rb') as o: + d = o.read(102400) + if not d: + return + yield d + fpath = files[0] + fn = os.path.basename(fpath) + print('fn=', fn) + headers={ + 'Content-Type': 'application/octet-stream', + 'Content-Disposition':'attachments;filename={}'.format(fn) + } + r = requests.post(self.upload_url, + data=readfile(files[0]), + headers=headers + ) + running.dismiss() +