Skip to content

Commit c9dcb68

Browse files
Merge pull request #100 from diffpy/next
v2.0.3
2 parents 7c2aef5 + a1712a1 commit c9dcb68

File tree

8 files changed

+120
-92
lines changed

8 files changed

+120
-92
lines changed

CHANGELOG.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Notable differences from version 1.1.2.
44

5-
## Version 2.0.2 – 2023-05-14
5+
## Version 2.0.3 – 2023-05-18
66

77
### Added
88

@@ -22,3 +22,5 @@ Notable differences from version 1.1.2.
2222
### Fixed
2323

2424
- Incompatible conversion between bytes and str from py2 to py3.
25+
- The `listCtrlFiles.InsertItem` error in windows.
26+
- Make the string parser in doping series working.

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
# Use this version when git data are not available, like in git zip archive.
1717
# Update when tagging a new release.
18-
FALLBACK_VERSION = '2.0.2'
18+
FALLBACK_VERSION = '2.0.3'
1919

2020
# determine if we run with Python 3.
2121
PY3 = (sys.version_info[0] == 3)

src/diffpy/pdfgui/gui/design/dopingseriespanel.wxg

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0"?>
2-
<!-- generated by wxGlade 0.9.3 on Fri Aug 9 17:38:34 2019 -->
2+
<!-- generated by wxGlade 1.0.5 on Thu May 18 18:54:34 2023 -->
33

44
<application encoding="ISO-8859-1" for_version="3.0" header_extension=".h" indent_amount="4" indent_symbol="space" is_template="0" language="python" mark_blocks="1" option="0" overwrite="0" path="../dopingseriespanel.py" source_extension=".cpp" use_gettext="0" use_new_namespace="1">
55
<object class="DopingSeriesPanel" name="panel_1" base="EditTopLevelPanel">

src/diffpy/pdfgui/gui/design/temperatureseriespanel.wxg

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0"?>
2-
<!-- generated by wxGlade 0.9.3 on Tue Aug 13 14:48:48 2019 -->
2+
<!-- generated by wxGlade 1.0.5 on Thu May 18 18:51:02 2023 -->
33

44
<application encoding="ISO-8859-1" for_version="3.0" header_extension=".h" indent_amount="4" indent_symbol="space" is_template="0" language="python" mark_blocks="1" option="0" overwrite="0" path="../temperatureseriespanel.py" source_extension=".cpp" use_gettext="0" use_new_namespace="1">
55
<object class="TemperatureSeriesPanel" name="panel_1" base="EditTopLevelPanel">

src/diffpy/pdfgui/gui/dopingseriespanel.py

+61-46
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,79 @@ def __init__(self, *args, **kwds):
3333
# begin wxGlade: DopingSeriesPanel.__init__
3434
kwds["style"] = kwds.get("style", 0) | wx.TAB_TRAVERSAL
3535
wx.Panel.__init__(self, *args, **kwds)
36+
37+
sizer_1 = wx.BoxSizer(wx.VERTICAL)
38+
3639
self.instructionsLabel = wx.StaticText(self, wx.ID_ANY, "Select a fit from the tree on the left then add datasets and assign\ndoping elements and values below. If you have not set up a fit to be\nthe template for the series, hit cancel and rerun this macro once a\nfit has been created.")
40+
self.instructionsLabel.SetFont(wx.Font(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "Sans"))
41+
sizer_1.Add(self.instructionsLabel, 0, wx.ALL | wx.EXPAND, 5)
42+
43+
sizer_6 = wx.BoxSizer(wx.HORIZONTAL)
44+
sizer_1.Add(sizer_6, 0, wx.EXPAND, 0)
45+
3746
self.labelBaseElement = wx.StaticText(self, wx.ID_ANY, "Base element")
47+
sizer_6.Add(self.labelBaseElement, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)
48+
3849
self.textCtrlBaseElement = wx.TextCtrl(self, wx.ID_ANY, "")
50+
sizer_6.Add(self.textCtrlBaseElement, 0, wx.ALL, 5)
51+
3952
self.labelDopant = wx.StaticText(self, wx.ID_ANY, "Dopant")
53+
sizer_6.Add(self.labelDopant, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)
54+
4055
self.textCtrlDopant = wx.TextCtrl(self, wx.ID_ANY, "")
56+
sizer_6.Add(self.textCtrlDopant, 0, wx.ALL, 5)
57+
58+
sizer_2 = wx.BoxSizer(wx.VERTICAL)
59+
sizer_1.Add(sizer_2, 1, wx.EXPAND, 0)
60+
61+
sizer_4 = wx.BoxSizer(wx.HORIZONTAL)
62+
sizer_2.Add(sizer_4, 1, wx.EXPAND, 0)
63+
4164
self.listCtrlFiles = AutoWidthListCtrl(self, wx.ID_ANY, style=wx.BORDER_SUNKEN | wx.LC_EDIT_LABELS | wx.LC_REPORT)
65+
sizer_4.Add(self.listCtrlFiles, 1, wx.ALL | wx.EXPAND, 5)
66+
67+
sizer_5 = wx.BoxSizer(wx.VERTICAL)
68+
sizer_4.Add(sizer_5, 0, wx.EXPAND, 0)
69+
70+
sizer_5.Add((0, 0), 1, 0, 0)
71+
4272
self.buttonUp = wx.BitmapButton(self, wx.ID_ANY, wx.NullBitmap)
73+
self.buttonUp.SetSize(self.buttonUp.GetBestSize())
74+
sizer_5.Add(self.buttonUp, 0, wx.ALL, 5)
75+
4376
self.buttonDown = wx.BitmapButton(self, wx.ID_ANY, wx.NullBitmap)
77+
self.buttonDown.SetSize(self.buttonDown.GetBestSize())
78+
sizer_5.Add(self.buttonDown, 0, wx.ALL, 5)
79+
80+
sizer_5.Add((0, 0), 1, 0, 0)
81+
82+
grid_sizer_1 = wx.GridSizer(1, 2, 10, 10)
83+
sizer_1.Add(grid_sizer_1, 0, wx.ALL, 5)
84+
4485
self.buttonAdd = wx.Button(self, wx.ID_ADD, "Add")
86+
grid_sizer_1.Add(self.buttonAdd, 0, 0, 0)
87+
4588
self.buttonDelete = wx.Button(self, wx.ID_DELETE, "Delete")
89+
grid_sizer_1.Add(self.buttonDelete, 0, 0, 0)
90+
4691
self.static_line_1 = wx.StaticLine(self, wx.ID_ANY)
92+
sizer_1.Add(self.static_line_1, 0, wx.EXPAND, 0)
93+
94+
sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
95+
sizer_1.Add(sizer_3, 0, wx.EXPAND, 0)
96+
97+
sizer_3.Add((20, 20), 1, wx.EXPAND, 0)
98+
4799
self.goButton = wx.Button(self, wx.ID_OK, "OK")
100+
sizer_3.Add(self.goButton, 0, wx.ALL, 5)
101+
48102
self.cancelButton = wx.Button(self, wx.ID_CANCEL, "Cancel")
103+
sizer_3.Add(self.cancelButton, 0, wx.ALL, 5)
49104

50-
self.__set_properties()
51-
self.__do_layout()
105+
self.SetSizer(sizer_1)
106+
sizer_1.Fit(self)
107+
108+
self.Layout()
52109

53110
self.Bind(wx.EVT_LIST_COL_CLICK, self.onColClick, self.listCtrlFiles)
54111
self.Bind(wx.EVT_LIST_END_LABEL_EDIT, self.onEndLabelEdit, self.listCtrlFiles)
@@ -61,49 +118,6 @@ def __init__(self, *args, **kwds):
61118
# end wxGlade
62119
self.__customProperties()
63120

64-
def __set_properties(self):
65-
# begin wxGlade: DopingSeriesPanel.__set_properties
66-
self.instructionsLabel.SetFont(wx.Font(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "Sans"))
67-
self.buttonUp.SetSize(self.buttonUp.GetBestSize())
68-
self.buttonDown.SetSize(self.buttonDown.GetBestSize())
69-
# end wxGlade
70-
71-
def __do_layout(self):
72-
# begin wxGlade: DopingSeriesPanel.__do_layout
73-
sizer_1 = wx.BoxSizer(wx.VERTICAL)
74-
sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
75-
grid_sizer_1 = wx.GridSizer(1, 2, 10, 10)
76-
sizer_2 = wx.BoxSizer(wx.VERTICAL)
77-
sizer_4 = wx.BoxSizer(wx.HORIZONTAL)
78-
sizer_5 = wx.BoxSizer(wx.VERTICAL)
79-
sizer_6 = wx.BoxSizer(wx.HORIZONTAL)
80-
sizer_1.Add(self.instructionsLabel, 0, wx.ALL | wx.EXPAND, 5)
81-
sizer_6.Add(self.labelBaseElement, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)
82-
sizer_6.Add(self.textCtrlBaseElement, 0, wx.ALL, 5)
83-
sizer_6.Add(self.labelDopant, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)
84-
sizer_6.Add(self.textCtrlDopant, 0, wx.ALL, 5)
85-
sizer_1.Add(sizer_6, 0, wx.EXPAND, 0)
86-
sizer_4.Add(self.listCtrlFiles, 1, wx.ALL | wx.EXPAND, 5)
87-
sizer_5.Add((0, 0), 1, 0, 0)
88-
sizer_5.Add(self.buttonUp, 0, wx.ALL, 5)
89-
sizer_5.Add(self.buttonDown, 0, wx.ALL, 5)
90-
sizer_5.Add((0, 0), 1, 0, 0)
91-
sizer_4.Add(sizer_5, 0, wx.EXPAND, 0)
92-
sizer_2.Add(sizer_4, 1, wx.EXPAND, 0)
93-
sizer_1.Add(sizer_2, 1, wx.EXPAND, 0)
94-
grid_sizer_1.Add(self.buttonAdd, 0, 0, 0)
95-
grid_sizer_1.Add(self.buttonDelete, 0, 0, 0)
96-
sizer_1.Add(grid_sizer_1, 0, wx.ALL, 5)
97-
sizer_1.Add(self.static_line_1, 0, wx.EXPAND, 0)
98-
sizer_3.Add((20, 20), 1, wx.EXPAND, 0)
99-
sizer_3.Add(self.goButton, 0, wx.ALL, 5)
100-
sizer_3.Add(self.cancelButton, 0, wx.ALL, 5)
101-
sizer_1.Add(sizer_3, 0, wx.EXPAND, 0)
102-
self.SetSizer(sizer_1)
103-
sizer_1.Fit(self)
104-
self.Layout()
105-
# end wxGlade
106-
107121
def __customProperties(self):
108122
"""Set the custom properties."""
109123
self.fit = None
@@ -296,7 +310,8 @@ def fillList(self):
296310
if idx == -1: idx = len(cp)
297311
for doping, filename in self.datasets:
298312
shortname = "..." + filename[idx:]
299-
index = self.listCtrlFiles.InsertItem(sys.maxsize, str(doping))
313+
# index = self.listCtrlFiles.InsertItem(sys.maxsize, str(doping)) #doesn't work for windows
314+
index = self.listCtrlFiles.InsertItem(100000, str(doping)) #doesn't work for windows
300315
self.listCtrlFiles.SetItem(index, 1, shortname)
301316
return
302317

src/diffpy/pdfgui/gui/mainframe.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,8 @@ def __customProperties(self):
299299

300300
# The configuration parser for getting configuration data.
301301
# self.cP = QuotedConfigParser()
302-
self.cP = QuotedConfigParser(strict=False) #Long try this to avoid DuplicateSectionError
302+
# Long try this to avoid DuplicateSectionError and ParsingError
303+
self.cP = QuotedConfigParser(strict=False, allow_no_value=True)
303304

304305
# Set the program mode
305306
self.mode = "fitting"

src/diffpy/pdfgui/gui/temperatureseriespanel.py

+50-40
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,64 @@ def __init__(self, *args, **kwds):
3232
# begin wxGlade: TemperatureSeriesPanel.__init__
3333
kwds["style"] = kwds.get("style", 0) | wx.TAB_TRAVERSAL
3434
wx.Panel.__init__(self, *args, **kwds)
35+
36+
sizer_1 = wx.BoxSizer(wx.VERTICAL)
37+
3538
self.instructionsLabel = wx.StaticText(self, wx.ID_ANY, "Select a fit from the tree on the left then add datasets and assign\ntemperatues below. If you have not set up a fit to be the template\nfor the series, hit cancel and rerun this macro once a fit has been\ncreated.")
39+
self.instructionsLabel.SetFont(wx.Font(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "Sans"))
40+
sizer_1.Add(self.instructionsLabel, 0, wx.ALL | wx.EXPAND, 5)
41+
42+
sizer_2 = wx.BoxSizer(wx.VERTICAL)
43+
sizer_1.Add(sizer_2, 1, wx.EXPAND, 0)
44+
45+
sizer_4 = wx.BoxSizer(wx.HORIZONTAL)
46+
sizer_2.Add(sizer_4, 1, wx.EXPAND, 0)
47+
3648
self.listCtrlFiles = AutoWidthListCtrl(self, wx.ID_ANY, style=wx.BORDER_SUNKEN | wx.LC_EDIT_LABELS | wx.LC_REPORT)
49+
sizer_4.Add(self.listCtrlFiles, 1, wx.ALL | wx.EXPAND, 5)
50+
51+
sizer_5 = wx.BoxSizer(wx.VERTICAL)
52+
sizer_4.Add(sizer_5, 0, wx.EXPAND, 0)
53+
54+
sizer_5.Add((0, 0), 1, 0, 0)
55+
3756
self.buttonUp = wx.BitmapButton(self, wx.ID_ANY, wx.NullBitmap)
57+
self.buttonUp.SetSize(self.buttonUp.GetBestSize())
58+
sizer_5.Add(self.buttonUp, 0, wx.ALL, 5)
59+
3860
self.buttonDown = wx.BitmapButton(self, wx.ID_ANY, wx.NullBitmap)
61+
self.buttonDown.SetSize(self.buttonDown.GetBestSize())
62+
sizer_5.Add(self.buttonDown, 0, wx.ALL, 5)
63+
64+
sizer_5.Add((0, 0), 1, 0, 0)
65+
66+
grid_sizer_1 = wx.GridSizer(1, 2, 10, 10)
67+
sizer_1.Add(grid_sizer_1, 0, wx.ALL, 5)
68+
3969
self.buttonAdd = wx.Button(self, wx.ID_ADD, "Add")
70+
grid_sizer_1.Add(self.buttonAdd, 0, 0, 0)
71+
4072
self.buttonDelete = wx.Button(self, wx.ID_DELETE, "Delete")
73+
grid_sizer_1.Add(self.buttonDelete, 0, 0, 0)
74+
4175
self.static_line_1 = wx.StaticLine(self, wx.ID_ANY)
76+
sizer_1.Add(self.static_line_1, 0, wx.EXPAND, 0)
77+
78+
sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
79+
sizer_1.Add(sizer_3, 0, wx.EXPAND, 0)
80+
81+
sizer_3.Add((20, 20), 1, wx.EXPAND, 0)
82+
4283
self.goButton = wx.Button(self, wx.ID_OK, "OK")
84+
sizer_3.Add(self.goButton, 0, wx.ALL, 5)
85+
4386
self.cancelButton = wx.Button(self, wx.ID_CANCEL, "Cancel")
87+
sizer_3.Add(self.cancelButton, 0, wx.ALL, 5)
88+
89+
self.SetSizer(sizer_1)
90+
sizer_1.Fit(self)
4491

45-
self.__set_properties()
46-
self.__do_layout()
92+
self.Layout()
4793

4894
self.Bind(wx.EVT_LIST_COL_CLICK, self.onColClick, self.listCtrlFiles)
4995
self.Bind(wx.EVT_LIST_END_LABEL_EDIT, self.onEndLabelEdit, self.listCtrlFiles)
@@ -58,43 +104,6 @@ def __init__(self, *args, **kwds):
58104
self.buttonDown.SetBitmapLabel(wx.ArtProvider.GetBitmap(wx.ART_GO_DOWN))
59105
self.__customProperties()
60106

61-
def __set_properties(self):
62-
# begin wxGlade: TemperatureSeriesPanel.__set_properties
63-
self.instructionsLabel.SetFont(wx.Font(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "Sans"))
64-
self.buttonUp.SetSize(self.buttonUp.GetBestSize())
65-
self.buttonDown.SetSize(self.buttonDown.GetBestSize())
66-
# end wxGlade
67-
68-
def __do_layout(self):
69-
# begin wxGlade: TemperatureSeriesPanel.__do_layout
70-
sizer_1 = wx.BoxSizer(wx.VERTICAL)
71-
sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
72-
grid_sizer_1 = wx.GridSizer(1, 2, 10, 10)
73-
sizer_2 = wx.BoxSizer(wx.VERTICAL)
74-
sizer_4 = wx.BoxSizer(wx.HORIZONTAL)
75-
sizer_5 = wx.BoxSizer(wx.VERTICAL)
76-
sizer_1.Add(self.instructionsLabel, 0, wx.ALL | wx.EXPAND, 5)
77-
sizer_4.Add(self.listCtrlFiles, 1, wx.ALL | wx.EXPAND, 5)
78-
sizer_5.Add((0, 0), 1, 0, 0)
79-
sizer_5.Add(self.buttonUp, 0, wx.ALL, 5)
80-
sizer_5.Add(self.buttonDown, 0, wx.ALL, 5)
81-
sizer_5.Add((0, 0), 1, 0, 0)
82-
sizer_4.Add(sizer_5, 0, wx.EXPAND, 0)
83-
sizer_2.Add(sizer_4, 1, wx.EXPAND, 0)
84-
sizer_1.Add(sizer_2, 1, wx.EXPAND, 0)
85-
grid_sizer_1.Add(self.buttonAdd, 0, 0, 0)
86-
grid_sizer_1.Add(self.buttonDelete, 0, 0, 0)
87-
sizer_1.Add(grid_sizer_1, 0, wx.ALL, 5)
88-
sizer_1.Add(self.static_line_1, 0, wx.EXPAND, 0)
89-
sizer_3.Add((20, 20), 1, wx.EXPAND, 0)
90-
sizer_3.Add(self.goButton, 0, wx.ALL, 5)
91-
sizer_3.Add(self.cancelButton, 0, wx.ALL, 5)
92-
sizer_1.Add(sizer_3, 0, wx.EXPAND, 0)
93-
self.SetSizer(sizer_1)
94-
sizer_1.Fit(self)
95-
self.Layout()
96-
# end wxGlade
97-
98107
def __customProperties(self):
99108
"""Set the custom properties."""
100109
self.fit = None
@@ -283,7 +292,8 @@ def fillList(self):
283292
if idx == -1: idx = len(cp)
284293
for temperature, filename in self.datasets:
285294
shortname = "..." + filename[idx:]
286-
index = self.listCtrlFiles.InsertItem(sys.maxsize, str(temperature))
295+
# index = self.listCtrlFiles.InsertItem(sys.maxsize, str(temperature)) #doesn't work for windows
296+
index = self.listCtrlFiles.InsertItem(100000, str(temperature))
287297
self.listCtrlFiles.SetItem(index, 1, shortname)
288298
return
289299

src/diffpy/pdfgui/gui/wxextensions/validators.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def OnChar(self, event):
8282
event.Skip()
8383
return
8484

85-
if self.flag == ALPHA_ONLY and chr(key) in string.letters:
85+
if self.flag == ALPHA_ONLY and chr(key) in string.ascii_letters:
8686
event.Skip()
8787
return
8888

0 commit comments

Comments
 (0)