しました。

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)

 

次から編集メニューの実装かな ^ ^