Ticket #1812: 0001-Show-vote-result-while-voting-check-box.patch

File 0001-Show-vote-result-while-voting-check-box.patch, 10.0 KB (added by jasg, 14 years ago)
  • poll.py

    From cef3de46d31292b323c449283c0400b99241a8ba Mon Sep 17 00:00:00 2001
    From: Jorge Saldivar <jorge@jorge-laptop.(none)>
    Date: Wed, 10 Mar 2010 15:38:02 -0300
    Subject: [PATCH] Show vote result while voting, check box
    
    ---
     poll.py |  168 +++++++++++++++++++++++++++++++++++----------------------------
     1 files changed, 93 insertions(+), 75 deletions(-)
    
    diff --git a/poll.py b/poll.py
    index f4a96a9..f2a2716 100644
    a b class PollBuilder(activity.Activity): 
    190190        self._has_voted = False
    191191        self._previewing = False
    192192        self._current_view = None  # so we can switch back
     193       
     194        #This property allows result viewing while voting
     195        self._view_answer = True
    193196
    194197        # Lesson plan widget
    195198        self._lessonplan_widget = None
    class PollBuilder(activity.Activity): 
    319322            orientation=hippo.ORIENTATION_HORIZONTAL)
    320323        poll_details_box.append(self.poll_details_box_tail)
    321324
    322         self.current_vote = None
     325        self.current_vote = None       
    323326        self.draw_poll_details_box()
    324327
    325328        button_box = self._canvas_buttonbox()
    class PollBuilder(activity.Activity): 
    550553                    size_mode = 'wrap-word'),
    551554                    hippo.PACK_EXPAND)
    552555
    553             if votes_total > 0:
    554                 self._logger.debug(str(self._poll.data[choice] * 1.0 / votes_total))
     556            if self._view_answer \
     557                or not self._poll.active:
     558                    if votes_total > 0:
     559                        self._logger.debug(str(self._poll.data[choice] * 1.0 / votes_total))
     560       
     561                        graph_box = hippo.CanvasBox(
     562                                box_width = GRAPH_WIDTH,
     563                                orientation = hippo.ORIENTATION_HORIZONTAL)
     564                        answer_row.append(graph_box)
     565       
     566                        graph_box.append(hippo.CanvasText(
     567                                text=justify(self._poll.data, choice),
     568                                xalign=hippo.ALIGNMENT_END,
     569                                padding_right = 2,
     570                                color=style.Color(DARK_GREEN).get_int(),
     571                                box_width = GRAPH_TEXT_WIDTH))
     572       
     573       
     574                        graph_box.append(hippo.CanvasBox(
     575                                orientation=hippo.ORIENTATION_HORIZONTAL,
     576                                background_color=style.Color(PINK).get_int(),
     577                                box_width = int(float(self._poll.data[choice]) *
     578                                    (GRAPH_WIDTH - GRAPH_TEXT_WIDTH*2) / votes_total)))
     579       
     580                        graph_box.append(hippo.CanvasText(
     581                                text=str(self._poll.data[choice] * 100 / votes_total)+'%',
     582                                xalign=hippo.ALIGNMENT_START,
     583                                padding_left = 2,
     584                                color=style.Color(DARK_GREEN).get_int(),
     585                                box_width = GRAPH_TEXT_WIDTH))
    555586
    556                 graph_box = hippo.CanvasBox(
    557                         box_width = GRAPH_WIDTH,
    558                         orientation = hippo.ORIENTATION_HORIZONTAL)
    559                 answer_row.append(graph_box)
     587            answer_box.append(answer_row)
    560588
    561                 graph_box.append(hippo.CanvasText(
    562                         text=justify(self._poll.data, choice),
     589        if self._view_answer \
     590            or not self._poll.active:
     591                if (self._poll.active and self._has_voted) or\
     592                    not self._poll.active:
     593       
     594                    # Line above total
     595                    line_box = hippo.CanvasBox(
    563596                        xalign=hippo.ALIGNMENT_END,
    564                         padding_right = 2,
    565                         color=style.Color(DARK_GREEN).get_int(),
    566                         box_width = GRAPH_TEXT_WIDTH))
    567 
    568 
    569                 graph_box.append(hippo.CanvasBox(
    570                         orientation=hippo.ORIENTATION_HORIZONTAL,
    571                         background_color=style.Color(PINK).get_int(),
    572                         box_width = int(float(self._poll.data[choice]) *
    573                             (GRAPH_WIDTH - GRAPH_TEXT_WIDTH*2) / votes_total)))
    574 
    575                 graph_box.append(hippo.CanvasText(
    576                         text=str(self._poll.data[choice] * 100 / votes_total)+'%',
     597                        spacing=8,
     598                        box_height=4,
     599                        padding_left = GRAPH_TEXT_WIDTH,
     600                        padding_right = GRAPH_TEXT_WIDTH,
     601                        orientation=hippo.ORIENTATION_HORIZONTAL)
     602                    line = hippo.CanvasBox(
     603                        background_color=style.Color(DARK_GREEN).get_int(),
     604                        box_width = GRAPH_WIDTH - GRAPH_TEXT_WIDTH*2,
     605                        orientation=hippo.ORIENTATION_HORIZONTAL)
     606                    line_box.append(line)
     607                    answer_box.append(line_box)
     608       
     609                    # total votes
     610                    totals_box = hippo.CanvasBox(
     611                        xalign=hippo.ALIGNMENT_END,
     612                        box_width = GRAPH_WIDTH,
     613                        spacing=8,
     614                        padding_left = GRAPH_TEXT_WIDTH,
     615                        padding_right = GRAPH_TEXT_WIDTH,
     616                        orientation=hippo.ORIENTATION_HORIZONTAL)
     617                    answer_box.append(totals_box)
     618       
     619                    spacer = hippo.CanvasBox(
     620                        box_width=100, orientation=hippo.ORIENTATION_VERTICAL)
     621       
     622                    spacer.append(hippo.CanvasText(
     623                        text=str(votes_total),
     624                        xalign=hippo.ALIGNMENT_END,
     625                        color=style.Color(DARK_GREEN).get_int()))
     626                    totals_box.append(spacer)
     627       
     628                    totals_box.append(hippo.CanvasText(
     629                        text=' '+_('votes'),
    577630                        xalign=hippo.ALIGNMENT_START,
    578                         padding_left = 2,
    579                         color=style.Color(DARK_GREEN).get_int(),
    580                         box_width = GRAPH_TEXT_WIDTH))
    581 
    582             answer_box.append(answer_row)
    583 
    584         if (self._poll.active and self._has_voted) or\
    585             not self._poll.active:
    586 
    587             # Line above total
    588             line_box = hippo.CanvasBox(
    589                 xalign=hippo.ALIGNMENT_END,
    590                 spacing=8,
    591                 box_height=4,
    592                 padding_left = GRAPH_TEXT_WIDTH,
    593                 padding_right = GRAPH_TEXT_WIDTH,
    594                 orientation=hippo.ORIENTATION_HORIZONTAL)
    595             line = hippo.CanvasBox(
    596                 background_color=style.Color(DARK_GREEN).get_int(),
    597                 box_width = GRAPH_WIDTH - GRAPH_TEXT_WIDTH*2,
    598                 orientation=hippo.ORIENTATION_HORIZONTAL)
    599             line_box.append(line)
    600             answer_box.append(line_box)
    601 
    602             # total votes
    603             totals_box = hippo.CanvasBox(
    604                 xalign=hippo.ALIGNMENT_END,
    605                 box_width = GRAPH_WIDTH,
    606                 spacing=8,
    607                 padding_left = GRAPH_TEXT_WIDTH,
    608                 padding_right = GRAPH_TEXT_WIDTH,
    609                 orientation=hippo.ORIENTATION_HORIZONTAL)
    610             answer_box.append(totals_box)
    611 
    612             spacer = hippo.CanvasBox(
    613                 box_width=100, orientation=hippo.ORIENTATION_VERTICAL)
    614 
    615             spacer.append(hippo.CanvasText(
    616                 text=str(votes_total),
    617                 xalign=hippo.ALIGNMENT_END,
    618                 color=style.Color(DARK_GREEN).get_int()))
    619             totals_box.append(spacer)
    620 
    621             totals_box.append(hippo.CanvasText(
    622                 text=' '+_('votes'),
    623                 xalign=hippo.ALIGNMENT_START,
    624                 color=style.Color(DARK_GREEN).get_int()))
    625             if votes_total < self._poll.maxvoters:
    626                 totals_box.append(hippo.CanvasText(
    627                     text=' ('+str(self._poll.maxvoters-votes_total)+
    628                          ' votes left to collect)',
    629                     color=style.Color(DARK_GREEN).get_int()))
     631                        color=style.Color(DARK_GREEN).get_int()))
     632                    if votes_total < self._poll.maxvoters:
     633                        totals_box.append(hippo.CanvasText(
     634                            text=' ('+str(self._poll.maxvoters-votes_total)+
     635                                 ' votes left to collect)',
     636                            color=style.Color(DARK_GREEN).get_int()))
    630637
    631638        # Button area
    632639        if self._poll.active and not self._previewing:
    class PollBuilder(activity.Activity): 
    771778                style.COLOR_WHITE.get_gdk_color())
    772779        entrybox.connect('changed', self._entry_activate_cb, 'maxvoters')
    773780        hbox.append(hippo.CanvasWidget(widget=entrybox))
    774         buildbox.append(hbox)
     781        buildbox.append(hbox)         
    775782
    776783        for choice in self._poll.options.keys():
    777784            hbox = hippo.CanvasBox(spacing=8,
    class PollBuilder(activity.Activity): 
    796803        button = gtk.Button(_("Step 2: Save"))
    797804        button.connect('clicked', self._button_save_cb)
    798805        hbox.append(hippo.CanvasWidget(widget=theme_button(button)))
     806       
     807        hbox.append(self._text_mainbox(_('Show answers while voting')))
     808        viewResultCB= gtk.CheckButton(label='')
     809        viewResultCB.set_active(self._view_answer)
     810        viewResultCB.connect('toggled', self._view_result_checkbox_cb)
     811        hbox.append(hippo.CanvasWidget(widget=viewResultCB), hippo.PACK_EXPAND)
     812       
    799813        buildbox.append(hbox)
    800814       
    801815        button_box = self._canvas_buttonbox(button_to_highlight=1)
    class PollBuilder(activity.Activity): 
    803817
    804818        return canvasbox
    805819
     820    def _view_result_checkbox_cb(self, checkbox, data=None):
     821        logging.debug('Checkbox value= %s', checkbox.get_active())
     822        self._view_answer = checkbox.get_active()
     823
    806824    def _button_preview_cb(self, button, data=None):
    807825        """Preview button clicked."""
    808826        # Validate data