Example #1
0
    def run(self):
        try:
            if self.rank == 1:
                for test in range(1, self.limit):
                    began = time()
                    kanji_set = []
                    while len(kanji_set) != 4:
                        kanji = Kanji.get_random(self.al.random_int())
                        if kanji is not None:
                            if kanji not in kanji_set:
                                kanji_set.append(kanji)
                    print 'Quadruple selected: ' + str(time() - began)
                    self.partDone.emit(float(test)/self.limit * 100)
            else:
                counter = 0.0
                while Kanji.picked_max() < self.rank:
                    began = time()
                    kanji_set = []
                    while len(kanji_set) != 4:
                        kanji = Kanji.get_random(self.al.random_int())
                        if kanji is not None:
                            if kanji not in kanji_set:
                                kanji_set.append(kanji)
                    print 'Quadruple selected: ' + str(time() - began)
                    counter += 0.0001
                    self.partDone.emit(float(counter) * 100)

        except Exception as e:
            print e.message

        self.over.emit(True)
Example #2
0
    def update_stat_info(self):
        """
        Update statistics for active DB.
        Note: very time consuming.
        """
        try:
            count, (picked, freqs), picked_count = \
                Kanji.query.count(), Kanji.freq_stats(), Kanji.picked_count()
            self.statInfo.setText("Kanji in DB: <b>%d</b> | Max picked: <b>%d</b> | \
Max frequency: <b>%d</b> | Picked at least once: <b>%d</b>" %
                    (count, max(picked), max(freqs), picked_count))
            self.update()
        except ValueError:
            set.statInfo.setText("No data available yet!")
Example #3
0
 def refresh_plot(self):
     """
     Update plot with data from DB.
     Note: very time consuming.
     """
     #todo: how about 2d/3d contour, eh?
     self.statPlot.kanjiStats(Kanji.freq_stats())
     self.update_stat_info()
Example #4
0
File: ui.py Project: Xifax/ransukan
    def run(self):
        try:
            kanji_set = []
            while len(kanji_set) != 4:
                kanji = Kanji.get_random(self.al.random_int())
                if kanji is not None:
                    # Should not get the same kanji in one set
                    if kanji not in kanji_set:
                        kanji_set.append(kanji)
            self.results['kanji_set'] = kanji_set
            self.results['success'] = True
        except MessedUpException as e:
            self.results['message'] = e.message

        self.done.emit(self.results)
Example #5
0
def parse_freq_html(file_path):
    with file(file_path) as f:
        html = f.read()
        f.close()
    soup = BeautifulSoup(html)
    kanji_table = soup.find('table')
    for row in kanji_table.findAll('tr'):
        cols = row.findAll('td')
        if cols:
            Kanji(  rank=cols[0].string,
                    character=cols[1].a.string,
                    frequency=cols[2].string,
                    dominance=cols[3].string[:-1],
                    picked=0)
    update_db()
Example #6
0
    def run(self):
        try:
            kanji_set = []
            while len(kanji_set) != 4:
                kanji = Kanji.get_random(self.al.random_int())
                if kanji is not None:
                    # Should not get the same kanji in one set
                    if kanji not in kanji_set:
                        kanji_set.append(kanji)
            self.results['kanji_set'] = kanji_set
            self.results['success'] = True
        except MessedUpException as e:
            self.results['message'] = e.message

        self.done.emit(self.results)
Example #7
0
    def eventFilter(self, object, event):

        if event.type() == QEvent.HoverEnter:
            object.setStyleSheet("QLabel { color: rgb(125, 125, 255); }")
        if event.type() == QEvent.HoverLeave:
            object.setStyleSheet("QLabel { color: rgb(0, 0, 0); }")
        if event.type() == QEvent.MouseButtonPress:
            if event.button() == Qt.LeftButton:
                try:
                    kanji = None
                    while kanji is None:
                        kanji = Kanji.get_random(
                            parent_up(object).al.random_int())
                    object.setText(kanji.character)
                    if object is parent_up(object).day:
                        parent_up(object).dayLabel.setText(
                            '<b>Day:</b> ' + str(kanji.frequency) + ' | ' +
                            str(kanji.dominance) + '%')
                    elif object is parent_up(object).week:
                        parent_up(object).weekLabel.setText(
                            '<b>Week:</b> ' + str(kanji.frequency) + ' | ' +
                            str(kanji.dominance) + '%')
                    elif object is parent_up(object).month:
                        parent_up(object).monthLabel.setText(
                            '<b>Month:</b> ' + str(kanji.frequency) + ' | ' +
                            str(kanji.dominance) + '%')
                    elif object is parent_up(object).year:
                        parent_up(object).yearLabel.setText(
                            '<b>Year:</b> ' + str(kanji.frequency) + ' | ' +
                            str(kanji.dominance) + '%')
                    parent_up(object).kanji_tooltip(object)
                    parent_up(object).stats.update_stat_info()
                    parent_up(object).stats.refresh_plot()
                except MessedUpException as e:
                    parent_up(object).show_message_then_hide(e.message)
            elif event.button() == Qt.RightButton:
                found = JDIC.search(object.text())
                if found:
                    parent_up(object).toggle_kanji_info(object, found)
                else:
                    parent_up(object).show_message_then_hide(
                        'No such kanji in kanjidic2!')
        return False
Example #8
0
File: ui.py Project: Xifax/ransukan
    def eventFilter(self, object, event):

        if event.type() == QEvent.HoverEnter:
            object.setStyleSheet("QLabel { color: rgb(125, 125, 255); }")
        if event.type() == QEvent.HoverLeave:
            object.setStyleSheet("QLabel { color: rgb(0, 0, 0); }")
        if event.type() == QEvent.MouseButtonPress:
            if event.button() == Qt.LeftButton:
                try:
                    kanji = None
                    while kanji is None:
                        kanji = Kanji.get_random(parent_up(object).al.random_int())
                    object.setText(kanji.character)
                    if object is parent_up(object).day:
                        parent_up(object).dayLabel.setText('<b>Day:</b> ' + str(kanji.frequency) + ' | '
                                                + str(kanji.dominance) + '%')
                    elif object is parent_up(object).week:
                        parent_up(object).weekLabel.setText('<b>Week:</b> ' + str(kanji.frequency) + ' | '
                                                + str(kanji.dominance) + '%')
                    elif object is parent_up(object).month:
                        parent_up(object).monthLabel.setText('<b>Month:</b> ' + str(kanji.frequency) + ' | '
                                                + str(kanji.dominance) + '%')
                    elif object is parent_up(object).year:
                        parent_up(object).yearLabel.setText('<b>Year:</b> ' + str(kanji.frequency) + ' | '
                                                + str(kanji.dominance) + '%')
                    parent_up(object).kanji_tooltip(object)
                    parent_up(object).stats.update_stat_info()
                    parent_up(object).stats.refresh_plot()
                except MessedUpException as e:
                    parent_up(object).show_message_then_hide(e.message)
            elif event.button() == Qt.RightButton:
                found = JDIC.search(object.text())
                if found:
                    parent_up(object).toggle_kanji_info(object, found)
                else:
                    parent_up(object).show_message_then_hide('No such kanji in kanjidic2!')
        return False
Example #9
0
 def reset_stats(self):
     Kanji.reset_stats()
     self.refresh_plot()
     self.update_stat_info()