24 |
read_proj_file, write_proj_file |
read_proj_file, write_proj_file |
25 |
from Thuban.UI.dialogs import NonModalNonParentDialog |
from Thuban.UI.dialogs import NonModalNonParentDialog |
26 |
|
|
27 |
|
from common import ThubanBeginBusyCursor, ThubanEndBusyCursor |
28 |
from sizers import NotebookLikeSizer |
from sizers import NotebookLikeSizer |
29 |
|
|
30 |
ID_PROJ_ADVANCED = 4001 |
ID_PROJ_ADVANCED = 4001 |
247 |
|
|
248 |
if newproj is not None: |
if newproj is not None: |
249 |
projfile.Replace(proj, newproj) |
projfile.Replace(proj, newproj) |
250 |
try: |
self.write_proj_file(projfile) |
|
write_proj_file(projfile) |
|
|
except IOError, (errno, errstr): |
|
|
self.__ShowError(projfile.GetFilename(), errstr) |
|
251 |
self.availprojs.SetClientData(sel[0], [newproj, projfile]) |
self.availprojs.SetClientData(sel[0], [newproj, projfile]) |
252 |
|
|
253 |
self.__FillAvailList( selectProj = newproj.Label()) |
self.__FillAvailList( selectProj = newproj.Label()) |
257 |
proj = self.__GetProjection() |
proj = self.__GetProjection() |
258 |
if proj is not None: |
if proj is not None: |
259 |
self.__usrProjFile.Add(proj) |
self.__usrProjFile.Add(proj) |
260 |
try: |
self.write_proj_file(self.__usrProjFile) |
|
write_proj_file(self.__usrProjFile) |
|
|
except IOError, (errno, errstr): |
|
|
self.__ShowError(self.__userProjFile.GetFilename(), errstr) |
|
|
|
|
261 |
self.__FillAvailList( selectProj = proj.Label()) |
self.__FillAvailList( selectProj = proj.Label()) |
262 |
|
|
263 |
def _OnProjAvail(self, event): |
def _OnProjAvail(self, event): |
280 |
if dlg.ShowModal() == wxID_OK: |
if dlg.ShowModal() == wxID_OK: |
281 |
path = dlg.GetPath() |
path = dlg.GetPath() |
282 |
|
|
283 |
|
ThubanBeginBusyCursor() |
284 |
try: |
try: |
285 |
projFile, warnings = read_proj_file(path) |
try: |
286 |
self.show_warnings(_("Warnings"), path, warnings) |
projFile, warnings = read_proj_file(path) |
287 |
for proj in projFile.GetProjections(): |
except IOError, (errno, errstr): |
288 |
self.__usrProjFile.Add(proj) |
self.__ShowError(dlg.GetPath(), errstr) |
289 |
write_proj_file(self.__usrProjFile) |
else: |
290 |
except IOError, (errno, errstr): |
self.show_warnings(_("Warnings"), path, warnings) |
291 |
self.__ShowError(dlg.GetPath(), errstr) |
for proj in projFile.GetProjections(): |
292 |
|
self.__usrProjFile.Add(proj) |
293 |
|
self.write_proj_file(self.__usrProjFile) |
294 |
|
finally: |
295 |
|
ThubanEndBusyCursor() |
296 |
|
|
297 |
self.__FillAvailList() |
self.__FillAvailList() |
298 |
|
|
316 |
if proj is not None: |
if proj is not None: |
317 |
projFile.Add(proj) |
projFile.Add(proj) |
318 |
|
|
319 |
try: |
self.write_proj_file(projFile) |
|
write_proj_file(projFile) |
|
|
except IOError, (errno, errstr): |
|
|
self.__ShowError(dlg.GetPath(), errstr) |
|
320 |
|
|
321 |
dlg.Destroy() |
dlg.Destroy() |
322 |
|
|
348 |
if proj is not None and projfile is not None: |
if proj is not None and projfile is not None: |
349 |
projfile.Remove(proj) |
projfile.Remove(proj) |
350 |
|
|
351 |
try: |
self.write_proj_file(projfile) |
|
write_proj_file(projfile) |
|
|
except IOError, (errno, errstr): |
|
|
self.__ShowError(projfile.GetFilename(), errstr) |
|
352 |
|
|
353 |
self.__FillAvailList() |
self.__FillAvailList() |
354 |
|
|
569 |
# the list can never be empty. there will always be |
# the list can never be empty. there will always be |
570 |
# at least this one item |
# at least this one item |
571 |
# |
# |
572 |
self.availprojs.Append("<None>", (None, None)) |
self.availprojs.Append(_("<None>"), (None, None)) |
573 |
|
|
574 |
projfile, warnings = get_system_proj_file() |
ThubanBeginBusyCursor() |
575 |
self.show_warnings(_("Warnings"), projfile.GetFilename(), warnings) |
try: |
576 |
for proj in projfile.GetProjections(): |
projfile, warnings = get_system_proj_file() |
577 |
self.availprojs.Append(proj.Label(), [proj, projfile]) |
self.show_warnings(_("Warnings"), projfile.GetFilename(), warnings) |
578 |
self.__sysProjFile = projfile |
for proj in projfile.GetProjections(): |
579 |
|
self.availprojs.Append(proj.Label(), [proj, projfile]) |
580 |
projfile, warnings = get_user_proj_file() |
self.__sysProjFile = projfile |
581 |
self.show_warnings(_("Warnings"), projfile.GetFilename(), warnings) |
|
582 |
for proj in projfile.GetProjections(): |
projfile, warnings = get_user_proj_file() |
583 |
self.availprojs.Append(proj.Label(), [proj, projfile]) |
self.show_warnings(_("Warnings"), projfile.GetFilename(), warnings) |
584 |
self.__usrProjFile = projfile |
for proj in projfile.GetProjections(): |
585 |
|
self.availprojs.Append(proj.Label(), [proj, projfile]) |
586 |
|
self.__usrProjFile = projfile |
587 |
|
finally: |
588 |
|
ThubanEndBusyCursor() |
589 |
|
|
590 |
# |
# |
591 |
# We add the current projection to the list at last. |
# We add the current projection to the list at last. |
603 |
else: |
else: |
604 |
if selectCurrent: |
if selectCurrent: |
605 |
self.availprojs.SetSelection( |
self.availprojs.SetSelection( |
606 |
self.availprojs.FindString("<None>") |
self.availprojs.FindString(_("<None>")) |
607 |
) |
) |
608 |
if selectProj: |
if selectProj: |
609 |
self.availprojs.SetSelection( |
self.availprojs.SetSelection( |
610 |
self.availprojs.FindString(selectProj) |
self.availprojs.FindString(selectProj) |
611 |
) |
) |
612 |
|
|
613 |
|
def write_proj_file(self, proj_file): |
614 |
|
"""Write the ProjFile object proj_file back to its file |
615 |
|
|
616 |
|
Show a busy cursor while writing and if an error occurs show a |
617 |
|
dialog with the error message. |
618 |
|
""" |
619 |
|
try: |
620 |
|
ThubanBeginBusyCursor() |
621 |
|
try: |
622 |
|
write_proj_file(proj_file) |
623 |
|
finally: |
624 |
|
ThubanEndBusyCursor() |
625 |
|
except IOError, (errno, errstr): |
626 |
|
self.__ShowError(proj_file.GetFilename(), errstr) |
627 |
|
|
628 |
|
|
629 |
|
|
630 |
class ProjPanel(wxPanel): |
class ProjPanel(wxPanel): |
631 |
"""Base class for all projection panels.""" |
"""Base class for all projection panels.""" |