Skip to content

Commit

Permalink
wxGUI Console: Button reorganization (OSGeo#2746)
Browse files Browse the repository at this point in the history
* now we have just one clear button to clear both output and prompt
* larger prompt area
  • Loading branch information
lindakarlovska authored and neteler committed Nov 7, 2023
1 parent ea1d695 commit 4fb0aac
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 82 deletions.
2 changes: 1 addition & 1 deletion gui/wxpython/gmodeler/dialogs.py
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ def Reset(self):
self.search.Reset()
self.label.SetValue("")
self.comment.SetValue("")
self.cmd_prompt.OnCmdErase(None)
self.cmd_prompt.CmdErase()
self.cmd_prompt.SetFocus()


Expand Down
109 changes: 30 additions & 79 deletions gui/wxpython/gui_core/goutput.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
)
from core.globalvar import CheckWxVersion, wxPythonPhoenix
from gui_core.prompt import GPromptSTC
from gui_core.wrap import Button, ClearButton, StaticText, StaticBox
from gui_core.wrap import Button, ClearButton, StaticText
from core.settings import UserSettings


Expand Down Expand Up @@ -135,37 +135,23 @@ def __init__(
if not self._gcstyle & GC_PROMPT:
self.cmdPrompt.Hide()

if self._gcstyle & GC_PROMPT:
cmdLabel = _("Command prompt")
self.outputBox = StaticBox(
parent=self.panelOutput, id=wx.ID_ANY, label=" %s " % _("Output window")
)

self.cmdBox = StaticBox(
parent=self.panelOutput, id=wx.ID_ANY, label=" %s " % cmdLabel
)

# buttons
self.btnOutputClear = ClearButton(parent=self.panelOutput)
self.btnOutputClear.SetToolTip(_("Clear output window content"))
self.btnCmdClear = ClearButton(parent=self.panelOutput)
self.btnCmdClear.SetToolTip(_("Clear command prompt content"))
self.btnOutputSave = Button(parent=self.panelOutput, id=wx.ID_SAVE)
self.btnOutputSave.SetToolTip(_("Save output window content to the file"))
self.btnClear = ClearButton(parent=self.panelPrompt)
self.btnClear.SetToolTip(_("Clear prompt and output window"))
self.btnOutputSave = Button(parent=self.panelPrompt, id=wx.ID_SAVE)
self.btnOutputSave.SetToolTip(_("Save output to a file"))
self.btnCmdAbort = Button(parent=self.panelProgress, id=wx.ID_STOP)
self.btnCmdAbort.SetToolTip(_("Abort running command"))
self.btnCmdExportHistory = Button(parent=self.panelOutput, id=wx.ID_ANY)
self.btnCmdExportHistory = Button(parent=self.panelPrompt, id=wx.ID_ANY)
self.btnCmdExportHistory.SetLabel(_("&Export history"))
self.btnCmdExportHistory.SetToolTip(
_("Export history of executed commands to a file")
)

if not self._gcstyle & GC_PROMPT:
self.btnCmdClear.Hide()
self.btnCmdExportHistory.Hide()

self.btnCmdClear.Bind(wx.EVT_BUTTON, self.cmdPrompt.OnCmdErase)
self.btnOutputClear.Bind(wx.EVT_BUTTON, self.OnOutputClear)
self.btnClear.Bind(wx.EVT_BUTTON, self.OnClear)
self.btnOutputSave.Bind(wx.EVT_BUTTON, self.OnOutputSave)
self.btnCmdAbort.Bind(wx.EVT_BUTTON, self._gconsole.OnCmdAbort)
self.btnCmdExportHistory.Bind(wx.EVT_BUTTON, self.OnCmdExportHistory)
Expand All @@ -176,13 +162,6 @@ def _layout(self):
"""Do layout"""
self.outputSizer = wx.BoxSizer(wx.VERTICAL)
progressSizer = wx.BoxSizer(wx.HORIZONTAL)
btnSizer = wx.BoxSizer(wx.HORIZONTAL)
if self._gcstyle & GC_PROMPT:
outBtnSizer = wx.StaticBoxSizer(self.outputBox, wx.HORIZONTAL)
cmdBtnSizer = wx.StaticBoxSizer(self.cmdBox, wx.HORIZONTAL)
else:
outBtnSizer = wx.BoxSizer(wx.HORIZONTAL)
cmdBtnSizer = wx.BoxSizer(wx.HORIZONTAL)

if self._gcstyle & GC_PROMPT:
promptSizer = wx.BoxSizer(wx.VERTICAL)
Expand All @@ -202,45 +181,27 @@ def _layout(self):
)
promptSizer.Add(helpText, proportion=0, flag=wx.EXPAND | wx.LEFT, border=5)

btnSizer = wx.BoxSizer(wx.HORIZONTAL)
btnSizer.Add(
self.btnOutputSave,
proportion=0,
flag=wx.EXPAND | wx.LEFT | wx.RIGHT,
border=5,
)
btnSizer.Add(
self.btnCmdExportHistory,
proportion=0,
flag=wx.EXPAND | wx.LEFT | wx.RIGHT,
border=5,
)
btnSizer.AddStretchSpacer()
btnSizer.Add(self.btnClear, proportion=0, flag=wx.EXPAND, border=5)
promptSizer.Add(btnSizer, proportion=0, flag=wx.ALL | wx.EXPAND, border=5)

self.outputSizer.Add(
self.cmdOutput, proportion=1, flag=wx.EXPAND | wx.ALL, border=3
)
if self._gcstyle & GC_PROMPT:
proportion = 1
else:
proportion = 0
outBtnSizer.AddStretchSpacer()

outBtnSizer.Add(
self.btnOutputClear,
proportion=proportion,
flag=wx.ALIGN_LEFT | wx.LEFT | wx.RIGHT | wx.BOTTOM,
border=5,
)

outBtnSizer.Add(
self.btnOutputSave,
proportion=proportion,
flag=wx.RIGHT | wx.BOTTOM,
border=5,
)

cmdBtnSizer.Add(
self.btnCmdExportHistory,
proportion=1,
flag=wx.ALIGN_CENTER
| wx.ALIGN_CENTER_VERTICAL
| wx.LEFT
| wx.RIGHT
| wx.BOTTOM,
border=5,
)
cmdBtnSizer.Add(
self.btnCmdClear,
proportion=1,
flag=wx.ALIGN_CENTER | wx.RIGHT | wx.BOTTOM,
border=5,
)
progressSizer.Add(
self.btnCmdAbort, proportion=0, flag=wx.ALL | wx.ALIGN_CENTER, border=5
)
Expand All @@ -253,16 +214,7 @@ def _layout(self):

self.panelProgress.SetSizer(progressSizer)
progressSizer.Fit(self.panelProgress)

btnSizer.Add(outBtnSizer, proportion=1, flag=wx.ALL | wx.ALIGN_CENTER, border=5)
btnSizer.Add(
cmdBtnSizer,
proportion=1,
flag=wx.ALIGN_CENTER | wx.TOP | wx.BOTTOM | wx.RIGHT,
border=5,
)
self.outputSizer.Add(self.panelProgress, proportion=0, flag=wx.EXPAND)
self.outputSizer.Add(btnSizer, proportion=0, flag=wx.EXPAND)

self.outputSizer.Fit(self)
self.outputSizer.SetSizeHints(self)
Expand All @@ -274,12 +226,10 @@ def _layout(self):
self.panelPrompt.SetSizer(promptSizer)

# split window
if self._gcstyle & GC_PROMPT:
self.SplitHorizontally(self.panelOutput, self.panelPrompt, -50)
else:
self.SplitHorizontally(self.panelOutput, self.panelPrompt, -45)
self.SplitHorizontally(self.panelOutput, self.panelPrompt, 0)
if not (self._gcstyle & GC_PROMPT):
self.Unsplit()
self.SetMinimumPaneSize(self.btnCmdClear.GetSize()[1] + 25)
self.SetMinimumPaneSize(self.btnClear.GetSize()[1] + 100)

self.SetSashGravity(1.0)

Expand Down Expand Up @@ -378,12 +328,13 @@ def WriteError(self, text):
notification=Notification.MAKE_VISIBLE,
)

def OnOutputClear(self, event):
"""Clear content of output window"""
def OnClear(self, event):
"""Clear content of output window and command window"""
self.cmdOutput.SetReadOnly(False)
self.cmdOutput.ClearAll()
self.cmdOutput.SetReadOnly(True)
self.progressbar.SetValue(0)
self.cmdPrompt.CmdErase()

def GetProgressBar(self):
"""Return progress bar widget"""
Expand Down
4 changes: 2 additions & 2 deletions gui/wxpython/gui_core/prompt.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ def _runCmd(self, cmdString):

self.promptRunCmd.emit(cmd=cmd)

self.OnCmdErase(None)
self.CmdErase()
self.ShowStatusText("")

def CopyHistory(self, targetFile):
Expand Down Expand Up @@ -703,7 +703,7 @@ def OnDestroy(self, event):
wx.TheClipboard.Flush()
event.Skip()

def OnCmdErase(self, event):
def CmdErase(self):
"""Erase command prompt"""
self.Home()
self.DelLineRight()

0 comments on commit 4fb0aac

Please sign in to comment.