Ejemplo n.º 1
0
 def __SetText(self, panel):
     self.SetTitle(structs.CurLang('NewResearch', 'Title'))
     text_source = structs.Language['NewResearch']
     for element in panel.GetChildren():
         name = element.GetName()
         if name in text_source:
             element.SetLabel(structs.CurLang('NewResearch', name, False))
Ejemplo n.º 2
0
 def __Stage_1_SetText(self, panel, timer):
     timerText = panel.FindWindow('ConfidenceTimerSec')
     segsLabels = panel.FindWindow('SegsLabels')
     nextBtn = panel.FindWindow('NextButton')
     slider = panel.FindWindow('ConfidenceSlider')
     percent = panel.FindWindow('ConfidencePercent')
     if timer:
         timerText.SetLabel(
             str(self.confidenceTime) +
             structs.CurLang('Research', 'TimerSec', False))
         percent.Hide()
         slider.Hide()
         segsLabels.Hide()
         nextBtn.Hide()
         timerText.Show()
     else:
         nextBtn.SetLabel(structs.CurLang('Research', 'NextButton'))
         percent.SetLabel(
             structs.CurLang('Research', 'ConfidencePercent') + ' ' +
             str(slider.GetValue()) + '%')
         segsLabels.SetLabel(structs.CurLang('Research', 'SegsLabels'))
         percent.Show()
         slider.Show()
         segsLabels.Show()
         nextBtn.Show()
         timerText.Hide()
     UpdateAll(panel)
Ejemplo n.º 3
0
 def __Stage_2_ValidateAnswer(self, answer):
     if len(answer) == 0:
         WrnMsg(structs.CurLang('Research', 'EmptyAnswerWarningTitle'),
                structs.CurLang('Research', 'EmptyAnswerWarning'), self)
         return False
     self.questionsAnswered += 1
     return True
Ejemplo n.º 4
0
def __OpenFile(filePath,
               dia=False,
               msg=False,
               errStr=structs.CurLang('Files', 'OpenFileDefaultErrStr'),
               extension=ext.ANY):
    if not CheckExisting(filePath):
        msgAns = True
        if msg:
            msgAns = ui.QueDia(
                structs.CurLang('Files', 'OpenFileTitle'),
                errStr + structs.CurLang('Files', 'OpenFileContent'))
        if dia and msgAns:
            filePath = ui.FileOpenDia(extension)
        else:
            return None
    if filePath == None:
        return None
    mode = {'mode': 'r'}
    if extension in [ext.JSON, ext.LOG, ext.TXT, ext.XML, ext.CONFIG]:
        mode['mode'] = 'r'
        mode['encoding'] = 'utf8'
    else:
        mode['mode'] = 'rb'
    with open(filePath, **mode) as content:
        data = content.read()
    return data
Ejemplo n.º 5
0
 def __SetText(self, mainPanel):
     self.SetTitle(structs.CurLang('Research', 'Title')[self.stage - 1])
     text_source = structs.Language['Research']
     for element in mainPanel.GetChildren():
         name = element.GetName()
         if name in text_source:
             element.SetLabel(structs.CurLang('Research', name, False))
     self.__Stage_2_SetText(self.stagesPanels[1], self.groupPanels)
Ejemplo n.º 6
0
 def __Stage_2_SetText(self, panel, gPanels):
     for gPanel in gPanels:
         gPanel.FindWindow('AnswerButton').SetLabel(
             structs.CurLang('Research', 'AnswerButton'))
         gPanel.FindWindow('ValidateButton').SetLabel(
             structs.CurLang('Research', 'ValidateButton'))
         gPanel.FindWindow('CancelButton').SetLabel(
             structs.CurLang('Research', 'CancelButton'))
     UpdateAll(panel)
Ejemplo n.º 7
0
 def __StartBtnClick(self, event):
     if not structs.ImportQuestions(
             files.OpenJSON(
                 structs.GetSetting('questions_pack'), True, True,
                 structs.CurLang('Files', 'QuestionsPackFileName'))):
         ErrMsg(
             structs.CurLang('Files', 'LoadingErrorTitle'),
             structs.CurLang('Files', 'LoadingError') + ' ' +
             structs.CurLang('Files', 'QuestionsPackFileName', False), self)
         return
     if not (structs.GetQuestionsNumber() %
             structs.GetSetting('groups_number') == 0):
         ErrMsg(structs.CurLang('Settings', 'WrongGroupsNumberTitle'),
                structs.CurLang('Settings', 'WrongGroupsNumber'), self)
         return
     if structs.GetSetting('image'):
         images = []
         for i in range(1, structs.GetSetting('groups_number') + 1):
             img = str(i) + '.png'
             if files.CheckExisting(img):
                 images.append(wx.Bitmap(img))
             else:
                 ErrMsg(
                     structs.CurLang('Files', 'LoadingErrorTitle'),
                     structs.CurLang('Files', 'LoadingError') + ' ' +
                     structs.CurLang('Files', 'ImageFileName', False), self)
                 return
         structs.ImportImagePack(images)
     OpenFrame(newResearchFrame, self, True)
Ejemplo n.º 8
0
 def __Stage_2_SetContents(self, panel):
     panel.FindWindow('RoundNumber').SetLabel(
         structs.CurLang('Research', 'RoundNumber') + ' ' +
         str(self.roundNumber) + '/' + str(self.roundsNubmer))
     self.__Stage_2_SetGroupsContents(self.groupPanels)
     btn = panel.FindWindow('NextRoundButton')
     if self.roundNumber == self.roundsNubmer:
         btn.SetLabel(structs.CurLang('Research', 'NextRoundButton')[1])
     else:
         btn.SetLabel(structs.CurLang('Research', 'NextRoundButton')[0])
     btn.Disable()
     UpdateAll(panel)
Ejemplo n.º 9
0
 def __Validate(self, panel):
     name = len(panel.FindWindow('NameText').GetValue()) > 0
     sex = panel.FindWindow('SexChoice').GetCurrentSelection() != -1
     result = name and sex
     wrnStr = structs.CurLang('NewResearch', 'ValidatorWrn') + ' :'
     if not name:
         wrnStr += '\n' + structs.CurLang('NewResearch', 'NameLabel')
     if not sex:
         wrnStr += '\n' + structs.CurLang('NewResearch', 'SexLabel')
     if not result:
         WrnMsg(structs.CurLang('NewResearch', 'ValidatorWrnTitle'), wrnStr,
                self)
     return result
Ejemplo n.º 10
0
    def OnInit(self):
        structs.ImportSettings(
            files.OpenJSON('settings.json', True, True,
                           structs.CurLang('Files', 'ConfigurationFileName')))
        appIconPath = 'icon.png'
        if files.CheckExisting(appIconPath):
            structs.SetIcon(wx.Icon(appIconPath))
        else:
            ui.ErrMsg(structs.CurLang('Files', 'IconLoadingErrorTitle'),
                      structs.CurLang('Files', 'IconLoadingError'))
            return False
        ui.FramesStart()
        self.SetTopWindow(ui.mainFrame)

        return True
Ejemplo n.º 11
0
 def __Stage_1_SetContents(self, panel):
     panel.FindWindow('ConfidenceSlider').SetValue(0)
     panel.FindWindow('QuestionNumber').SetLabel(
         structs.CurLang('Research', 'QuestionNumber') + ' ' +
         str(self.questionNumber) + '/60 :')
     panel.FindWindow('QuestionText').SetLabel(
         textwrap.fill(structs.GetQuestion(self.questionNumber), 40))
Ejemplo n.º 12
0
 def __Stage_1_SliderEvt(self, event):
     panel = self.stagesPanels[0]
     slider = panel.FindWindow('ConfidenceSlider')
     percent = panel.FindWindow('ConfidencePercent')
     percent.SetLabel(
         structs.CurLang('Research', 'ConfidencePercent') + ' ' +
         str(slider.GetValue() * 5) + '%')
Ejemplo n.º 13
0
 def __Stage_2_ValidateBtnClick(self, event):
     self.stopwatch.Stop()
     panel = event.GetEventObject().GetParent()
     panelNumber = self.panelsNumbers[panel]
     answer = panel.FindWindow('AnswerField').GetValue()
     if self.__Stage_2_ValidateAnswer(answer):
         panel.FindWindow('AnswerField').Hide()
         panel.FindWindow('ValidateButton').Hide()
         panel.FindWindow('CancelButton').Hide()
         answerText = panel.FindWindow('AnswerText')
         answerText.SetLabel(
             textwrap.fill(
                 structs.CurLang('Research', 'AnswerText') + ' : ' + answer,
                 40))
         answerText.Show()
         qn = self.__Stage_2_CalculateQuestionNumber(panelNumber)
         if structs.GetSetting('score'):
             self.__Stage_2_ScoreRecalc(panelNumber, qn, answer)
         if self.questionsAnswered == structs.GetSetting('groups_number'):
             panel.GetParent().FindWindow('NextRoundButton').Enable()
         UpdateAll(panel.GetParent())
         self.answers.append(
             structs.NewAnswer(self.questions[qn], answer,
                               self.stopwatch.GetTime()))
     else:
         self.stopwatch.Start()
Ejemplo n.º 14
0
 def __Stage_1_Restart(self, panel):
     self.questionNumber += 1
     if self.questionNumber <= structs.GetQuestionsNumber():
         self.confidenceTime = structs.GetSetting('confidence_time')
         self.__Stage_1_SetContents(panel)
         self.__Stage_1_SetText(panel, True)
         self.confidenceTimer.Start(1000)
     else:
         self.stage += 1
         self.Hide()
         InfMsg(
             structs.CurLang('Research', 'Title')[self.stage - 1],
             structs.CurLang('Research', 'InformationText')[self.stage - 1],
             self)
         self.questions = [0] + structs.GetQuestionsConfident(
             log.GetConfidences())
         self.__SetText(self.mainPanel)
         self.stagesPanels[0].Hide()
         self.stagesPanels[1].Show()
         self.Show()
         self.__Stage_2_Round(self.stagesPanels[1], self.groupPanels)
Ejemplo n.º 15
0
 def __Stage_2_Round(self, panel, gPanels):
     self.roundNumber += 1
     self.questionsAnswered = 0
     self.answers = []
     if self.roundNumber <= self.roundsNubmer:
         for gPanel in gPanels:
             self.__Stage_2_AnswerElementsHide(gPanel)
         self.__Stage_2_SetContents(panel)
         self.stopwatch.Reset()
         self.stopwatch.Start()
     else:
         self.stage += 1
         self.Hide()
         InfMsg(
             structs.CurLang('Research', 'Title')[self.stage - 1],
             structs.CurLang('Research', 'InformationText')[self.stage - 1],
             self)
         logs = log.ExportLog()
         if not files.SaveJSON(logs):
             files.SaveJSON(logs, log.GenLogName() + '.json')
         self.Close()
Ejemplo n.º 16
0
def __FileDia(extension, source, mode):
    if source == None:
        source = wx.Window()
    mt = mode & (wx.FD_OPEN | wx.FD_SAVE)
    modeTitles = {
        wx.FD_OPEN: 'OpenFileDialogTitle',
        wx.FD_SAVE: 'SaveFileDialogTitle'
    }
    title = structs.CurLang('Files', modeTitles[mt])
    return wx.FileDialog(source,
                         message=title,
                         wildcard=files.Wildcard(extension),
                         style=mode)
Ejemplo n.º 17
0
def Wildcard(extension):
    exts = {
        ext.TXT: ['Ext_TXT', '(*.txt)|*.txt'],
        ext.JSON: ['Ext_JSON', '(*.json)|*.json'],
        ext.CONFIG: ['Ext_CONFIG', '(*.config)|*.config'],
        ext.XML: ['Ext_XML', '(*.xml)|*.xml'],
        ext.LOG: ['Ext_LOG', '(*.log)|*.log'],
        ext.BMP: ['Ext_BMP', '(*.bmp)|*.bmp'],
        ext.JPEG: ['Ext_JPEG', '(*.jpg;*.jpeg)|*.jpg;*.jpeg'],
        ext.PNG: ['Ext_PNG', '(*.png)|*.png'],
        ext.ANY: ['Ext_ANY', '(*.*)|*.*']
    }
    return structs.CurLang('Files',
                           exts[extension][0]) + ' ' + exts[extension][1]
Ejemplo n.º 18
0
    def __init__(self, parent):
        wx.Frame.__init__(self, parent=parent, style=wx.CLOSE_BOX | wx.CAPTION)
        self.SetIcon(structs.GetIcon())

        self.stage = 1

        self.questionNumber = 0
        self.confidenceTime = structs.GetSetting('confidence_time')
        self.confidenceTimer = wx.Timer(self)
        self.roundNumber = 0
        self.roundsNubmer = structs.GetQuestionsNumber() // structs.GetSetting(
            'groups_number')
        self.questionsAnswered = 0
        self.questions = []
        self.answers = []
        self.scores = [0] * structs.GetSetting('groups_number')
        self.stopwatch = log.Stopwatch()

        self.mainPanel = wx.Panel(self)
        self.stagesPanels = [
            wx.Panel(self.mainPanel),
            wx.Panel(self.mainPanel)
        ]
        self.groupPanels = []
        self.panelsNumbers = {}
        self.sortRounds = [4, 7, 10]

        self.__SetLayout(self.mainPanel, self.stagesPanels)
        self.__SetBinding(self.mainPanel, self.stagesPanels)

        InfMsg(
            structs.CurLang('Research', 'Title')[self.stage - 1],
            structs.CurLang('Research', 'InformationText')[self.stage - 1],
            self)
        self.stagesPanels[1].Hide()
        self.__Stage_1_Restart(self.stagesPanels[0])
Ejemplo n.º 19
0
def OpenJSON(filePath,
             dia=False,
             msg=False,
             errStr=structs.CurLang('Files', 'Ext_JSON')):
    return Open(filePath, dia, msg, errStr, extension=ext.JSON)
Ejemplo n.º 20
0
def Open(filePath,
         dia=False,
         msg=False,
         errStr=structs.CurLang('Files', 'Ext_ANY'),
         extension=ext.ANY):
    return __OpenFile(filePath, dia, msg, errStr, extension)
Ejemplo n.º 21
0
 def __AboutBtnClick(self, event):
     InfMsg(structs.CurLang('About', 'Title'),
            structs.CurLang('About', 'Text'), self)
Ejemplo n.º 22
0
def OpenPNG(filePath,
            dia=False,
            msg=False,
            errStr=structs.CurLang('Files', 'Ext_PNG')):
    return Open(filePath, dia, msg, errStr, extension=ext.PNG)
Ejemplo n.º 23
0
    def __SetLayout(self, panel):
        wx.StaticText(panel, name='NameLabel', style=wx.ALIGN_RIGHT)
        wx.TextCtrl(panel, name='NameText')
        wx.StaticText(panel, name='DateLabel', style=wx.ALIGN_RIGHT)
        wx.adv.DatePickerCtrl(panel,
                              name='DatePicker',
                              style=wx.adv.DP_DEFAULT)
        wx.StaticText(panel, name='SexLabel', style=wx.ALIGN_RIGHT)
        wx.Choice(panel,
                  name='SexChoice',
                  choices=structs.CurLang('NewResearch', 'SexChoices'))
        wx.Button(panel, name='StartButton')
        wx.Button(panel, name='CancelButton')

        nameSizer = wx.BoxSizer(wx.HORIZONTAL)
        dateSizer = wx.BoxSizer(wx.HORIZONTAL)
        sexSizer = wx.BoxSizer(wx.HORIZONTAL)
        buttonsSizer = wx.BoxSizer(wx.HORIZONTAL)
        topSizer = wx.BoxSizer(wx.VERTICAL)
        baseSizer = wx.BoxSizer(wx.VERTICAL)

        style = {
            'lowSizer1': {
                'proportion': 1,
                'flag': wx.ALL | wx.ALIGN_CENTER_VERTICAL,
                'border': 3
            },
            'lowSizer2': {
                'proportion': 2,
                'flag': wx.ALL | wx.ALIGN_CENTER_VERTICAL,
                'border': 3
            },
            'lowSizer3': {
                'proportion': 1,
                'flag': wx.ALL | wx.EXPAND,
                'border': 3
            },
            'topSizer': {
                'flag': wx.ALL | wx.EXPAND,
                'border': 3
            },
            'baseSizer': {
                'flag': wx.ALL,
                'border': 3
            }
        }

        nameSizer.Add(panel.FindWindow('NameLabel'), **style['lowSizer1'])
        nameSizer.Add(panel.FindWindow('NameText'), **style['lowSizer2'])
        dateSizer.Add(panel.FindWindow('DateLabel'), **style['lowSizer1'])
        dateSizer.Add(panel.FindWindow('DatePicker'), **style['lowSizer2'])
        sexSizer.Add(panel.FindWindow('SexLabel'), **style['lowSizer1'])
        sexSizer.Add(panel.FindWindow('SexChoice'), **style['lowSizer2'])
        buttonsSizer.Add(panel.FindWindow('StartButton'), **style['lowSizer3'])
        buttonsSizer.Add(panel.FindWindow('CancelButton'),
                         **style['lowSizer3'])
        topSizer.Add(nameSizer, **style['topSizer'])
        topSizer.Add(dateSizer, **style['topSizer'])
        topSizer.Add(sexSizer, **style['topSizer'])
        topSizer.Add(wx.StaticLine(panel), **style['topSizer'])
        topSizer.Add(buttonsSizer, **style['topSizer'])
        baseSizer.Add(topSizer, **style['baseSizer'])

        panel.SetSizer(baseSizer)
Ejemplo n.º 24
0
 def __Stage_2_SetScore(self, ScoreText, group):
     if self.roundNumber > 1:
         ScoreText.SetLabel(
             structs.CurLang('Research', 'ScoreText') + ' : ' +
             str(self.scores[group]))
Ejemplo n.º 25
0
 def __OnRepaint(self, event):
     self.SetLabel(structs.CurLang('Files', 'BrowseButtonLabel'))