まず、jsonデータが現時点ではないので、開始初期データパス(2018-06-04 名前がややこしいので改称しました)の初期状態をユーザーパスから求めることにする。
これは、環境変数から求めるわけだが、実行しているOSによって求め方が違うので、まずOSの判定から。
filelist.py
import os
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.popup import Popup
from kivy.uix.treeview import TreeViewLabel
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import ObjectProperty, StringProperty
from pprint import pprint
from kivy.core.text import LabelBase, DEFAULT_FONT
from kivy.resources import resource_add_path
# 日本語フォント設定
resource_add_path('./fonts')
LabelBase.register(DEFAULT_FONT, 'ipaexg.ttf')
sm = ScreenManager()
class MsgboxOk(BoxLayout):
message_text = StringProperty()
ok_button = ObjectProperty(None)
class MsgboxOkCancel(BoxLayout):
message_text = StringProperty()
ok_button = ObjectProperty(None)
cancel_button = ObjectProperty(None)
class SetSCN(Screen):
def __init__(self, **kwargs):
super(SetSCN, self).__init__(**kwargs)
def msgTestOk(self):
pprint ('OKが押されました')
self.popup.dismiss()
def msgTestCancel(self):
pprint ('CANCELが押されました')
self.popup.dismiss()
def selfOk(self):
content = MsgboxOkCancel \
(ok_button= self.msgTestOk, \
cancel_button= self.msgTestCancel, \
message_text= 'とりあえずボタンを作りましたよ')
self.popup = Popup(title='ボタンだがや', content=content)
self.popup.open()
sm.current = 'all'
def selfCancel(self):
sm.current = 'all'
class LoadDialog(FloatLayout):
load = ObjectProperty(None)
cancel = ObjectProperty(None)
class AllSCN(Screen):
tv = ObjectProperty(None)
file_name = ObjectProperty(None)
loadfile = ObjectProperty(None)
text_input = ObjectProperty(None)
def __init__(self, **kwargs):
super(AllSCN, self).__init__(**kwargs)
thisos = os.name
if thisos == 'posix':
print ('UNIX系統が動いています')
elif thisos == 'nt':
print ('Windowsが動いています')
else:
print ('サポートしていないOSが動いています')
self.tv.add_node(TreeViewLabel(text ='シンカリオン E1 とき'))
self.tv.add_node(TreeViewLabel(text ='シンカリオン 0 ひかり'))
self.tv.add_node(TreeViewLabel(text ='シンカリオン キハ32 鉄道ホビートレイン'))
def setupButtonClicked(self):
sm.current = 'set'
def show_load(self):
content = LoadDialog(load = self.load, cancel = self.dismiss_popup)
self._popup = Popup( title="読み込み中", content=content, size_hint=(0.9,0.9))
self._popup.open()
def load (self, path, filename):
pprint(filename)
self.file_name.text = filename[0]
#with open (os.path.join(path, filename[0])) as stream:
# self.text_input.text = stream.read()
self.dismiss_popup()
def dismiss_popup(self):
self._popup.dismiss()
class FilelistApp(App):
def build(self):
sm.add_widget(AllSCN(name='all'))
sm.add_widget(SetSCN(name='set'))
return sm
if __name__ == '__main__':
FilelistApp().run()
OSの判定は、os.nameの内容より判定するわけで、
posixなら、UNIX系(Linuxはもちろんここ。)
ntなら、Windows
そのほかにjavaがあるそうだが、これがなにを指すのかわからない。javaで動くPython?
(参照 Python Documantaion 16.1. os — Miscellaneous operating system interfaces
https://docs.python.org/3/library/os.html)
それにしても、これを見ただけでは、何のことやらわからない。だいたい書いてある内容から推測は出来るのだがjavaがよくわからないのだ。
・・・・まあ、見なかったことにしようか。
そもそもiOS、Androidについては、標準ではPythonが動かないはずで、しかも動かす環境についてはまだ調べていない。
それに、kivyはPython3系では、iOSやAndroid(2018-05-31追記 勘違いでした)のサポートはまだっぽい(2019年度中?)ので、先延ばしにしときましょう。
それまでに、iOSやAndroidで動かすものを作るのであれば、素直にSwiftやKotlinを覚えて作ろう。
たぶん、どっちも似たようなもののはずだし(超楽観論)
さて、この実行結果がこれ。
この結果に戦慄をする!(かなり盛ってます)
なんで、2つも出るんだ!!!
(ここで、ウルトラセブンM78-3が流れる)
続く