diff -r ac16bad593cf -r 6dca42cd2b2b dialogs/CommentEditDialog.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dialogs/CommentEditDialog.py Wed Sep 26 18:08:57 2018 +0300 @@ -0,0 +1,86 @@ +# +# This file is part of Beremiz, a Integrated Development Environment for +# programming IEC 61131-3 automates supporting plcopen standard and CanFestival. +# +# Copyright (C) 2018: Andrey Skvortsov +# +# See COPYING file for copyrights details. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +from __future__ import absolute_import + +import wx + + +class CommentEditDialog(wx.Dialog): + """ + This dialog behaves like wx.TextEntryDialog, + but additionaly it allows to set custom font and + exact size for wx.TextCtrl. + That allows to edit comment and immediately + see how it'll be shown on wiresheet. + """ + + def __init__(self, parent, font, value="", size=wx.Size(400, 200)): + """ + Constructor + + :param parent: + parent window (wx.Window) + :param font: + the font for text control + :param value: + the default value, which may be the empty string + :param size: + desired initial size for text control. + Minimal size of text control is limited + by (100,100) + """ + wx.Dialog.__init__(self, parent, title=_("Please enter comment text")) + msg_label = wx.StaticText(self, label=_("Edit comment")) + input_size = wx.Size(max(size[0], 100), max(size[1], 100)) + input = wx.TextCtrl(self, style=wx.TE_MULTILINE) + input.SetInitialSize(input_size) + input.SetFont(font) + input.SetValue(value) + buttons = self.CreateButtonSizer(wx.OK | wx.CANCEL) + sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=3, vgap=10) + border = 20 + + sizer.Add(msg_label, 0, + flag=wx.TOP | wx.LEFT | wx.RIGHT, + border=border) + sizer.Add(input, 1, + flag=wx.EXPAND | wx.LEFT | wx.RIGHT, + border=border) + sizer.Add(buttons, 0, + flag=wx.EXPAND | wx.LEFT | wx.RIGHT | wx.BOTTOM, + border=border) + + self.SetSizerAndFit(sizer) + self.input = input + + def SetValue(self, value): + """Sets text value""" + self.input.SetValue(value) + + def GetValue(self): + """ + Returns the text that the user has entered + if the user has pressed wx.OK, + or the original value if the user has pressed Cancel. + """ + return self.input.GetValue()