しました。
Saveは、StyledTextCtrlのメソッドで簡単に出来ます。
SaveFile()
これ使うだけ。
状況に応じたダイアログを出す方が面倒でした。
Saveはいろんな場面で呼び出すので、専用関数を作成して、イベントハンドラからそれを呼び出すようにしました。
以下専用関数のコードです。
#保存を促す関数
def DataSeve(self):
if self.FileName != self.STARTFILE:
#新規でない場合は上書き保存を促す
with wx.MessageDialog(self,"上書き保存しますか?",
"上書き保存確認",wx.YES|wx.NO) as dlg:
ans = dlg.ShowModal()
#ダイアログからの戻り値がYESの場合
if ans == wx.ID_YES:
self.text.SaveFile(self.FileName)
#ダイアログからの戻り値がNOの場合
else:
#名前を付けて保存するか確認
with wx.MessageDialog(self,"名前を付けて保存しますか?",
"保存確認",wx.YES|wx.NO) as dig:
ans2 = dig.ShowModal()
#YESだったら名前を付けて保存Dialogを表示
if ans2 == wx.ID_YES:
self.NewDataSave()
#NOだったら何もしない
else:
return
else:
#新規の場合は名前を付けて保存
self.NewDataSave()
#新規保存用関数
def NewDataSave(self):
with wx.FileDialog(self,"名前を付けて保存",
wildcard = "textファイル(*.txt)|*.txt",
style = wx.FD_SAVE) as nameSaveDialog:
if nameSaveDialog.ShowModal() == wx.ID_CANCEL:
return
#パスを取得
saveFileName = nameSaveDialog.GetPath()
#保存
self.text.SaveFile(saveFileName)
#ステータスバーのファイル名を変更
self.SetStatusText(os.path.basename(saveFileName),0)
次から編集メニューの実装かな ^ ^