2 @package wxplot.dialogs
4 @brief Dialogs for different plotting routines
7 - dialogs::ProfileRasterDialog
8 - dialogs::ScatterRasterDialog
9 - dialogs::PlotStatsFrame
10 - dialogs::HistRasterDialog
14 (C) 2011-2012 by the GRASS Development Team
16 This program is free software under the GNU General Public License
17 (>=v2). Read the file COPYING that comes with GRASS for details.
19 @author Michael Barton, Arizona State University
23 import wx.lib.colourselect
as csel
24 import wx.lib.scrolledpanel
as scrolled
26 from core
import globalvar
33 def __init__(self, parent, id = wx.ID_ANY,
34 title = _(
"Select raster maps to profile"),
35 style = wx.DEFAULT_DIALOG_STYLE, **kwargs):
36 """!Dialog to select raster maps to profile.
39 wx.Dialog.__init__(self, parent, id, title, style = style, **kwargs)
43 self.
colorList = [
"blue",
"red",
"green",
"yellow",
"magenta",
"cyan", \
44 "aqua",
"black",
"grey",
"orange",
"brown",
"purple",
"violet", \
53 sizer = wx.BoxSizer(wx.VERTICAL)
55 box = wx.GridBagSizer (hgap = 3, vgap = 3)
61 rastText = rastText.rstrip(
',')
63 txt = _(
"Select raster map(s) to profile:")
64 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = txt)
66 flag = wx.ALIGN_CENTER_VERTICAL, pos = (0, 0))
68 selection = Select(self, id = wx.ID_ANY,
69 size = globalvar.DIALOG_GSELECT_SIZE,
70 type =
'cell', multiple=
True)
71 selection.SetValue(rastText)
74 box.Add(item = selection, pos = (0, 1))
76 sizer.Add(item = box, proportion = 0,
77 flag = wx.ALL, border = 10)
79 line = wx.StaticLine(parent = self, id = wx.ID_ANY, size = (20, -1), style = wx.LI_HORIZONTAL)
80 sizer.Add(item = line, proportion = 0,
81 flag = wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.LEFT|wx.RIGHT, border = 5)
83 btnsizer = wx.StdDialogButtonSizer()
85 btn = wx.Button(self, wx.ID_OK)
87 btnsizer.AddButton(btn)
89 btn = wx.Button(self, wx.ID_CANCEL)
90 btnsizer.AddButton(btn)
93 sizer.Add(item = btnsizer, proportion = 0, flag = wx.ALIGN_RIGHT | wx.ALL, border = 5)
99 """!Choose maps to profile. Convert these into a list
105 def __init__(self, parent, id, message = '', title = '',
106 style = wx.DEFAULT_FRAME_STYLE, **kwargs):
107 """!Dialog to display and save statistics for plots
109 wx.Frame.__init__(self, parent, id, style = style, **kwargs)
110 self.SetLabel(_(
"Statistics"))
112 sp = scrolled.ScrolledPanel(self, -1, size=(400, 400),
113 style = wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER, name=
"Statistics" )
122 self.CenterOnParent()
127 sizer = wx.BoxSizer(wx.VERTICAL)
128 txtSizer = wx.BoxSizer(wx.VERTICAL)
130 statstitle = wx.StaticText(parent = self, id = wx.ID_ANY, label = self.
title)
131 sizer.Add(item = statstitle, proportion = 0,
132 flag = wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, border = 3)
133 line = wx.StaticLine(parent = self, id = wx.ID_ANY, size = (20, -1), style = wx.LI_HORIZONTAL)
134 sizer.Add(item = line, proportion = 0,
135 flag = wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, border = 3)
137 statstxt = wx.StaticText(parent = sp, id = wx.ID_ANY, label = stats)
138 statstxt.SetBackgroundColour(
"WHITE")
139 txtSizer.Add(item = statstxt, proportion = 1,
140 flag = wx.EXPAND|wx.ALIGN_CENTER_VERTICAL|wx.LEFT|wx.RIGHT, border = 3)
141 line = wx.StaticLine(parent = sp, id = wx.ID_ANY, size = (20, -1), style = wx.LI_HORIZONTAL)
142 txtSizer.Add(item = line, proportion = 0,
143 flag = wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, border = 3)
145 sp.SetSizer(txtSizer)
149 sizer.Add(item = sp, proportion = 1,
150 flag = wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM, border = 3)
152 line = wx.StaticLine(parent = self, id = wx.ID_ANY, size = (20, -1), style = wx.LI_HORIZONTAL)
153 sizer.Add(item = line, proportion = 0,
154 flag = wx.GROW |wx.ALIGN_CENTER_VERTICAL|wx.LEFT|wx.RIGHT, border = 3)
159 btnSizer = wx.BoxSizer(wx.HORIZONTAL)
161 btn_clipboard = wx.Button(self, id = wx.ID_COPY, label = _(
'C&opy'))
162 btn_clipboard.SetToolTipString(_(
"Copy regression statistics the clipboard (Ctrl+C)"))
163 btnSizer.Add(item = btn_clipboard, proportion = 0, flag = wx.ALIGN_LEFT | wx.ALL, border = 5)
165 btnCancel = wx.Button(self, wx.ID_CLOSE)
166 btnCancel.SetDefault()
167 btnSizer.Add(item = btnCancel, proportion = 0, flag = wx.ALIGN_RIGHT | wx.ALL, border = 5)
169 sizer.Add(item = btnSizer, proportion = 0, flag = wx.ALIGN_RIGHT | wx.ALL, border = 5)
172 btnCancel.Bind(wx.EVT_BUTTON, self.
OnClose)
173 btn_clipboard.Bind(wx.EVT_BUTTON, self.
OnCopy)
179 """!Copy the regression stats to the clipboard
181 str = self.
title +
'\n'
185 rdata = wx.TextDataObject()
188 if wx.TheClipboard.Open():
189 wx.TheClipboard.SetData(rdata)
190 wx.TheClipboard.Close()
191 wx.MessageBox(_(
"Regression statistics copied to clipboard"))
194 """!Button 'Close' pressed
199 def __init__(self, parent, id, title, plottype = '',
200 style = wx.DEFAULT_DIALOG_STYLE, **kwargs):
201 """!Dialog to set plot text options: font, title
202 and font size, axis labels and font size
204 wx.Dialog.__init__(self, parent, id, title, style = style, **kwargs)
210 'decorative' : wx.FONTFAMILY_DECORATIVE,
211 'roman' : wx.FONTFAMILY_ROMAN,
212 'script' : wx.FONTFAMILY_SCRIPT,
213 'swiss' : wx.FONTFAMILY_SWISS,
214 'modern' : wx.FONTFAMILY_MODERN,
215 'teletype' : wx.FONTFAMILY_TELETYPE }
218 'slant' : wx.FONTSTYLE_SLANT,
219 'italic' : wx.FONTSTYLE_ITALIC }
221 self.
fwtdict = {
'normal' : wx.FONTWEIGHT_NORMAL,
222 'light' : wx.FONTWEIGHT_LIGHT,
223 'bold' : wx.FONTWEIGHT_BOLD }
241 def _do_layout(self):
244 sizer = wx.BoxSizer(wx.VERTICAL)
246 box = wx.StaticBox(parent = self, id = wx.ID_ANY,
247 label =
" %s " % _(
"Text settings"))
248 boxSizer = wx.StaticBoxSizer(box, wx.VERTICAL)
249 gridSizer = wx.GridBagSizer(vgap = 5, hgap = 5)
254 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Profile title:"))
255 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (0, 0))
256 self.
ptitleentry = wx.TextCtrl(parent = self, id = wx.ID_ANY, value =
"", size = (250,-1))
258 self.ptitleentry.SetValue(self.
ptitle)
259 gridSizer.Add(item = self.
ptitleentry, pos = (0, 1))
264 tlabel = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Title font size (pts):"))
265 gridSizer.Add(item = tlabel, flag = wx.ALIGN_CENTER_VERTICAL, pos = (1, 0))
266 self.
ptitlesize = wx.SpinCtrl(parent = self, id = wx.ID_ANY, value =
"", pos = (30, 50),
267 size = (50,-1), style = wx.SP_ARROW_KEYS)
268 self.ptitlesize.SetRange(5,100)
269 self.ptitlesize.SetValue(int(self.
properties[
'font'][
'prop'][
'titleSize']))
270 gridSizer.Add(item = self.
ptitlesize, pos = (1, 1))
275 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"X-axis label:"))
276 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (2, 0))
277 self.
xlabelentry = wx.TextCtrl(parent = self, id = wx.ID_ANY, value =
"", size = (250,-1))
279 self.xlabelentry.SetValue(self.
xlabel)
280 gridSizer.Add(item = self.
xlabelentry, pos = (2, 1))
285 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Y-axis label:"))
286 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (3, 0))
287 self.
ylabelentry = wx.TextCtrl(parent = self, id = wx.ID_ANY, value =
"", size = (250,-1))
289 self.ylabelentry.SetValue(self.
ylabel)
290 gridSizer.Add(item = self.
ylabelentry, pos = (3, 1))
295 llabel = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Label font size (pts):"))
296 gridSizer.Add(item = llabel, flag = wx.ALIGN_CENTER_VERTICAL, pos = (4, 0))
297 self.
axislabelsize = wx.SpinCtrl(parent = self, id = wx.ID_ANY, value =
"", pos = (30, 50),
298 size = (50, -1), style = wx.SP_ARROW_KEYS)
299 self.axislabelsize.SetRange(5, 100)
300 self.axislabelsize.SetValue(int(self.
properties[
'font'][
'prop'][
'axisSize']))
303 boxSizer.Add(item = gridSizer)
304 sizer.Add(item = boxSizer, flag = wx.ALL | wx.EXPAND, border = 3)
309 box = wx.StaticBox(parent = self, id = wx.ID_ANY,
310 label =
" %s " % _(
"Font settings"))
311 boxSizer = wx.StaticBoxSizer(box, wx.VERTICAL)
312 gridSizer = wx.GridBagSizer(vgap = 5, hgap = 5)
313 gridSizer.AddGrowableCol(1)
318 label1 = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Font family:"))
319 gridSizer.Add(item = label1, flag = wx.ALIGN_CENTER_VERTICAL, pos = (0, 0))
320 self.
ffamilycb = wx.ComboBox(parent = self, id = wx.ID_ANY, size = (250, -1),
321 choices = self.ffamilydict.keys(), style = wx.CB_DROPDOWN)
322 self.ffamilycb.SetStringSelection(
'swiss')
323 for item
in self.ffamilydict.items():
325 self.ffamilycb.SetStringSelection(item[0])
327 gridSizer.Add(item = self.
ffamilycb, pos = (0, 1), flag = wx.ALIGN_RIGHT)
332 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Style:"))
333 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (1, 0))
334 self.
fstylecb = wx.ComboBox(parent = self, id = wx.ID_ANY, size = (250, -1),
335 choices = self.fstyledict.keys(), style = wx.CB_DROPDOWN)
336 self.fstylecb.SetStringSelection(
'normal')
337 for item
in self.fstyledict.items():
339 self.fstylecb.SetStringSelection(item[0])
341 gridSizer.Add(item = self.
fstylecb, pos = (1, 1), flag = wx.ALIGN_RIGHT)
346 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Weight:"))
347 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (2, 0))
348 self.
fwtcb = wx.ComboBox(parent = self, size = (250, -1),
349 choices = self.fwtdict.keys(), style = wx.CB_DROPDOWN)
350 self.fwtcb.SetStringSelection(
'normal')
351 for item
in self.fwtdict.items():
353 self.fwtcb.SetStringSelection(item[0])
356 gridSizer.Add(item = self.
fwtcb, pos = (2, 1), flag = wx.ALIGN_RIGHT)
358 boxSizer.Add(item = gridSizer, flag = wx.EXPAND)
359 sizer.Add(item = boxSizer, flag = wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.EXPAND, border = 3)
361 line = wx.StaticLine(parent = self, id = wx.ID_ANY, size = (20, -1), style = wx.LI_HORIZONTAL)
362 sizer.Add(item = line, proportion = 0,
363 flag = wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.LEFT|wx.RIGHT, border = 3)
368 btnSave = wx.Button(self, wx.ID_SAVE)
369 btnApply = wx.Button(self, wx.ID_APPLY)
370 btnOk = wx.Button(self, wx.ID_OK)
371 btnCancel = wx.Button(self, wx.ID_CANCEL)
375 btnApply.Bind(wx.EVT_BUTTON, self.
OnApply)
376 btnApply.SetToolTipString(_(
"Apply changes for the current session"))
377 btnOk.Bind(wx.EVT_BUTTON, self.
OnOk)
378 btnOk.SetToolTipString(_(
"Apply changes for the current session and close dialog"))
380 btnSave.Bind(wx.EVT_BUTTON, self.
OnSave)
381 btnSave.SetToolTipString(_(
"Apply and save changes to user settings file (default for next sessions)"))
382 btnCancel.Bind(wx.EVT_BUTTON, self.
OnCancel)
383 btnCancel.SetToolTipString(_(
"Close dialog and ignore changes"))
386 btnStdSizer = wx.StdDialogButtonSizer()
387 btnStdSizer.AddButton(btnOk)
388 btnStdSizer.AddButton(btnApply)
389 btnStdSizer.AddButton(btnCancel)
390 btnStdSizer.Realize()
392 btnSizer = wx.BoxSizer(wx.HORIZONTAL)
393 btnSizer.Add(item = btnSave, proportion = 0, flag = wx.ALIGN_LEFT | wx.ALL, border = 5)
394 btnSizer.Add(item = btnStdSizer, proportion = 0, flag = wx.ALIGN_RIGHT | wx.ALL, border = 5)
395 sizer.Add(item = btnSizer, proportion = 0, flag = wx.ALIGN_RIGHT | wx.ALL, border = 5)
400 self.ptitleentry.Bind(wx.EVT_TEXT, self.
OnTitle)
401 self.xlabelentry.Bind(wx.EVT_TEXT, self.
OnXLabel)
402 self.ylabelentry.Bind(wx.EVT_TEXT, self.
OnYLabel)
408 self.
ptitle = event.GetString()
411 self.
xlabel = event.GetString()
414 self.
ylabel = event.GetString()
417 self.
properties[
'font'][
'prop'][
'titleSize'] = self.ptitlesize.GetValue()
418 self.
properties[
'font'][
'prop'][
'axisSize'] = self.axislabelsize.GetValue()
420 family = self.
ffamilydict[self.ffamilycb.GetStringSelection()]
421 self.
properties[
'font'][
'wxfont'].SetFamily(family)
422 style = self.
fstyledict[self.fstylecb.GetStringSelection()]
423 self.
properties[
'font'][
'wxfont'].SetStyle(style)
424 weight = self.
fwtdict[self.fwtcb.GetStringSelection()]
425 self.
properties[
'font'][
'wxfont'].SetWeight(weight)
428 """!Button 'Save' pressed"""
431 UserSettings.ReadSettingsFile(settings = fileSettings)
433 UserSettings.SaveToFile(fileSettings)
434 self.parent.parent.GetLayerManager().goutput.WriteLog(_(
'Plot text sizes saved to file \'%s\'.') % UserSettings.filePath)
435 self.EndModal(wx.ID_OK)
438 """!Button 'Apply' pressed"""
440 self.parent.OnPlotText(self)
443 """!Button 'OK' pressed"""
445 self.EndModal(wx.ID_OK)
448 """!Button 'Cancel' pressed"""
449 self.EndModal(wx.ID_CANCEL)
452 def __init__(self, parent, id, title, plottype = '',
453 style = wx.DEFAULT_DIALOG_STYLE, **kwargs):
454 """!Dialog to set various options for data plotted, including: line
455 width, color, style; marker size, color, fill, and style; grid
458 wx.Dialog.__init__(self, parent, id, title, style = style, **kwargs)
491 wx.MessageBox(parent = self,
492 message = _(
"No map or image group selected to plot."),
493 caption = _(
"Warning"), style = wx.OK | wx.ICON_ERROR)
497 def _do_layout(self):
498 """!Options dialog layout
500 sizer = wx.BoxSizer(wx.VERTICAL)
502 box = wx.StaticBox(parent = self, id = wx.ID_ANY,
503 label =
" %s " % _(
"Plot settings"))
504 boxMainSizer = wx.StaticBoxSizer(box, wx.HORIZONTAL)
506 self.
wxId[
'pcolor'] = 0
507 self.
wxId[
'pwidth'] = 0
508 self.
wxId[
'pstyle'] = 0
509 self.
wxId[
'psize'] = 0
510 self.
wxId[
'ptype'] = 0
511 self.
wxId[
'pfill'] = 0
512 self.
wxId[
'plegend'] = 0
513 self.
wxId[
'marker'] = {}
514 self.
wxId[
'x-axis'] = {}
515 self.
wxId[
'y-axis'] = {}
522 box = wx.StaticBox(parent = self, id = wx.ID_ANY,
523 label = _(
"Map/image plotted"))
524 boxSizer = wx.StaticBoxSizer(box, wx.VERTICAL)
526 gridSizer = wx.GridBagSizer(vgap = 5, hgap = 5)
531 choicelist.append(str(i))
533 self.
mapchoice = wx.Choice(parent = self, id = wx.ID_ANY, size = (300, -1),
534 choices = choicelist)
535 self.mapchoice.SetToolTipString(_(
"Settings for selected map"))
538 self.
map = self.
rasterList[self.mapchoice.GetCurrentSelection()]
540 self.mapchoice.SetStringSelection(str(self.
map))
543 gridSizer.Add(item = self.
mapchoice, flag = wx.ALIGN_CENTER_VERTICAL,
544 pos = (row, 0), span = (1, 2))
550 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Line color"))
551 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (row, 0))
552 color = csel.ColourSelect(parent = self, id = wx.ID_ANY, colour = self.
raster[self.
map][
'pcolor'])
553 self.
wxId[
'pcolor'] = color.GetId()
554 gridSizer.Add(item = color, pos = (row, 1))
557 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Line width"))
558 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (row, 0))
559 width = wx.SpinCtrl(parent = self, id = wx.ID_ANY, value =
"",
560 size = (50,-1), style = wx.SP_ARROW_KEYS)
561 width.SetRange(1, 10)
562 width.SetValue(self.
raster[self.
map][
'pwidth'])
563 self.
wxId[
'pwidth'] = width.GetId()
564 gridSizer.Add(item = width, pos = (row, 1))
567 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Line style"))
568 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (row, 0))
569 style = wx.Choice(parent = self, id = wx.ID_ANY,
570 size = (120, -1), choices = self.linestyledict.keys())
571 style.SetStringSelection(self.
raster[self.
map][
'pstyle'])
572 self.
wxId[
'pstyle'] = style.GetId()
573 gridSizer.Add(item = style, pos = (row, 1))
576 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Legend"))
577 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (row, 0))
578 legend = wx.TextCtrl(parent = self, id = wx.ID_ANY, value =
"", size = (200,-1))
579 legend.SetValue(self.
raster[self.
map][
'plegend'])
580 gridSizer.Add(item = legend, pos = (row, 1))
581 self.
wxId[
'plegend'] = legend.GetId()
583 boxSizer.Add(item = gridSizer)
584 boxMainSizer.Add(item = boxSizer, flag = wx.ALL, border = 3)
589 box = wx.StaticBox(parent = self, id = wx.ID_ANY,
590 label =
" %s " % _(
"Transect segment marker settings"))
592 boxSizer = wx.StaticBoxSizer(box, wx.VERTICAL)
594 gridSizer = wx.GridBagSizer(vgap = 5, hgap = 5)
595 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Color"))
596 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (0, 0))
597 ptcolor = csel.ColourSelect(parent = self, id = wx.ID_ANY, colour = self.
properties[
'marker'][
'color'])
598 self.
wxId[
'marker'][
'color'] = ptcolor.GetId()
599 gridSizer.Add(item = ptcolor, pos = (0, 1))
601 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Size"))
602 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (1, 0))
603 ptsize = wx.SpinCtrl(parent = self, id = wx.ID_ANY, value =
"",
604 size = (50, -1), style = wx.SP_ARROW_KEYS)
605 ptsize.SetRange(1, 10)
606 ptsize.SetValue(self.
properties[
'marker'][
'size'])
607 self.
wxId[
'marker'][
'size'] = ptsize.GetId()
608 gridSizer.Add(item = ptsize, pos = (1, 1))
610 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Fill"))
611 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (2, 0))
612 ptfill = wx.Choice(parent = self, id = wx.ID_ANY,
613 size = (120, -1), choices = self.ptfilldict.keys())
614 ptfill.SetStringSelection(self.
properties[
'marker'][
'fill'])
615 self.
wxId[
'marker'][
'fill'] = ptfill.GetId()
616 gridSizer.Add(item = ptfill, pos = (2, 1))
618 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Legend"))
619 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (3, 0))
620 ptlegend = wx.TextCtrl(parent = self, id = wx.ID_ANY, value =
"", size = (200,-1))
621 ptlegend.SetValue(self.
properties[
'marker'][
'legend'])
622 self.
wxId[
'marker'][
'legend'] = ptlegend.GetId()
623 gridSizer.Add(item = ptlegend, pos = (3, 1))
625 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Style"))
626 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (4, 0))
627 pttype = wx.Choice(parent = self, size = (200, -1), choices = self.
pttypelist)
628 pttype.SetStringSelection(self.
properties[
'marker'][
'type'])
629 self.
wxId[
'marker'][
'type'] = pttype.GetId()
630 gridSizer.Add(item = pttype, pos = (4, 1))
632 boxSizer.Add(item = gridSizer)
633 boxMainSizer.Add(item = boxSizer, flag = wx.ALL, border = 3)
635 sizer.Add(item = boxMainSizer, flag = wx.ALL | wx.EXPAND, border = 3)
640 box = wx.StaticBox(parent = self, id = wx.ID_ANY,
641 label =
" %s " % _(
"Axis settings"))
642 boxMainSizer = wx.StaticBoxSizer(box, wx.HORIZONTAL)
644 middleSizer = wx.BoxSizer(wx.HORIZONTAL)
647 for axis, atype
in [(_(
"X-Axis"),
'x-axis'),
648 (_(
"Y-Axis"),
'y-axis')]:
649 box = wx.StaticBox(parent = self, id = wx.ID_ANY,
650 label =
" %s " % axis)
651 boxSizer = wx.StaticBoxSizer(box, wx.HORIZONTAL)
652 gridSizer = wx.GridBagSizer(vgap = 5, hgap = 5)
657 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Scale"))
658 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (row, 0))
659 type = wx.Choice(parent = self, id = wx.ID_ANY,
660 size = (100, -1), choices = self.
axislist)
661 type.SetStringSelection(prop[
'type'])
662 type.SetToolTipString(_(
"Automatic axis scaling, custom max and min, or scale matches data range (min)" ))
663 self.
wxId[atype][
'type'] = type.GetId()
664 gridSizer.Add(item = type, pos = (row, 1))
667 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Custom min"))
668 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (row, 0))
669 min = wx.TextCtrl(parent = self, id = wx.ID_ANY, value =
"", size = (70, -1))
670 min.SetValue(str(prop[
'min']))
671 self.
wxId[atype][
'min'] = min.GetId()
672 gridSizer.Add(item = min, pos = (row, 1))
675 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Custom max"))
676 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (row, 0))
677 max = wx.TextCtrl(parent = self, id = wx.ID_ANY, value =
"", size = (70, -1))
678 max.SetValue(str(prop[
'max']))
679 self.
wxId[atype][
'max'] = max.GetId()
680 gridSizer.Add(item = max, pos = (row, 1))
683 log = wx.CheckBox(parent = self, id = wx.ID_ANY, label = _(
"Log scale"))
684 log.SetValue(prop[
'log'])
685 self.
wxId[atype][
'log'] = log.GetId()
686 gridSizer.Add(item = log, pos = (row, 0), span = (1, 2))
689 flag = wx.ALL | wx.EXPAND
691 flag = wx.TOP | wx.BOTTOM | wx.RIGHT | wx.EXPAND
693 boxSizer.Add(item = gridSizer, flag = wx.ALL, border = 3)
694 boxMainSizer.Add(item = boxSizer, flag = flag, border = 3)
698 middleSizer.Add(item = boxMainSizer, flag = wx.ALL | wx.EXPAND, border = 3)
703 self.
wxId[
'grid'] = {}
704 self.
wxId[
'legend'] = {}
705 self.
wxId[
'font'] = {}
706 box = wx.StaticBox(parent = self, id = wx.ID_ANY,
707 label =
" %s " % _(
"Grid and Legend settings"))
708 boxMainSizer = wx.StaticBoxSizer(box, wx.HORIZONTAL)
709 gridSizer = wx.GridBagSizer(vgap = 5, hgap = 5)
712 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Grid color"))
713 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (row, 0))
714 gridcolor = csel.ColourSelect(parent = self, id = wx.ID_ANY, colour = self.
properties[
'grid'][
'color'])
715 self.
wxId[
'grid'][
'color'] = gridcolor.GetId()
716 gridSizer.Add(item = gridcolor, pos = (row, 1))
719 gridshow = wx.CheckBox(parent = self, id = wx.ID_ANY, label = _(
"Show grid"))
720 gridshow.SetValue(self.
properties[
'grid'][
'enabled'])
721 self.
wxId[
'grid'][
'enabled'] = gridshow.GetId()
722 gridSizer.Add(item = gridshow, pos = (row, 0), span = (1, 2))
725 label = wx.StaticText(parent = self, id = wx.ID_ANY, label = _(
"Legend font size"))
726 gridSizer.Add(item = label, flag = wx.ALIGN_CENTER_VERTICAL, pos = (row, 0))
727 legendfontsize = wx.SpinCtrl(parent = self, id = wx.ID_ANY, value =
"",
728 size = (50, -1), style = wx.SP_ARROW_KEYS)
729 legendfontsize.SetRange(5,100)
730 legendfontsize.SetValue(int(self.
properties[
'font'][
'prop'][
'legendSize']))
731 self.
wxId[
'font'][
'legendSize'] = legendfontsize.GetId()
732 gridSizer.Add(item = legendfontsize, pos = (row, 1))
735 legendshow = wx.CheckBox(parent = self, id = wx.ID_ANY, label = _(
"Show legend"))
736 legendshow.SetValue(self.
properties[
'legend'][
'enabled'])
737 self.
wxId[
'legend'][
'enabled'] = legendshow.GetId()
738 gridSizer.Add(item = legendshow, pos = (row, 0), span = (1, 2))
740 boxMainSizer.Add(item = gridSizer, flag = flag, border = 3)
742 middleSizer.Add(item = boxMainSizer, flag = wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.EXPAND, border = 3)
744 sizer.Add(item = middleSizer, flag = wx.ALL, border = 0)
749 line = wx.StaticLine(parent = self, id = wx.ID_ANY, size = (20, -1), style = wx.LI_HORIZONTAL)
750 sizer.Add(item = line, proportion = 0,
751 flag = wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.LEFT|wx.RIGHT, border = 3)
756 btnSave = wx.Button(self, wx.ID_SAVE)
757 btnApply = wx.Button(self, wx.ID_APPLY)
758 btnOk = wx.Button(self, wx.ID_OK)
759 btnCancel = wx.Button(self, wx.ID_CANCEL)
763 btnApply.SetToolTipString(_(
"Apply changes for the current session"))
764 btnOk.SetToolTipString(_(
"Apply changes for the current session and close dialog"))
765 btnSave.SetToolTipString(_(
"Apply and save changes to user settings file (default for next sessions)"))
766 btnCancel.SetToolTipString(_(
"Close dialog and ignore changes"))
769 btnStdSizer = wx.StdDialogButtonSizer()
770 btnStdSizer.AddButton(btnOk)
771 btnStdSizer.AddButton(btnApply)
772 btnStdSizer.AddButton(btnCancel)
773 btnStdSizer.Realize()
775 btnSizer = wx.BoxSizer(wx.HORIZONTAL)
776 btnSizer.Add(item = btnSave, proportion = 0, flag = wx.ALIGN_LEFT | wx.ALL, border = 5)
777 btnSizer.Add(item = btnStdSizer, proportion = 0, flag = wx.ALIGN_RIGHT | wx.ALL, border = 5)
778 sizer.Add(item = btnSizer, proportion = 0, flag = wx.ALIGN_RIGHT | wx.ALL, border = 5)
783 self.mapchoice.Bind(wx.EVT_CHOICE, self.
OnSetMap)
786 btnApply.Bind(wx.EVT_BUTTON, self.
OnApply)
787 btnOk.Bind(wx.EVT_BUTTON, self.
OnOk)
789 btnSave.Bind(wx.EVT_BUTTON, self.
OnSave)
790 btnCancel.Bind(wx.EVT_BUTTON, self.
OnCancel)
796 """!Handler for changing map selection"""
797 idx = event.GetSelection()
801 self.FindWindowById(self.
wxId[
'pcolor']).SetColour(self.
raster[self.
map][
'pcolor'])
804 self.FindWindowById(self.
wxId[
'pstyle']).SetStringSelection(self.
raster[self.
map][
'pstyle'])
809 """!Handler for changing any other option"""
810 self.
map = self.
rasterList[self.mapchoice.GetCurrentSelection()]
812 self.parent.SetGraphStyle()
813 p = self.parent.CreatePlotList()
814 self.parent.DrawPlot(p)
817 """!Apply settings to each map and to entire plot"""
818 self.
raster[self.
map][
'pcolor'] = self.FindWindowById(self.
wxId[
'pcolor']).GetColour()
825 self.
raster[self.
map][
'pstyle'] = self.FindWindowById(self.
wxId[
'pstyle']).GetStringSelection()
829 for axis
in (
'x-axis',
'y-axis'):
830 self.
properties[axis][
'prop'][
'type'] = self.FindWindowById(self.
wxId[axis][
'type']).GetStringSelection()
833 self.
properties[axis][
'prop'][
'log'] = self.FindWindowById(self.
wxId[axis][
'log']).IsChecked()
836 self.
properties[
'marker'][
'color'] = self.FindWindowById(self.
wxId[
'marker'][
'color']).GetColour()
837 self.
properties[
'marker'][
'fill'] = self.FindWindowById(self.
wxId[
'marker'][
'fill']).GetStringSelection()
839 self.
properties[
'marker'][
'type'] = self.FindWindowById(self.
wxId[
'marker'][
'type']).GetStringSelection()
842 self.
properties[
'grid'][
'color'] = self.FindWindowById(self.
wxId[
'grid'][
'color']).GetColour()
843 self.
properties[
'grid'][
'enabled'] = self.FindWindowById(self.
wxId[
'grid'][
'enabled']).IsChecked()
847 self.
properties[
'font'][
'prop'][
'legendSize'] = self.FindWindowById(self.
wxId[
'font'][
'legendSize']).
GetValue()
848 self.
properties[
'legend'][
'enabled'] = self.FindWindowById(self.
wxId[
'legend'][
'enabled']).IsChecked()
851 """!Button 'Save' pressed"""
854 UserSettings.ReadSettingsFile(settings = fileSettings)
856 UserSettings.SaveToFile(fileSettings)
857 self.parent.parent.GetLayerManager().goutput.WriteLog(_(
'Plot settings saved to file \'%s\'.') % UserSettings.filePath)
861 """!Button 'Apply' pressed. Does not close dialog"""
863 self.parent.SetGraphStyle()
864 p = self.parent.CreatePlotList()
865 self.parent.DrawPlot(p)
868 """!Button 'OK' pressed"""
870 self.EndModal(wx.ID_OK)
873 """!Button 'Cancel' pressed"""