コード例 #1
0
    def __init__(self, joke, jokebook_title=''):
        Page.__init__(
            self,
            spacing=8,
            #background_color=theme.COLOR_PAGE.get_int(),
            padding=4,
            border_color=theme.COLOR_RED.get_int(),
            border=0,
            xalign=hippo.ALIGNMENT_START,
            orientation=hippo.ORIENTATION_HORIZONTAL)

        # left column
        self.left = hippo.CanvasBox(border=0,
                                    border_color=theme.COLOR_RED.get_int(),
                                    box_width=450,
                                    xalign=hippo.ALIGNMENT_START,
                                    orientation=hippo.ORIENTATION_VERTICAL)
        joke_image = self.make_imagebox(joke, 'image', 320, 240, False)
        self.left.append(joke_image)
        self.left.append(
            hippo.CanvasText(text=jokebook_title,
                             xalign=hippo.ALIGNMENT_START,
                             color=theme.COLOR_DARK_GREEN.get_int()))
        self.left.append(
            hippo.CanvasText(text=_('Joke') + ' ' + str(joke.id),
                             xalign=hippo.ALIGNMENT_START))
        self.left.append(
            hippo.CanvasText(text=_('By') + ' ' + str(joke.joker),
                             xalign=hippo.ALIGNMENT_START))

        # right column
        self.right = hippo.CanvasBox(border=0,
                                     border_color=theme.COLOR_RED.get_int(),
                                     box_width=350,
                                     xalign=hippo.ALIGNMENT_START,
                                     orientation=hippo.ORIENTATION_VERTICAL)
        self.right.append(
            hippo.CanvasText(text=_('Question'),
                             xalign=hippo.ALIGNMENT_START,
                             color=theme.COLOR_DARK_GREEN.get_int()))
        self.right.append(self.make_bodytext(joke.text))

        self.right.append(hippo.CanvasBox(box_height=30))  # spacer

        self.answer_box = hippo.CanvasBox()
        self.answer_box.append(
            hippo.CanvasText(text=_('Answer'),
                             xalign=hippo.ALIGNMENT_START,
                             color=theme.COLOR_DARK_GREEN.get_int()))
        self.answer_box.append(self.make_bodytext(joke.answer))
        self.right.append(self.answer_box)

        self.append(self.left)
        self.append(self.right)
コード例 #2
0
 def __init__(self, jokebook):
   Page.__init__(self, xalign=hippo.ALIGNMENT_CENTER)
   
   preview_box = CanvasListBox()
   
   # cover
   cover = self.make_listrow()
   cover.props.orientation=hippo.ORIENTATION_VERTICAL
   cover.append(hippo.CanvasText(text='"' + (jokebook.title or '')+ '" ' +
       _('started by') + ' ' + (jokebook.owner or ''),
                                xalign=hippo.ALIGNMENT_CENTER,
                                padding_top=10))
   cover.append(hippo.CanvasBox(box_height=theme.SPACER_VERTICAL))      
   cover_picture = self.make_imagebox(jokebook, 'image', 480, 360, False)    
   cover.append(cover_picture)
   cover.append(hippo.CanvasBox(box_height=theme.SPACER_VERTICAL))
   preview_box.append(cover)
   
   # jokes
   for joke in jokebook.jokes:
     list_row = self.make_listrow(JokeViewer(joke, jokebook.title))
     preview_box.append(list_row)
   self.append(preview_box, hippo.PACK_EXPAND)
   
   self.append(hippo.CanvasBox(box_height=theme.SPACER_VERTICAL))
   
   button = gtk.Button(_('Edit'))
   button.connect('clicked', self.__do_clicked_edit, jokebook)    
   self.append(hippo.CanvasWidget(widget=theme.theme_widget(button)))
コード例 #3
0
ファイル: listview.py プロジェクト: nemesiscodex/jarabe
    def _show_message(self, message, show_clear_query=False):
        canvas = hippo.Canvas()
        self.remove(self.child)
        self.add(canvas)
        canvas.show()

        box = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL,
                              background_color=style.COLOR_WHITE.get_int(),
                              yalign=hippo.ALIGNMENT_CENTER,
                              spacing=style.DEFAULT_SPACING,
                              padding_bottom=style.GRID_CELL_SIZE)
        canvas.set_root(box)

        icon = CanvasIcon(size=style.LARGE_ICON_SIZE,
                          icon_name='activity-journal',
                          stroke_color=style.COLOR_BUTTON_GREY.get_svg(),
                          fill_color=style.COLOR_TRANSPARENT.get_svg())
        box.append(icon)

        text = hippo.CanvasText(text=message,
                                xalign=hippo.ALIGNMENT_CENTER,
                                font_desc=style.FONT_BOLD.get_pango_desc(),
                                color=style.COLOR_BUTTON_GREY.get_int())
        box.append(text)

        if show_clear_query:
            button = gtk.Button(label=_('Clear search'))
            button.connect('clicked', self.__clear_button_clicked_cb)
            button.props.image = Icon(icon_name='dialog-cancel',
                                      icon_size=gtk.ICON_SIZE_BUTTON)
            canvas_button = hippo.CanvasWidget(widget=button,
                                               xalign=hippo.ALIGNMENT_CENTER)
            box.append(canvas_button)
コード例 #4
0
ファイル: expandedentry.py プロジェクト: nemesiscodex/jarabe
    def _create_technical(self):
        vbox = hippo.CanvasBox()
        vbox.props.spacing = style.DEFAULT_SPACING

        lines = [
            _('Kind: %s') %
            (self._metadata.get('mime_type') or _('Unknown'), ),
            _('Date: %s') % (self._format_date(), ),
            _('Size: %s') % (format_size(
                int(
                    self._metadata.get(
                        'filesize', model.get_file_size(
                            self._metadata['uid']))))),
        ]

        for line in lines:
            text = hippo.CanvasText(
                text=line, font_desc=style.FONT_NORMAL.get_pango_desc())
            text.props.color = style.COLOR_BUTTON_GREY.get_int()

            if gtk.widget_get_default_direction() == gtk.TEXT_DIR_RTL:
                text.props.xalign = hippo.ALIGNMENT_END
            else:
                text.props.xalign = hippo.ALIGNMENT_START

            vbox.append(text)

        return vbox
コード例 #5
0
ファイル: page.py プロジェクト: Daksh/jokemachine
 def make_field(self,
                label,
                label_width,
                obj,
                property,
                field_width,
                editable=True):
     value = self.__get_property_value(obj, property)
     field_box = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL,
                                 xalign=hippo.ALIGNMENT_START,
                                 spacing=10)
     field_box.append(
         hippo.CanvasText(text=label,
                          box_width=label_width,
                          xalign=hippo.ALIGNMENT_START,
                          color=theme.COLOR_DARK_GREEN.get_int()))
     #if editable:
     textfield = self.__textview(value, field_width, -1, editable, False)
     textfield.control.get_buffer().connect('changed',
                                            self.__do_changed_control, obj,
                                            property)
     field_box.append(textfield)
     #else: # TODO - move to __textview()
     #glitch_box = CanvasBox(box_width=field_width)
     #glitch_box.append(hippo.CanvasText(text=value,
     #size_mode=hippo.CANVAS_SIZE_WRAP_WORD,
     #box_width=field_width,
     #xalign=hippo.ALIGNMENT_START))
     #field_box.append(glitch_box)
     return field_box
コード例 #6
0
    def __init__(self, parent, **kwargs):
        hippo.CanvasBox.__init__(self, **kwargs)
        self.__parent = parent

        self.props.border = 1
        self.props.border_color = theme.COLOR_TAB_ACTIVE.get_int()
        self.props.background_color = theme.COLOR_PAGE.get_int()
        self.props.orientation = hippo.ORIENTATION_VERTICAL

        tab_box = hippo.CanvasBox(
            background_color=theme.COLOR_TAB_SEPERATOR.get_int(),
            spacing=2,
            orientation=hippo.ORIENTATION_HORIZONTAL)
        self.__tab_1 = hippo.CanvasText(
            text=_('Edit Jokebook Cover'),
            padding=theme.PADDING_TAB,
            xalign=hippo.ALIGNMENT_START,
            background_color=theme.COLOR_TAB_ACTIVE.get_int(),
            color=theme.COLOR_TAB_TEXT.get_int())
        self.__tab_1.page = EditInfo
        self.__tab_1.connect('button-press-event', self.__do_clicked_tab)
        tab_box.append(self.__tab_1, hippo.PACK_EXPAND)
        self.__tab_2 = hippo.CanvasText(
            text=_('Edit My Jokes'),
            padding=theme.PADDING_TAB,
            xalign=hippo.ALIGNMENT_START,
            background_color=theme.COLOR_TAB_INACTIVE.get_int(),
            color=theme.COLOR_TAB_TEXT.get_int())
        self.__tab_2.page = EditJokes
        self.__tab_2.connect('button-press-event', self.__do_clicked_tab)
        tab_box.append(self.__tab_2, hippo.PACK_EXPAND)
        self.__tab_3 = hippo.CanvasText(
            text=_('Review Submitted Jokes'),
            padding=theme.PADDING_TAB,
            xalign=hippo.ALIGNMENT_START,
            background_color=theme.COLOR_TAB_INACTIVE.get_int(),
            color=theme.COLOR_TAB_TEXT.get_int())
        self.__tab_3.page = EditReview
        self.__tab_3.connect('button-press-event', self.__do_clicked_tab)
        tab_box.append(self.__tab_3, hippo.PACK_EXPAND)
        self.append(tab_box)

        self.__page = hippo.CanvasBox(
            background_color=theme.COLOR_PAGE.get_int(),
            orientation=hippo.ORIENTATION_VERTICAL)
        self.append(self.__page, hippo.PACK_EXPAND)
コード例 #7
0
ファイル: page.py プロジェクト: Daksh/jokemachine
 def make_bodytext(self,
                   text,
                   width=-1,
                   xalign=hippo.ALIGNMENT_START,
                   text_color=theme.COLOR_BLACK):
     return hippo.CanvasText(text=text,
                             size_mode=hippo.CANVAS_SIZE_WRAP_WORD,
                             box_width=width,
                             xalign=xalign,
                             color=text_color.get_int())
コード例 #8
0
    def __init__(self, joke):
        Page.__init__(self,
                      spacing=8,
                      padding=4,
                      border_color=theme.COLOR_RED.get_int(),
                      border=0,
                      orientation=hippo.ORIENTATION_HORIZONTAL)

        # left column
        self.left = hippo.CanvasBox(border=0,
                                    border_color=theme.COLOR_RED.get_int(),
                                    xalign=hippo.ALIGNMENT_START,
                                    orientation=hippo.ORIENTATION_VERTICAL,
                                    padding=theme.BORDER_WIDTH_CONTROL / 2)
        joke_image = self.make_imagebox(joke, 'image', 320, 240, True)
        self.left.append(joke_image)

        # right column
        self.right = hippo.CanvasBox(
            border=0,
            border_color=theme.COLOR_RED.get_int(),
            padding=theme.SPACER_HORIZONTAL,
            orientation=hippo.ORIENTATION_VERTICAL,
            padding_bottom=theme.BORDER_WIDTH_CONTROL / 2,
            spacing=theme.BORDER_WIDTH_CONTROL / 2)
        self.right.append(
            hippo.CanvasText(text=_('Question'),
                             xalign=hippo.ALIGNMENT_START,
                             color=theme.COLOR_DARK_GREEN.get_int()))
        self.right.append(self.make_textbox(joke, 'text'))

        self.right.append(hippo.CanvasBox(box_height=theme.SPACER_VERTICAL))

        self.right.append(
            hippo.CanvasText(text=_('Answer'),
                             xalign=hippo.ALIGNMENT_START,
                             color=theme.COLOR_DARK_GREEN.get_int()))
        self.right.append(self.make_textbox(joke, 'answer'))

        self.append(self.left)
        self.append(self.right, hippo.PACK_EXPAND)
コード例 #9
0
 def __init__(self, cal, event, **kwargs):
     """
     Constructor.
     """
     self.cal = cal
     self.event = event
     self.rulers = []
     CanvasRectangle.__init__(self, **kwargs)
     # Create canvas items.
     self.text = hippo.CanvasText(xalign=hippo.ALIGNMENT_CENTER,
                                  yalign=hippo.ALIGNMENT_CENTER,
                                  size_mode=hippo.CANVAS_SIZE_ELLIPSIZE_END)
     self.append(self.text, hippo.PACK_EXPAND)
コード例 #10
0
    def _add_buddy(self, buddy):
        box = hippo.CanvasBox(
                orientation = hippo.ORIENTATION_HORIZONTAL,
                background_color = BUDDIES_COLOR.get_int(),
                spacing = ENTRY_YPAD
                )

        buddy_face, buddy_widget = self._new_face(buddy, BUDDIES_COLOR)

        char_box = hippo.CanvasBox(
                orientation = hippo.ORIENTATION_VERTICAL,
                )
        nick = hippo.CanvasText(
                text = buddy.props.nick,
                xalign = hippo.ALIGNMENT_START,
                yalign = hippo.ALIGNMENT_START
                )
        lang = hippo.CanvasText(
                text = '',
                xalign = hippo.ALIGNMENT_START,
                yalign = hippo.ALIGNMENT_START
                )
        char_box.append(nick)
        char_box.append(lang)

        box.append(buddy_widget)
        box.append(char_box, hippo.PACK_EXPAND)

        self._buddies[buddy] = {
                'box': box,
                'face': buddy_face,
                'lang': lang
                }
        self._buddies_list.append(box)

        if len(self._buddies) == 1:
            self._desk.append(self._buddies_box)
コード例 #11
0
def labelize(text, widget):
    box = hippo.CanvasBox()
    box.props.spacing = style.DEFAULT_SPACING

    text = hippo.CanvasText(text=text)
    text.props.color = style.COLOR_SELECTION_GREY.get_int()
    if gtk.widget_get_default_direction() == gtk.TEXT_DIR_RTL:
        text.props.xalign = hippo.ALIGNMENT_END
    else:
        text.props.xalign = hippo.ALIGNMENT_START
    box.append(text)

    box.append(widget, hippo.PACK_EXPAND)

    return box
コード例 #12
0
    def __init__(self):
        Page.__init__(self)

        # page title
        self.append(
            hippo.CanvasText(text=_('Choose a Jokebook to read:'),
                             xalign=hippo.ALIGNMENT_START,
                             padding=10))

        # list of Jokebooks
        allow_edit = Globals.JokeMachineActivity.is_initiator
        jokebooks_div = CanvasListBox()
        for jokebook in Globals.JokeMachineState.jokebooks:
            jokebooks_div.append(self.__make_jokebook_div(
                jokebook, allow_edit))
        self.append(jokebooks_div, hippo.PACK_EXPAND)
コード例 #13
0
    def update(self):
        date = self.range[0]
        days = (self.range[1] - self.range[0]).days + 1
        rows = int(math.ceil(float(days) / 7.0))
        cols = days
        today = datetime.date(*time.localtime(time.time())[:3])
        if days > 7:
            cols = int(math.ceil(float(days) / float(rows)))

        # Update the timeline.
        self.timeline.set_visible(rows == 1)

        # Show captions for the day.
        if cols == 7 or rows == 1:
            for child in self.day_captions.get_children():
                self.day_captions.remove(child)
            for col in range(cols):
                this_date = self.range[0] + datetime.timedelta(col)
                day_name = self.cal.model.get_day_name(this_date)
                text = hippo.CanvasText(
                    text=day_name,
                    xalign=hippo.ALIGNMENT_CENTER,
                    size_mode=hippo.CANVAS_SIZE_ELLIPSIZE_END)
                self.day_captions.add(text, col, col + 1, 0, 1)
                self.day_captions.set_column_expand(col, True)
            self.day_captions.set_visible(True)
        else:
            self.day_captions.set_visible(False)

        # Update the grid.
        self.grid.set_size(rows, cols)
        for row in range(rows):
            self.grid.set_row_expand(row, True)
        for child in self.grid.get_children():
            child.set_active(self.is_active(date))
            child.set_show_title(rows != 1)
            child.set_show_rulers(rows == 1)
            child.set_selected(date == self.selected)
            child.set_highlighted(date == today)
            child.set_date(date)
            child.update()
            date = util.next_day(date)

        if rows == 1:
            self.update_one_row()
        else:
            self.update_multi_row()
コード例 #14
0
ファイル: expandedentry.py プロジェクト: nemesiscodex/jarabe
    def _create_preview(self):
        width = style.zoom(320)
        height = style.zoom(240)
        box = hippo.CanvasBox()

        if len(self._metadata.get('preview', '')) > 4:
            if self._metadata['preview'][1:4] == 'PNG':
                preview_data = self._metadata['preview']
            else:
                # TODO: We are close to be able to drop this.
                import base64
                preview_data = base64.b64decode(self._metadata['preview'])

            png_file = StringIO.StringIO(preview_data)
            try:
                surface = cairo.ImageSurface.create_from_png(png_file)
                has_preview = True
            except Exception:
                logging.exception('Error while loading the preview')
                has_preview = False
        else:
            has_preview = False

        if has_preview:
            preview_box = hippo.CanvasImage(
                image=surface,
                border=style.LINE_WIDTH,
                border_color=style.COLOR_BUTTON_GREY.get_int(),
                xalign=hippo.ALIGNMENT_CENTER,
                yalign=hippo.ALIGNMENT_CENTER,
                scale_width=width,
                scale_height=height)
        else:
            preview_box = hippo.CanvasText(
                text=_('No preview'),
                font_desc=style.FONT_NORMAL.get_pango_desc(),
                xalign=hippo.ALIGNMENT_CENTER,
                yalign=hippo.ALIGNMENT_CENTER,
                border=style.LINE_WIDTH,
                border_color=style.COLOR_BUTTON_GREY.get_int(),
                color=style.COLOR_BUTTON_GREY.get_int(),
                box_width=width,
                box_height=height)
        preview_box.connect_after('button-release-event',
                                  self._preview_box_button_release_event_cb)
        box.append(preview_box)
        return box
コード例 #15
0
ファイル: page.py プロジェクト: Daksh/jokemachine
    def make_audiobox(self, obj, property, width):

        image_file = os.path.join(Globals.pwd, theme.AUDIO_CHOOSE)
        if not os.path.exists(image_file):
            logging.debug('cannot find %s' % image_file)
            return hippo.CanvasBox()

        surface = cairo.ImageSurface.create_from_png(image_file)
        preview_sound = hippo.CanvasImage(image=surface,
                                          xalign=hippo.ALIGNMENT_START,
                                          yalign=hippo.ALIGNMENT_CENTER)
        preview_sound.connect('button-press-event',
                              self.__do_clicked_preview_sound, obj, property)

        if hasattr(obj, property) and getattr(obj, property) != None:
            sound_name = getattr(obj, property)
        else:
            sound_name = _('Click to choose a sound')

        choose_sound = hippo.CanvasText(text=sound_name,
                                        xalign=hippo.ALIGNMENT_START)
        choose_sound.connect('button-press-event',
                             self.__do_clicked_choose_sound, obj, property)

        sound_box = RoundBox()
        sound_box.props.padding = 2
        sound_box.props.spacing = 10
        sound_box.props.box_width = width
        sound_box.props.border = theme.BORDER_WIDTH_CONTROL / 2
        sound_box.props.border_color = theme.COLOR_DARK_GREEN.get_int()
        sound_box.props.background_color = theme.COLOR_WHITE.get_int()
        sound_box.props.orientation = hippo.ORIENTATION_HORIZONTAL
        sound_box.props.xalign = hippo.ALIGNMENT_START
        sound_box.set_clickable(True)
        sound_box.append(preview_sound)
        sound_box.append(choose_sound)

        deglitch_box = hippo.CanvasBox(xalign=hippo.ALIGNMENT_START,
                                       box_width=width)
        deglitch_box.append(sound_box)
        return deglitch_box
コード例 #16
0
    def __init__(self, cal, **kwargs):
        """
        Constructor.
        """
        hippo.CanvasBox.__init__(self, **kwargs)

        self.cal = cal
        self.text = {}

        # Create canvas items.
        for n in range(0, 24):
            if n == -1:
                caption = ' '
            else:
                caption = '%d' % n
            box = hippo.CanvasGradient(padding_right=5)
            text = hippo.CanvasText(text=caption,
                                    xalign=hippo.ALIGNMENT_END,
                                    yalign=hippo.ALIGNMENT_START)
            box.append(text, hippo.PACK_EXPAND)
            self.append(box, hippo.PACK_EXPAND)
コード例 #17
0
    def __make_jokebook_div(self, jokebook, edit=False):
        list_row = self.make_listrow()

        # thumbnail
        thumbnail = self.make_imagebox(jokebook, 'image', 80, 60, False, 10)
        list_row.append(self.__make_column_div(100, thumbnail))

        # title
        title = hippo.CanvasText(text=(jokebook.title or '') + "\n" +
                                 (jokebook.owner or ''),
                                 padding_left=20,
                                 xalign=hippo.ALIGNMENT_START,
                                 color=theme.COLOR_LINK.get_int())
        title.set_clickable(True)
        title.connect('button-press-event', self.__do_clicked_title, jokebook)
        list_row.append(self.__make_column_div(-1, title), hippo.PACK_EXPAND)

        list_row.append(
            hippo.CanvasBox(box_width=theme.SPACER_HORIZONTAL))  # TODO spacer

        # buttons
        if edit:
            button = gtk.Button(_('Edit'))
            button.connect('clicked', self.__do_clicked_edit, jokebook)
            list_row.append(
                self.__make_column_div(
                    100,
                    hippo.CanvasWidget(widget=theme.theme_widget(button))))
            list_row.append(hippo.CanvasBox(
                box_width=theme.SPACER_HORIZONTAL))  # TODO spacer
            button = gtk.Button(_('Delete'))
            button.connect('clicked', self.__do_clicked_delete, jokebook)
            list_row.append(
                self.__make_column_div(
                    100,
                    hippo.CanvasWidget(widget=theme.theme_widget(button))))
            list_row.append(hippo.CanvasBox(
                box_width=theme.SPACER_HORIZONTAL))  # TODO spacer

        return list_row
コード例 #18
0
ファイル: expandedentry.py プロジェクト: nemesiscodex/jarabe
    def _create_buddy_list(self):

        vbox = hippo.CanvasBox()
        vbox.props.spacing = style.DEFAULT_SPACING

        text = hippo.CanvasText(text=_('Participants:'),
                                font_desc=style.FONT_NORMAL.get_pango_desc())
        text.props.color = style.COLOR_BUTTON_GREY.get_int()

        if gtk.widget_get_default_direction() == gtk.TEXT_DIR_RTL:
            text.props.xalign = hippo.ALIGNMENT_END
        else:
            text.props.xalign = hippo.ALIGNMENT_START

        vbox.append(text)

        if self._metadata.get('buddies'):
            buddies = simplejson.loads(self._metadata['buddies']).values()
            vbox.append(BuddyList(buddies))
            return vbox
        else:
            return vbox
コード例 #19
0
    def set_column_count(self, count):
        if count == self.columns:
            return
        self.columns = count

        self.table.set_column_count(count)

        # Hide all overflow indicators.
        for child in self.get_children():
            if child != self.table:
                self.remove(child)

        for col in range(count):
            font = self.cal.font.copy()
            font.set_style(pango.STYLE_ITALIC)
            text = hippo.CanvasText(text=' ',
                                    font=font.to_string(),
                                    xalign=hippo.ALIGNMENT_CENTER)
            self.append(text, hippo.PACK_FIXED)
            self.overflow_indic.append(text)
            text.set_visible(False)
            self.allocs[text] = (0, 0, 0, 0)
コード例 #20
0
    def _create_tags(self):
        vbox = hippo.CanvasBox()
        vbox.props.spacing = style.DEFAULT_SPACING

        text = hippo.CanvasText(text=_('Tags:'),
                                font_desc=style.FONT_NORMAL.get_pango_desc())
        text.props.color = style.COLOR_BUTTON_GREY.get_int()

        if gtk.widget_get_default_direction() == gtk.TEXT_DIR_RTL:
            text.props.xalign = hippo.ALIGNMENT_END
        else:
            text.props.xalign = hippo.ALIGNMENT_START

        vbox.append(text)

        tags = self._activity.metadata.get('tags', '')
        text_view = CanvasTextView(tags, box_height=style.GRID_CELL_SIZE * 2)
        vbox.append(text_view, hippo.PACK_EXPAND)

        text_view.text_view_widget.props.accepts_tab = False

        return vbox, text_view
コード例 #21
0
def idle_cb():
    global countdown

    for i in range(0, 100):
        entry = hippo.CanvasBox(border=2,
                                border_color=0x000000ff,
                                orientation=hippo.ORIENTATION_HORIZONTAL,
                                padding=10,
                                spacing=10)

        for j in range(0, 3):
            icon = CanvasIcon(icon_name='go-left')
            entry.append(icon)

        for j in range(0, 2):
            text = hippo.CanvasText(text='Text %s %s' % (countdown, j))
            entry.append(text)

        box.append(entry)

        countdown -= 1

    return countdown > 0
コード例 #22
0
ファイル: expandedentry.py プロジェクト: nemesiscodex/jarabe
    def _create_description(self):
        vbox = hippo.CanvasBox()
        vbox.props.spacing = style.DEFAULT_SPACING

        text = hippo.CanvasText(text=_('Description:'),
                                font_desc=style.FONT_NORMAL.get_pango_desc())
        text.props.color = style.COLOR_BUTTON_GREY.get_int()

        if gtk.widget_get_default_direction() == gtk.TEXT_DIR_RTL:
            text.props.xalign = hippo.ALIGNMENT_END
        else:
            text.props.xalign = hippo.ALIGNMENT_START

        vbox.append(text)

        text_view = CanvasTextView('', box_height=style.GRID_CELL_SIZE * 2)
        vbox.append(text_view, hippo.PACK_EXPAND)

        text_view.text_view_widget.props.accepts_tab = False
        text_view.text_view_widget.connect(
            'focus-out-event', self._description_focus_out_event_cb)

        return vbox, text_view
コード例 #23
0
ファイル: CanvasDay.py プロジェクト: sallecta/openerp-client
    def __init__(self, cal, **kwargs):
        """
        Constructor.
        """
        hippo.CanvasBox.__init__(self, **kwargs)

        self.cal = cal
        self.date = kwargs.get('date')
        self.active = True
        self.selected = False
        self.highlighted = False
        self.show_rulers = False

        # Create canvas items.
        self.box = hippo.CanvasGradient(padding=2, padding_right=5)
        self.text = hippo.CanvasText(xalign=hippo.ALIGNMENT_END,
                                     size_mode=hippo.CANVAS_SIZE_ELLIPSIZE_END)
        self.body = hippo.CanvasGradient()

        self.box.append(self.text, hippo.PACK_EXPAND)
        self.append(self.box)
        self.append(self.body, hippo.PACK_EXPAND)
        self.box.set_visible(True)
コード例 #24
0
 def __do_clicked_lessonplans(self, button):
     if button.active:
         button.set_label(_('Lesson Plans'))
         button.active = False
         Globals.JokeMachineActivity.set_page(pages.choose.Choose)
     else:
         button.set_label(_('Close Lessons'))
         button.active = True
         widget_box = hippo.CanvasBox(
             border=0, border_color=theme.COLOR_BLUE.get_int())
         widget_box.append(
             hippo.CanvasText(text=_('Lesson Plans:'),
                              xalign=hippo.ALIGNMENT_START,
                              padding=10))
         lesson_plans = LessonPlanWidget(Globals.pwd)
         widget_box.append(
             hippo.CanvasWidget(
                 widget=lesson_plans,
                 border=0,
                 border_color=theme.COLOR_DARK_GREEN.get_int()),
             hippo.PACK_EXPAND)
         self.page = widget_box
         self.__button_read.set_visible(False)
         self.__button_make.set_visible(False)
コード例 #25
0
ファイル: detailview.py プロジェクト: nemesiscodex/jarabe
    def __init__(self):
        hippo.CanvasBox.__init__(
            self,
            orientation=hippo.ORIENTATION_HORIZONTAL,
            border=style.LINE_WIDTH,
            background_color=style.COLOR_PANEL_GREY.get_int(),
            border_color=style.COLOR_SELECTION_GREY.get_int(),
            padding=style.DEFAULT_PADDING,
            padding_left=style.DEFAULT_SPACING,
            spacing=style.DEFAULT_SPACING)

        icon = CanvasIcon(icon_name='go-previous',
                          size=style.SMALL_ICON_SIZE,
                          fill_color=style.COLOR_TOOLBAR_GREY.get_svg())
        self.append(icon)

        label = hippo.CanvasText(text=_('Back'),
                                 font_desc=style.FONT_NORMAL.get_pango_desc())
        self.append(label)

        if gtk.widget_get_default_direction() == gtk.TEXT_DIR_RTL:
            self.reverse()

        self.connect('motion-notify-event', self.__motion_notify_event_cb)
コード例 #26
0
    def __init__(self):
        hippo.Canvas.__init__(self)

        global this
        this = self

        self.metadata = None

        workspace = hippo.CanvasBox(
            background_color=style.COLOR_WHITE.get_int(),
            padding=style.DEFAULT_SPACING,
            spacing=style.DEFAULT_SPACING)
        self.set_root(workspace)

        # title

        upper_box = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL,
                                    spacing=style.DEFAULT_SPACING)
        workspace.append(upper_box)

        self.icon = port.widgets.Image()
        self.icon.connect('button-release-event', self._activate_cb)
        upper_box.append(self.icon)

        self.title = port.widgets.Entry()
        upper_box.append(self.title, hippo.PACK_EXPAND)

        self.mtime = hippo.CanvasText()
        upper_box.append(self.mtime)

        bottom_box = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL,
                                     spacing=style.DEFAULT_SPACING)
        workspace.append(bottom_box, hippo.PACK_EXPAND)

        # preview

        self.preview = port.widgets.Image()
        self.preview.connect('button-release-event', self._activate_cb)
        preview_box = hippo.CanvasBox()
        preview_box.append(self.preview)
        bottom_box.append(preview_box)

        # description

        right_box = hippo.CanvasBox(spacing=style.DEFAULT_SPACING)
        bottom_box.append(right_box, hippo.PACK_EXPAND)

        self.description = port.widgets.TextView(
            box_height=gtk.gdk.screen_height() / 4)
        right_box.append(
            port.widgets.labelize(_('Description:'), self.description))

        # tags

        tags_box = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL,
                                   spacing=style.DEFAULT_SPACING)
        right_box.append(tags_box, hippo.PACK_EXPAND)

        self.traits = TraitsView()
        self.traits_box = port.widgets.labelize(_('Traits:'), self.traits)
        tags_box.append(self.traits_box, hippo.PACK_EXPAND)

        self.tags = TagsView()
        tags_box.append(port.widgets.labelize(_('Tags:'), self.tags),
                        hippo.PACK_EXPAND)

        # buddies

        self.buddies = hippo.CanvasBox(
            xalign=hippo.ALIGNMENT_START,
            orientation=hippo.ORIENTATION_HORIZONTAL)
        right_box.append(
            port.widgets.labelize(_('Participants:'), self.buddies))
コード例 #27
0
ファイル: expandedentry.py プロジェクト: nemesiscodex/jarabe
 def _create_date(self):
     date = hippo.CanvasText(xalign=hippo.ALIGNMENT_START,
                             font_desc=style.FONT_NORMAL.get_pango_desc())
     return date
コード例 #28
0
    def add_text(self, buddy, text, status_message=False):
        """Display text on screen, with name and colors.

        buddy -- buddy object or dict {nick: string, color: string}
                 (The dict is for loading the chat log from the journal,
                 when we don't have the buddy object any more.)
        text -- string, what the buddy said
        status_message -- boolean
            False: show what buddy said
            True: show what buddy did

        hippo layout:
        .------------- rb ---------------.
        | +name_vbox+ +----msg_vbox----+ |
        | |         | |                | |
        | | nick:   | | +--msg_hbox--+ | |
        | |         | | | text       | | |
        | +---------+ | +------------+ | |
        |             |                | |
        |             | +--msg_hbox--+ | |
        |             | | text | url | | |
        |             | +------------+ | |
        |             +----------------+ |
        `--------------------------------'
        """
        if not buddy:
            buddy = self.owner

        if type(buddy) is dict:
            # dict required for loading chat log from journal
            nick = buddy['nick']
            color = buddy['color']
        else:
            nick = buddy.props.nick
            color = buddy.props.color
        try:
            color_stroke_html, color_fill_html = color.split(',')
        except ValueError:
            color_stroke_html, color_fill_html = ('#000000', '#888888')

        # Select text color based on fill color:
        color_fill_rgba = Color(color_fill_html).get_rgba()
        color_fill_gray = (color_fill_rgba[0] + color_fill_rgba[1] +
                           color_fill_rgba[2]) / 3
        color_stroke = Color(color_stroke_html).get_int()
        color_fill = Color(color_fill_html).get_int()

        if color_fill_gray < 0.5:
            text_color = COLOR_WHITE.get_int()
        else:
            text_color = COLOR_BLACK.get_int()

        self._add_log(nick, color, text, status_message)

        # Check for Right-To-Left languages:
        if pango.find_base_dir(nick, -1) == pango.DIRECTION_RTL:
            lang_rtl = True
        else:
            lang_rtl = False

        # Check if new message box or add text to previous:
        new_msg = True
        if self._last_msg_sender:
            if not status_message:
                if buddy == self._last_msg_sender:
                    # Add text to previous message
                    new_msg = False

        if not new_msg:
            rb = self._last_msg
            msg_vbox = rb.get_children()[1]
            msg_hbox = hippo.CanvasBox(
                orientation=hippo.ORIENTATION_HORIZONTAL)
            msg_vbox.append(msg_hbox)
        else:
            rb = CanvasRoundBox(background_color=color_fill,
                                border_color=color_stroke,
                                padding=4)
            rb.props.border_color = color_stroke  # Bug #3742
            self._last_msg = rb
            self._last_msg_sender = buddy
            if not status_message:
                name = hippo.CanvasText(text=nick + ':   ', color=text_color)
                name_vbox = hippo.CanvasBox(
                    orientation=hippo.ORIENTATION_VERTICAL)
                name_vbox.append(name)
                rb.append(name_vbox)
            msg_vbox = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL)
            rb.append(msg_vbox)
            msg_hbox = hippo.CanvasBox(
                orientation=hippo.ORIENTATION_HORIZONTAL)
            msg_vbox.append(msg_hbox)

        if status_message:
            self._last_msg_sender = None

        match = URL_REGEXP.search(text)
        while match:
            # there is a URL in the text
            starttext = text[:match.start()]
            if starttext:
                message = hippo.CanvasText(
                    text=starttext,
                    size_mode=hippo.CANVAS_SIZE_WRAP_WORD,
                    color=text_color,
                    xalign=hippo.ALIGNMENT_START)
                msg_hbox.append(message)
            url = text[match.start():match.end()]

            message = CanvasLink(text=url, color=text_color)
            attrs = pango.AttrList()
            attrs.insert(pango.AttrUnderline(pango.UNDERLINE_SINGLE, 0, 32767))
            message.set_property("attributes", attrs)
            message.connect('activated', self._link_activated_cb)

            # call interior magic which should mean just:
            # CanvasInvoker().parent = message
            CanvasInvoker(message)

            msg_hbox.append(message)
            text = text[match.end():]
            match = URL_REGEXP.search(text)

        if text:
            message = hippo.CanvasText(text=text,
                                       size_mode=hippo.CANVAS_SIZE_WRAP_WORD,
                                       color=text_color,
                                       xalign=hippo.ALIGNMENT_START)
            msg_hbox.append(message)

        # Order of boxes for RTL languages:
        if lang_rtl:
            msg_hbox.reverse()
            if new_msg:
                rb.reverse()

        if new_msg:
            box = hippo.CanvasBox(padding=2)
            box.append(rb)
            self._conversation.append(box)
コード例 #29
0
    def add_text(self, buddy, text, status_message=False):
        """Display text on screen, with name and colors.

        buddy -- buddy object
        text -- string, what the buddy said
        status_message -- boolean
            False: show what buddy said
            True: show what buddy did

        hippo layout:
        .------------- rb ---------------.
        | +name_vbox+ +----msg_vbox----+ |
        | |         | |                | |
        | | nick:   | | +--msg_hbox--+ | |
        | |         | | | text       | | |
        | +---------+ | +------------+ | |
        |             |                | |
        |             | +--msg_hbox--+ | |
        |             | | text       | | |
        |             | +------------+ | |
        |             +----------------+ |
        `--------------------------------'
        """
        if buddy:
            nick = buddy.props.nick
            color = buddy.props.color
            try:
                color_stroke_html, color_fill_html = color.split(',')
            except ValueError:
                color_stroke_html, color_fill_html = ('#000000', '#888888')
            # Select text color based on fill color:
            color_fill_rgba = Color(color_fill_html).get_rgba()
            color_fill_gray = (color_fill_rgba[0] + color_fill_rgba[1] +
                               color_fill_rgba[2]) / 3
            color_stroke = Color(color_stroke_html).get_int()
            color_fill = Color(color_fill_html).get_int()
            if color_fill_gray < 0.5:
                text_color = COLOR_WHITE.get_int()
            else:
                text_color = COLOR_BLACK.get_int()
        else:
            nick = '???'  # XXX: should be '' but leave for debugging
            color_stroke = COLOR_BLACK.get_int()
            color_fill = COLOR_WHITE.get_int()
            text_color = COLOR_BLACK.get_int()
            color = '#000000,#FFFFFF'

        # Check for Right-To-Left languages:
        if pango.find_base_dir(nick, -1) == pango.DIRECTION_RTL:
            lang_rtl = True
        else:
            lang_rtl = False

        # Check if new message box or add text to previous:
        new_msg = True
        if self._last_msg_sender:
            if not status_message:
                if buddy == self._last_msg_sender:
                    # Add text to previous message
                    new_msg = False

        if not new_msg:
            rb = self._last_msg
            msg_vbox = rb.get_children()[1]
            msg_hbox = hippo.CanvasBox(
                orientation=hippo.ORIENTATION_HORIZONTAL)
            msg_vbox.append(msg_hbox)
        else:
            rb = CanvasRoundBox(background_color=color_fill,
                                border_color=color_stroke,
                                padding=4)
            rb.props.border_color = color_stroke  # Bug #3742
            self._last_msg = rb
            self._last_msg_sender = buddy
            if not status_message:
                name = hippo.CanvasText(text=nick + ':   ',
                                        color=text_color,
                                        font_desc=FONT_BOLD.get_pango_desc())
                name_vbox = hippo.CanvasBox(
                    orientation=hippo.ORIENTATION_VERTICAL)
                name_vbox.append(name)
                rb.append(name_vbox)
            msg_vbox = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL)
            rb.append(msg_vbox)
            msg_hbox = hippo.CanvasBox(
                orientation=hippo.ORIENTATION_HORIZONTAL)
            msg_vbox.append(msg_hbox)

        if status_message:
            self._last_msg_sender = None

        if text:
            message = hippo.CanvasText(text=text,
                                       size_mode=hippo.CANVAS_SIZE_WRAP_WORD,
                                       color=text_color,
                                       font_desc=FONT_NORMAL.get_pango_desc(),
                                       xalign=hippo.ALIGNMENT_START)
            msg_hbox.append(message)

        # Order of boxes for RTL languages:
        if lang_rtl:
            msg_hbox.reverse()
            if new_msg:
                rb.reverse()

        if new_msg:
            box = hippo.CanvasBox(padding=2)
            box.append(rb)
            self.conversation.append(box)
コード例 #30
0
    def __init__(self, flask, verbose_messages):
        hippo.CanvasBox.__init__(self)
        self.props.spacing = style.DEFAULT_SPACING

        flask.connect('verbose', self.__verbose_cb)
        flask.connect('progress', self.__progress_cb)
        flask.connect('key_confirm', self.__key_confirm_cb)

        self._page = None
        self._key = None

        # verbose

        self._verbose = gtk.TextView()
        self._verbose.props.wrap_mode = gtk.WRAP_WORD
        self._verbose.props.editable = False
        self._verbose.props.buffer.props.text = verbose_messages

        scrolled = gtk.ScrolledWindow()
        scrolled.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
        scrolled.add(self._verbose)
        scrolled.show_all()

        expander = gtk.Expander(_('Details'))
        expander.add(scrolled)
        self.append(hippo.CanvasWidget(widget=expander), hippo.PACK_EXPAND)

        # progress page

        self._progress_page = hippo.CanvasBox(
                spacing=style.DEFAULT_SPACING,
                orientation=hippo.ORIENTATION_VERTICAL)

        self._progress = gtk.ProgressBar()
        self._progress.set_size_request(-1, style.SMALL_ICON_SIZE)
        self._progress.modify_bg(gtk.STATE_INSENSITIVE,
                style.COLOR_WHITE.get_gdk_color())
        self._progress_page.append(hippo.CanvasWidget(widget=self._progress))

        cancel_button = gtk.Button(stock=gtk.STOCK_CANCEL)
        cancel_button.connect('clicked', self.__cancel_button_clicked_cb,
                flask)
        self._progress_page.append(hippo.CanvasWidget(
                widget=cancel_button,
                xalign=hippo.ALIGNMENT_CENTER))

        # confirm page

        self._confirm_page = hippo.CanvasBox(
                spacing=style.DEFAULT_SPACING,
                orientation=hippo.ORIENTATION_HORIZONTAL,
                xalign=hippo.ALIGNMENT_CENTER)

        self._confirm_caption = hippo.CanvasText()
        self._confirm_page.append(self._confirm_caption)

        self._accept_button = gtk.Button(stock=gtk.STOCK_YES)
        self._accept_button.connect('clicked',
                self.__accept_button_clicked_cb, flask)
        self._confirm_page.append(hippo.CanvasWidget(
                widget=self._accept_button))

        deny_button = gtk.Button(stock=gtk.STOCK_NO)
        deny_button.connect('clicked', self.__deny_button_clicked_cb, flask)
        self._confirm_page.append(hippo.CanvasWidget(widget=deny_button))

        # complete page

        self._complete_page = hippo.CanvasBox(
                spacing=style.DEFAULT_SPACING,
                orientation=hippo.ORIENTATION_VERTICAL)

        stop_button = gtk.Button(stock=gtk.STOCK_STOP)
        stop_button.connect('clicked', lambda button: self.emit('stop'))
        self._complete_page.append(hippo.CanvasWidget(
                widget=stop_button,
                xalign=hippo.ALIGNMENT_CENTER))

        # error page

        self._error_page = hippo.CanvasBox(
                spacing=style.DEFAULT_SPACING,
                orientation=hippo.ORIENTATION_VERTICAL)

        stop_button = gtk.Button(stock=gtk.STOCK_DIALOG_ERROR)
        stop_button.connect('clicked', lambda button: self.emit('stop'))
        self._error_page.append(hippo.CanvasWidget(
                widget=stop_button,
                xalign=hippo.ALIGNMENT_CENTER))