2014-11-12 20:41:29 -06:00
# -*- coding: utf-8 -*-
############################################################
# Copyright (c) 2013, 2014 Manuel Eduardo Cortéz Vallejo <manuel@manuelcortez.net>
#
# 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 <http://www.gnu.org/licenses/>.
#
############################################################
import wx
2015-03-29 23:27:18 -06:00
import widgetUtils
2015-04-19 18:28:27 -05:00
import application
2015-03-29 23:27:18 -06:00
class reportBugDialog ( widgetUtils . BaseDialog ) :
def __init__ ( self , categories , reproducibilities , severities ) :
super ( reportBugDialog , self ) . __init__ ( parent = None , id = wx . NewId ( ) )
2014-11-12 20:41:29 -06:00
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 )
2015-03-29 23:27:18 -06:00
self . category = wx . ComboBox ( panel , - 1 , choices = categories , style = wx . CB_READONLY )
2014-11-12 20:41:29 -06:00
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 )
2015-03-29 23:27:18 -06:00
self . reproducibility = wx . ComboBox ( panel , - 1 , choices = reproducibilities , style = wx . CB_READONLY )
2014-11-12 20:41:29 -06:00
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 " ) )
2015-03-29 23:27:18 -06:00
self . severity = wx . ComboBox ( panel , - 1 , choices = severities , style = wx . CB_READONLY )
2014-11-12 20:41:29 -06:00
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 )
2015-04-19 18:23:31 -05:00
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 " ) )
2014-11-12 20:41:29 -06:00
self . agree . SetValue ( False )
sizer . Add ( self . agree , 0 , wx . ALL , 5 )
2015-03-29 23:27:18 -06:00
self . ok = wx . Button ( panel , wx . ID_OK , _ ( u " Send report " ) )
self . ok . SetDefault ( )
2014-11-12 20:41:29 -06:00
cancel = wx . Button ( panel , wx . ID_CANCEL , _ ( u " Cancel " ) )
btnBox = wx . BoxSizer ( wx . HORIZONTAL )
2015-03-29 23:27:18 -06:00
btnBox . Add ( self . ok , 0 , wx . ALL , 5 )
2014-11-12 20:41:29 -06:00
btnBox . Add ( cancel , 0 , wx . ALL , 5 )
sizer . Add ( btnBox , 0 , wx . ALL , 5 )
panel . SetSizer ( sizer )
self . SetClientSize ( sizer . CalcMin ( ) )
2015-03-29 23:27:18 -06:00
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 ) :
2015-04-05 16:39:55 -05:00
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 ( )
2015-03-29 23:27:18 -06:00
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 )