# -*- coding: utf-8 -*- ############################################################ # Copyright (c) 2013, 2014 Manuel Eduardo Cortéz Vallejo # # 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, see . # ############################################################ import wx import widgetUtils import application class reportBugDialog(widgetUtils.BaseDialog): def __init__(self, categories, reproducibilities, severities): super(reportBugDialog, self).__init__(parent=None, id=wx.NewId()) self.SetTitle(_(u"Report an error")) panel = wx.Panel(self) sizer = wx.BoxSizer(wx.VERTICAL) categoryLabel = wx.StaticText(panel, -1, _(u"Select a category"), size=wx.DefaultSize) self.category = wx.ComboBox(panel, -1, choices=categories, style=wx.CB_READONLY) self.category.SetSelection(0) categoryB = wx.BoxSizer(wx.HORIZONTAL) categoryB.Add(categoryLabel, 0, wx.ALL, 5) categoryB.Add(self.category, 0, wx.ALL, 5) self.category.SetFocus() sizer.Add(categoryB, 0, wx.ALL, 5) summaryLabel = wx.StaticText(panel, -1, _(u"Briefly describe what happened. You will be able to thoroughly explain it later"), size=wx.DefaultSize) self.summary = wx.TextCtrl(panel, -1) dc = wx.WindowDC(self.summary) dc.SetFont(self.summary.GetFont()) self.summary.SetSize(dc.GetTextExtent("a"*80)) summaryB = wx.BoxSizer(wx.HORIZONTAL) summaryB.Add(summaryLabel, 0, wx.ALL, 5) summaryB.Add(self.summary, 0, wx.ALL, 5) sizer.Add(summaryB, 0, wx.ALL, 5) descriptionLabel = wx.StaticText(panel, -1, _(u"Here, you can describe the bug in detail"), size=wx.DefaultSize) self.description = wx.TextCtrl(panel, -1, style=wx.TE_MULTILINE) dc = wx.WindowDC(self.description) dc.SetFont(self.description.GetFont()) (x, y, z) = dc.GetMultiLineTextExtent("0"*2000) self.description.SetSize((x, y)) descBox = wx.BoxSizer(wx.HORIZONTAL) descBox.Add(descriptionLabel, 0, wx.ALL, 5) descBox.Add(self.description, 0, wx.ALL, 5) sizer.Add(descBox, 0, wx.ALL, 5) reproducibilityLabel = wx.StaticText(panel, -1, _(u"how often does this bug happen?"), size=wx.DefaultSize) self.reproducibility = wx.ComboBox(panel, -1, choices=reproducibilities, style=wx.CB_READONLY) self.reproducibility.SetSelection(3) reprB = wx.BoxSizer(wx.HORIZONTAL) reprB.Add(reproducibilityLabel, 0, wx.ALL, 5) reprB.Add(self.reproducibility, 0, wx.ALL, 5) sizer.Add(reprB, 0, wx.ALL, 5) severityLabel = wx.StaticText(panel, -1, _(u"Select the importance that you think this bug has")) self.severity = wx.ComboBox(panel, -1, choices=severities, style=wx.CB_READONLY) self.severity.SetSelection(3) severityB = wx.BoxSizer(wx.HORIZONTAL) severityB.Add(severityLabel, 0, wx.ALL, 5) severityB.Add(self.severity, 0, wx.ALL, 5) sizer.Add(severityB, 0, wx.ALL, 5) self.agree = wx.CheckBox(panel, -1, _(u"I know that the " + application.name + " bug system will get my Twitter username to contact me and fix the bug quickly")) self.agree.SetValue(False) sizer.Add(self.agree, 0, wx.ALL, 5) self.ok = wx.Button(panel, wx.ID_OK, _(u"Send report")) self.ok.SetDefault() cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Cancel")) btnBox = wx.BoxSizer(wx.HORIZONTAL) btnBox.Add(self.ok, 0, wx.ALL, 5) btnBox.Add(cancel, 0, wx.ALL, 5) sizer.Add(btnBox, 0, wx.ALL, 5) panel.SetSizer(sizer) self.SetClientSize(sizer.CalcMin()) def no_filled(self): wx.MessageDialog(self, _(u"You must fill out both fields"), _(u"Error"), wx.OK|wx.ICON_ERROR).ShowModal() def no_checkbox(self): wx.MessageDialog(self, _(u"You need to mark the checkbox to provide us your twitter username to contact you if it is necessary."), _(u"Error"), wx.ICON_ERROR).ShowModal() def success(self, id): wx.MessageDialog(self, _(u"Thanks for reporting this bug! In future versions, you may be able to find it in the changes list. You've reported the bug number %i") % (id), _(u"reported"), wx.OK).ShowModal() self.EndModal(wx.ID_OK) def error(self): wx.MessageDialog(self, _(u"Something unexpected occurred while trying to report the bug. Please, try again later"), _(u"Error while reporting"), wx.ICON_ERROR|wx.OK).ShowModal() self.EndModal(wx.ID_CANCEL)