では、準備も出来たところなので、初期設定画面を作ることにしよう。
(2018-06-05 画面差し替え 左上のtextが初期パスから「開始パス」に変更されています。以下ソース、スクリーンショットは、この項では変更されていません)
- まず、あらかじめセーブしておいた開始データパスの初期情報(2018-06-04 名前がややこしいので改称しました)
初期データパスデータ(json)を、読み込む。- それがない場合は、環境設定のユーザーパスから開始データパスの初期情報
初期データパスを求める。- 自分が実行されているOSをもとめ、
- Windowsなら、環境変数HOMEDRIVEとHOMEPATHから、開始データパスの初期情報
初期データパスを求める。 - Linux系なら、環境変数HOMEから、開始データパスの初期情報
初期データパスを求める。
- Windowsなら、環境変数HOMEDRIVEとHOMEPATHから、開始データパスの初期情報
- 自分が実行されているOSをもとめ、
- それがない場合は、環境設定のユーザーパスから開始データパスの初期情報
- 「・・・」ボタンを押されたときは、ファイル選択画面(POPUP)が表示され、この設定値により開始データパスの初期情報
初期データパス変更する。 - 「OK」ボタンが押されたときは、開始データパスの初期情報
初期データパスをjsonで保存し、AllSCN画面に戻る。 - 「キャンセル」ボタンが押されたときは、なにもせずにAllSCN画面に戻る。
こんな感じで作っていこうと思う。
(以下、2018-05-28追記)
で、filelist.kvは、とりあえずこうする。
<SetSCN>:
BoxLayout:
orientation: 'vertical'
BoxLayout:
size_hint_y: 0.1
orientation: 'horizontal'
BoxLayout:
Label:
size_hint_x: 0.1
text: '初期Dir'
TextInput:
size_hint_x: 0.8
text: 'ファイルパス'
Button:
size_hint_x: 0.1
text: '…'
#on_release: root.xxxx()
BoxLayout:
size_hint_y: 0.8
BoxLayout:
size_hint_y: 0.1
Button:
size_hint_x: 0.5
text: 'OK'
on_release: root.selfOk()
Button:
size_hint_x: 0.5
text: 'キャンセル'
on_release: root.selfCancel()
<AllSCN>:
tv: tv
file_name: file_name
BoxLayout:
orientation: 'vertical'
BoxLayout: #OpnSCN
size_hint_y: 0.1
orientation: 'horizontal'
BoxLayout:
Button:
size_hint_x: 0.1
text: '設定'
on_release: root.setupButtonClicked()
TextInput:
id: file_name
size_hint_x: 0.7
text: 'ファイルパス'
Button:
size_hint_x: 0.1
text: '…'
on_release: root.show_load()
Button:
size_hint_x: 0.1
text: '実行'
BoxLayout: #ResultSCN
size_hint_y: 0.9
TreeView:
id: tv
<MsgboxOk>
orientation: 'vertical'
Label:
size_hint_y: 0.9
text: root.message_text
BoxLayout:
size_hint_y: 0.1
orientation: 'horizontal'
Button:
size_hint_x: 10
text: 'OK'
on_release: root.ok_button()
<MsgboxOkCancel>
orientation: 'vertical'
Label:
size_hint_y: 0.9
text: root.message_text
BoxLayout:
size_hint_y: 0.1
orientation: 'horizontal'
Button:
size_hint_x: 10
text: 'OK'
on_release: root.ok_button()
Button:
size_hint_x: 10
text: 'キャンセル'
on_release: root.cancel_button()
<LoadDialog>:
BoxLayout:
size: root.size
pos: root.pos
orientation: 'vertical'
FileChooserListView:
id: filechooser
BoxLayout:
size_hint_y : None
height : 30
Button:
text: 'キャンセル'
on_release: root.cancel()
Button:
text: '読み込み'
on_release: root.load(filechooser.path, filechooser.selection)
AllSCN:
それで、画面がこうできる。
ロジックを組む前に、とりあえず画面ができるなんて、kv言語って便利だね。
いままで、散々kv言語に悩まされてきたけど、はじめてその有用性を実感したよ。