Beispiel #1
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)))
    def __init__(self, flask, bundle_id, activity_id, verbose_messages):
        gtk.Window.__init__(self)

        self.props.type_hint = gtk.gdk.WINDOW_TYPE_HINT_NORMAL
        self.props.decorated = False

        canvas = hippo.Canvas()
        canvas.modify_bg(gtk.STATE_NORMAL, style.COLOR_WHITE.get_gdk_color())
        self.add(canvas)
        canvas.show()

        box = hippo.CanvasBox(
                padding=style.GRID_CELL_SIZE * 2,
                spacing=style.GRID_CELL_SIZE)
        canvas.set_root(box)

        header = hippo.CanvasBox()
        box.append(header, hippo.PACK_EXPAND)

        self._footer = Probe(flask, verbose_messages)
        self._footer.connect('stop',
                lambda sender: self.emit('stop'))
        box.append(self._footer, hippo.PACK_EXPAND)

        flask.connect('finished',
                lambda sender: self._footer.switch_to_complete())
        flask.connect('cancelled', self.__cancelled_cb)

        self.connect('realize', self.__realize_cb, bundle_id, activity_id)
Beispiel #3
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)
Beispiel #4
0
    def __init__(self, cal, **kwargs):
        """
        Constructor.
        """
        CanvasTable.__init__(self, **kwargs)

        self.cal = cal
        self.range = kwargs.get('range')
        self.active_range = self.range
        self.selected = None

        # Create canvas items.
        self.scroll = hippo.CanvasScrollbars()
        self.hbox_top = hippo.CanvasBox(
            orientation=hippo.ORIENTATION_HORIZONTAL)
        self.vbox_top = hippo.CanvasBox()
        self.day_captions = CanvasTable()
        self.timeline = CanvasTimeline(self.cal)
        self.padding_left = hippo.CanvasBox()
        self.padding_right = hippo.CanvasBox()
        self.allday_view = CanvasHEventView(self.cal,
                                            yalign=hippo.ALIGNMENT_FILL)
        self.grid = CanvasGrid(self._new_cell)
        self.gridbox = hippo.CanvasBox(
            orientation=hippo.ORIENTATION_HORIZONTAL)
        self.vevent_views = {}
        self.hevent_views = {}
        self.allocs = {}
        self.allocs[self.padding_left] = (0, 0, 0, 0)
        self.allocs[self.padding_right] = (0, 0, 0, 0)

        self.vbox_top.append(self.day_captions)
        self.vbox_top.append(self.allday_view)
        self.day_captions.set_homogeneus_columns(True)

        self.hbox_top.append(self.padding_left)
        self.hbox_top.append(self.vbox_top, hippo.PACK_EXPAND)
        self.hbox_top.append(self.padding_right)

        self.gridbox.append(self.timeline)
        self.gridbox.append(self.grid, hippo.PACK_EXPAND)
        self.scroll.set_root(self.gridbox)

        self.add(self.hbox_top, 0, 1, 0, 1)
        self.add(self.scroll, 0, 1, 1, 2)
        self.set_row_expand(1, True)
        self.set_column_expand(0, True)
        self.allday_view.show_normal = False
        self.allday_view.connect('event-clicked', self.on_view_event_clicked)
        self.grid.connect('paint', self.on_grid_paint)
        self.grid.set_homogeneus_columns(True)
    def _create_body(self):
        body = hippo.CanvasBox()
        body.props.orientation = hippo.ORIENTATION_VERTICAL
        body.props.background_color = style.COLOR_WHITE.get_int()
        body.props.padding_top = style.DEFAULT_SPACING * 3

        header = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL,
                                 padding=style.DEFAULT_PADDING,
                                 padding_right=style.GRID_CELL_SIZE,
                                 spacing=style.DEFAULT_SPACING)
        body.append(header)

        descriptions = hippo.CanvasBox(
            orientation=hippo.ORIENTATION_HORIZONTAL,
            spacing=style.DEFAULT_SPACING * 3,
            padding_left=style.GRID_CELL_SIZE,
            padding_right=style.GRID_CELL_SIZE,
            padding_top=style.DEFAULT_SPACING * 3)

        body.append(descriptions, hippo.PACK_EXPAND)

        first_column = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL,
                                       spacing=style.DEFAULT_SPACING)
        descriptions.append(first_column)

        second_column = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL,
                                        spacing=style.DEFAULT_SPACING)
        descriptions.append(second_column, hippo.PACK_EXPAND)

        self._favorite_icon = self._create_favorite_icon()
        header.append(self._favorite_icon)

        entry_icon = self._create_entry_icon()
        header.append(entry_icon)

        self._title = self._create_title()
        header.append(self._title, hippo.PACK_EXPAND)

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

        description_box, self._description = self._create_description()
        second_column.append(description_box)

        tags_box, self._tags = self._create_tags()
        second_column.append(tags_box)

        return body
Beispiel #6
0
  def __init__(self):
    self._entries_div = hippo.CanvasBox() 

    # props not set properly in constructor
    self._entries_div.props.background_color=theme.COLOR_PAGE.get_int() 
    self._entries_div.props.spacing=style.DEFAULT_SPACING    
    self._entries_div.props.padding=10
    self._entries_div.props.orientation=hippo.ORIENTATION_VERTICAL    

    # Munge it all up into something we can stick into a gtk.ScrolledWindow
    canvas = hippo.Canvas() 
    canvas.set_root(self._entries_div)
    canvas.show()
    
    hbox = gtk.HBox()
    hbox.set_flags(gtk.HAS_FOCUS | gtk.CAN_FOCUS)
    hbox.pack_start(canvas)
    hbox.show()

    scroller = gtk.ScrolledWindow()
    scroller.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
    viewport = gtk.Viewport()
    viewport.set_shadow_type(gtk.SHADOW_NONE) 
    viewport.add(hbox)
    viewport.show()
    scroller.add(viewport)
    scroller.show()

    hippo.CanvasWidget.__init__(self, 
                                widget=scroller, 
                                padding=0, 
                                spacing=0,
                                border=1,
                                border_color=theme.COLOR_DARK_GREEN.get_int())
Beispiel #7
0
    def __init__(self, jokebook, parent):
        Page.__init__(self)

        self.__parent = parent

        # list of jokes
        jokes_div = CanvasListBox()
        jokes_div.props.border = 0
        for joke in jokebook.jokes:
            button = gtk.Button(' ' + _('Delete') + ' ')
            button.connect('clicked', self.__do_clicked_delete, jokebook, joke)
            list_row = self.make_listrow(JokeEditor(joke), hippo.PACK_EXPAND)
            list_row.append(
                hippo.CanvasWidget(widget=theme.theme_widget(button),
                                   padding=5), hippo.PACK_END)
            jokes_div.append(list_row)
        self.append(jokes_div, hippo.PACK_EXPAND)

        # new joke button
        buttons = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL,
                                  xalign=hippo.ALIGNMENT_START)
        button = gtk.Button(_('Add New Joke'))
        button.connect('clicked', self.do_clicked_add_joke, jokebook)
        buttons.append(hippo.CanvasWidget(widget=theme.theme_widget(button)))
        jokes_div.append(buttons)
Beispiel #8
0
    def __init__(self, jokebook, parent):
        Page.__init__(self,
                      xalign=hippo.ALIGNMENT_CENTER,
                      orientation=hippo.ORIENTATION_VERTICAL,
                      padding=20,
                      spacing=20)

        self.__parent = parent

        # page title
        self.append(
            self.make_field(_('Title of Jokebook:'), 250, jokebook, 'title',
                            300, True))
        #field = self.make_field(_('Sound Effect:'), 250, None, '', 300, False)

        sound_effect = hippo.CanvasBox(
            orientation=hippo.ORIENTATION_HORIZONTAL, spacing=10)
        sound_effect.append(
            self.make_bodytext(_('Sound Effect:'), 250, hippo.ALIGNMENT_START,
                               theme.COLOR_DARK_GREEN))
        sound_effect.append(self.make_audiobox(jokebook, 'sound', 316))
        self.append(sound_effect)

        # cover picture
        cover_image = self.make_imagebox(jokebook, 'image', 320, 240, True)
        self.append(cover_image)
    def make_root(self):
        conversation = hippo.CanvasBox(spacing=0,
                                       background_color=COLOR_WHITE.get_int())
        self.conversation = conversation

        entry = gtk.Entry()
        entry.modify_bg(gtk.STATE_INSENSITIVE, COLOR_WHITE.get_gdk_color())
        entry.modify_base(gtk.STATE_INSENSITIVE, COLOR_WHITE.get_gdk_color())
        entry.set_sensitive(False)
        entry.connect('activate', self.entry_activate_cb)
        self.entry = entry

        hbox = gtk.HBox()
        hbox.add(entry)

        sw = hippo.CanvasScrollbars()
        sw.set_policy(hippo.ORIENTATION_HORIZONTAL, hippo.SCROLLBAR_NEVER)
        sw.set_root(conversation)
        self.scrolled_window = sw

        vadj = self.scrolled_window.props.widget.get_vadjustment()
        vadj.connect('changed', self.rescroll)
        vadj.connect('value-changed', self.scroll_value_changed_cb)

        canvas = hippo.Canvas()
        canvas.set_root(sw)

        box = gtk.VBox(homogeneous=False)
        box.pack_start(hbox, expand=False)
        box.pack_start(canvas)

        return box
Beispiel #10
0
    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)
Beispiel #11
0
 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
Beispiel #12
0
    def __make_header(self):
        ret = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL)

        # logo
        logo = gtk.Image()
        logo.set_from_file(Globals.logo)
        ret.append(hippo.CanvasWidget(widget=logo))

        # lesson plans
        lesson_plans = hippo.CanvasWidget(
            background_color=theme.COLOR_BACKGROUND.get_int(),
            border_top=theme.BORDER_WIDTH,
            border_left=theme.BORDER_WIDTH,
            border_right=theme.BORDER_WIDTH,
            border_color=theme.COLOR_FRAME.get_int(),
            padding_top=12,
            padding_bottom=12,
            padding_left=30,
            padding_right=30,
            yalign=hippo.ALIGNMENT_CENTER,
            orientation=hippo.ORIENTATION_VERTICAL)
        button = gtk.Button(_('Lesson Plans'))
        button.set_size_request(200, -1)
        button.active = False
        button.connect('clicked', self.__do_clicked_lessonplans)
        lesson_plans.props.widget = theme.theme_widget(button)
        ret.append(lesson_plans, hippo.PACK_EXPAND)

        return ret
Beispiel #13
0
    def __init__(self):
        logging.debug('STARTUP: Loading the group view')

        gobject.GObject.__init__(self)

        self._box = hippo.CanvasBox()
        self._box.props.background_color = style.COLOR_WHITE.get_int()
        self.set_root(self._box)

        self._friends = {}

        self._layout = SpreadLayout()
        self._box.set_layout(self._layout)

        client = gconf.client_get_default()
        color = XoColor(client.get_string('/desktop/sugar/user/color'))

        self._owner_icon = CanvasIcon(icon_name='computer-xo', cache=True,
                                      xo_color=color)
        self._owner_icon.props.size = style.LARGE_ICON_SIZE

        self._owner_icon.set_palette(BuddyMenu(get_owner_instance()))
        self._layout.add(self._owner_icon)

        friends_model = friends.get_model()

        for friend in friends_model:
            self.add_friend(friend)

        friends_model.connect('friend-added', self._friend_added_cb)
        friends_model.connect('friend-removed', self._friend_removed_cb)
Beispiel #14
0
    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
Beispiel #15
0
    def __init__(self, jokebook, parent):
        Page.__init__(self)

        self.__parent = parent

        jokes_div = CanvasListBox()
        jokes_div.props.border = 0
        for joke in jokebook.submissions:
            list_row = self.make_listrow(JokeViewer(joke, jokebook.title))
            list_row.props.orientation = hippo.ORIENTATION_VERTICAL

            buttons = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL,
                                      xalign=hippo.ALIGNMENT_END,
                                      spacing=10,
                                      padding=10)

            button = gtk.Button(' ' + _('Reject') + ' ')
            button.connect('clicked', self.__do_clicked_reject, jokebook, joke)
            buttons.append(
                hippo.CanvasWidget(widget=theme.theme_widget(button),
                                   border_color=theme.COLOR_RED.get_int(),
                                   border=0,
                                   xalign=hippo.ALIGNMENT_CENTER))

            button = gtk.Button(' ' + _('Accept') + ' ')
            button.connect('clicked', self.__do_clicked_accept, jokebook, joke)
            buttons.append(
                hippo.CanvasWidget(widget=theme.theme_widget(button),
                                   border_color=theme.COLOR_RED.get_int(),
                                   border=0,
                                   xalign=hippo.ALIGNMENT_CENTER))

            list_row.append(buttons)

            #list_row.props.orientation=hippo.ORIENTATION_VERTICAL
            #status_box = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL,
            #padding_top=4,
            #padding_left=4)
            #status_box.append(hippo.CanvasText(text=_('Status:'),
            #color=theme.COLOR_DARK_GREEN.get_int(),
            #box_width=100,
            #xalign=hippo.ALIGNMENT_START))
            ##button = None
            #button = gtk.RadioButton()
            #button = gtk.RadioButton(button, _('Approved'))
            #button.set_size_request(200, -1)
            #status_box.append(hippo.CanvasWidget(widget = button))
            #button = gtk.RadioButton(button, _('Rejected'))
            #button.set_size_request(200, -1)
            #status_box.append(hippo.CanvasWidget(widget = button))
            #button = gtk.RadioButton(button, _('Not Reviewed'))
            #button.set_size_request(200, -1)
            #button.set_active(True)
            #status_box.append(hippo.CanvasWidget(widget = button))
            #list_row.append(status_box)

            jokes_div.append(list_row)

        self.append(jokes_div)
Beispiel #16
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)
Beispiel #17
0
    def __init__(self):
        hippo.Canvas.__init__(self)

        # Root Frame ###############################################################
        # Holds: Everything
        self.__root = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL)
        self.set_root(self.__root)

        # Application Header #######################################################
        # Holds: App logo, language box, lessons plan box
        self.__header = self.__make_header()
        self.__root.append(self.__header)

        # Page Container ###########################################################
        # Holds: The currently open UI page
        self.__container = hippo.CanvasBox(
            border=theme.BORDER_WIDTH,
            border_color=theme.COLOR_FRAME.get_int(),
            background_color=theme.COLOR_BACKGROUND.get_int(),
            spacing=4,
            padding_top=20,
            padding_left=40,
            padding_right=40,
            padding_bottom=20,
            orientation=hippo.ORIENTATION_VERTICAL)
        self.__root.append(self.__container, hippo.PACK_EXPAND)

        self.__page = hippo.CanvasBox(
            background_color=theme.COLOR_PAGE.get_int(),
            border=4,
            border_color=theme.COLOR_PAGE_BORDER.get_int(),
            spacing=8,
            padding=20,
            orientation=hippo.ORIENTATION_VERTICAL)
        self.__container.append(self.__page, hippo.PACK_EXPAND)

        self.__page_class = None

        # Application Footer #######################################################
        # Holds: Task buttons
        self.__footer = self.__make_footer()
        self.__container.append(self.__footer)
Beispiel #18
0
    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
Beispiel #19
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)
Beispiel #20
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
Beispiel #21
0
    def __init__(self,
                 jokebook,
                 last_joke=0):  # last_joke is for 'back' button
        Page.__init__(self, spacing=10)

        # create a new joke
        joke = Joke()
        joke.id = jokebook.next_joke_id
        logging.info('Created new joke with id: %d' % joke.id)
        joke.joker = Globals.nickname

        # info
        self.append(
            self.make_field(_('Submission For:'), 250, jokebook, 'title', 300,
                            False))
        self.append(
            self.make_field(_('Your Name:'), 250, joke, 'joker', 300, True))

        self.append(
            hippo.CanvasBox(box_height=theme.SPACER_VERTICAL))  # spacer

        # joke editor
        jokebox = JokeEditor(joke)
        nav = hippo.CanvasBox(padding_right=8,
                              padding_top=8,
                              spacing=18,
                              orientation=hippo.ORIENTATION_HORIZONTAL)
        button = gtk.Button(_('Submit'))
        button.connect('clicked', self.__do_clicked_submit, jokebook, joke)
        nav.append(
            hippo.CanvasWidget(widget=theme.theme_widget(button),
                               padding_right=10,
                               padding_top=20))
        button = gtk.Button(_('Back'))
        button.connect('clicked', self.__do_clicked_back, jokebook, last_joke)
        nav.append(
            hippo.CanvasWidget(widget=theme.theme_widget(button),
                               padding_top=20))
        jokebox.right.append(nav)
        self.append(jokebox)
Beispiel #22
0
    def __init__(self, buddies):
        hippo.CanvasBox.__init__(self,
                                 xalign=hippo.ALIGNMENT_START,
                                 orientation=hippo.ORIENTATION_HORIZONTAL)

        for buddy in buddies:
            nick_, color = buddy
            hbox = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL)
            icon = CanvasIcon(icon_name='computer-xo',
                              xo_color=XoColor(color),
                              size=style.STANDARD_ICON_SIZE)
            icon.set_palette(BuddyPalette(buddy))
            hbox.append(icon)
            self.append(hbox)
Beispiel #23
0
    def __textview(self,
                   text,
                   width=300,
                   height=-1,
                   editable=True,
                   multiline=False):
        textview = gtk.TextView()
        textview.get_buffer().set_text(text)

        # control props
        textview.set_wrap_mode(gtk.WRAP_WORD)
        textview.modify_base(gtk.STATE_NORMAL,
                             theme.COLOR_TEXTBOX.get_gdk_color())
        textview.set_editable(editable)
        textview.set_cursor_visible(editable)
        if height == -1:
            context = textview.create_pango_context()
            layout = pango.Layout(context)
            layout.set_text(text[:text.find('\n')])
            (w, h) = layout.get_pixel_size()
            height = h  #+ theme.BORDER_WIDTH_CONTROL / 2 # fudge factor - on the XO-1 hardware all known solutions evaporate
        textview.set_size_request(width, height)
        textview.set_border_window_size(gtk.TEXT_WINDOW_LEFT, 0)
        textview.set_border_window_size(gtk.TEXT_WINDOW_RIGHT, 0)
        textview.set_border_window_size(gtk.TEXT_WINDOW_TOP, 0)
        textview.set_border_window_size(gtk.TEXT_WINDOW_BOTTOM, 0)
        textview.show()

        if editable:  # because rounded corners are well... pretty
            border_box = RoundBox()
            border_box.control = textview
            border_box.props.padding = 2
            border_box.props.spacing = 0
            border_box.props.border = theme.BORDER_WIDTH_CONTROL / 2
            border_box.props.border_color = theme.COLOR_DARK_GREEN.get_int()
            border_box.props.background_color = theme.COLOR_TEXTBOX.get_int()
            border_box.props.xalign = hippo.ALIGNMENT_START
            #border_box.props.box_width = width
            #border_box.props.box_height = height

            # TODO - File bug: RoundBox seriously messes with TextView's
            #                  (and other things) width !!
            deglitch_box = hippo.CanvasBox()
            deglitch_box.append(hippo.CanvasWidget(widget=textview))
            border_box.append(deglitch_box)
            return border_box

        no_edit_box = hippo.CanvasWidget(widget=textview)
        no_edit_box.control = textview
        return no_edit_box
Beispiel #24
0
    def __init__(self, **kwargs):
        gobject.GObject.__init__(self, **kwargs)

        separator = hippo.Canvas()
        box = hippo.CanvasBox(border_color=0xffffffff,
                              background_color=0xffffffff,
                              box_height=1,
                              border_bottom=1)
        separator.set_root(box)
        self.pack_start(separator, False)

        hbox = gtk.HBox()
        self.pack_start(hbox)

        scroll_left = _TrayScrollButton('go-left', _PREVIOUS_PAGE)
        scroll_left_event = gtk.EventBox()
        scroll_left_event.add(scroll_left)
        scroll_left_event.set_size_request(55, -1)
        hbox.pack_start(scroll_left_event, False)

        self._viewport = _TrayViewport(gtk.ORIENTATION_HORIZONTAL)
        hbox.pack_start(self._viewport)
        self._viewport.show()

        scroll_right = _TrayScrollButton('go-right', _NEXT_PAGE)
        scroll_right_event = gtk.EventBox()
        scroll_right_event.add(scroll_right)
        scroll_right_event.set_size_request(55, -1)
        hbox.pack_start(scroll_right_event, False)

        scroll_left.set_focus_on_click(False)
        scroll_left_event.modify_bg(
            gtk.STATE_NORMAL,
            sugar.graphics.style.COLOR_TOOLBAR_GREY.get_gdk_color())
        scroll_left.modify_bg(
            gtk.STATE_ACTIVE,
            sugar.graphics.style.COLOR_BUTTON_GREY.get_gdk_color())

        scroll_right.set_focus_on_click(False)
        scroll_right_event.modify_bg(
            gtk.STATE_NORMAL,
            sugar.graphics.style.COLOR_TOOLBAR_GREY.get_gdk_color())
        scroll_right.modify_bg(
            gtk.STATE_ACTIVE,
            sugar.graphics.style.COLOR_BUTTON_GREY.get_gdk_color())

        scroll_left.viewport = self._viewport
        scroll_right.viewport = self._viewport

        self.connect_after("size-allocate", self._sizeAllocateCb)
Beispiel #25
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)
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
Beispiel #27
0
    def __init__(self):
        logging.debug('STARTUP: Loading the mesh view')

        gobject.GObject.__init__(self)

        self.wireless_networks = {}
        self._adhoc_manager = None
        self._adhoc_networks = []

        self._model = neighborhood.get_model()
        self._buddies = {}
        self._activities = {}
        self._mesh = []
        self._buddy_to_activity = {}
        self._suspended = True
        self._query = ''
        self._owner_icon = None

        self._toolbar = MeshToolbar()
        self._toolbar.connect('query-changed', self._toolbar_query_changed_cb)
        self.pack_start(self._toolbar, expand=False)
        self._toolbar.show()

        canvas = hippo.Canvas()
        self.add(canvas)
        canvas.show()

        self._layout_box = hippo.CanvasBox( \
                background_color=style.COLOR_WHITE.get_int())
        canvas.set_root(self._layout_box)

        self._layout = SpreadLayout()
        self._layout_box.set_layout(self._layout)

        for buddy_model in self._model.get_buddies():
            self._add_buddy(buddy_model)

        self._model.connect('buddy-added', self._buddy_added_cb)
        self._model.connect('buddy-removed', self._buddy_removed_cb)

        for activity_model in self._model.get_activities():
            self._add_activity(activity_model)

        self._model.connect('activity-added', self._activity_added_cb)
        self._model.connect('activity-removed', self._activity_removed_cb)

        netmgr_observer = NetworkManagerObserver(self)
        netmgr_observer.listen()
Beispiel #28
0
    def __init__(self):
        gobject.GObject.__init__(self)

        self._box = hippo.CanvasBox()
        self._box.props.background_color = style.COLOR_WHITE.get_int()
        self.set_root(self._box)

        self._layout = _Layout()
        self._box.set_layout(self._layout)

        self._my_icon = BuddyIcon(buddy=get_owner_instance(),
                                  size=style.XLARGE_ICON_SIZE)
        self._box.append(self._my_icon)

        self._animator = animator.Animator(0.3)
        self._animator.connect('completed', self._animation_completed_cb)
Beispiel #29
0
    def __init__(self, **kwargs):
        logging.debug('GLYCOGEN: Loading the pathway view')

        gobject.GObject.__init__(self, **kwargs)

        # DND stuff
        self._pressed_button = None
        self._press_start_x = None
        self._press_start_y = None
        self._hot_x = None
        self._hot_y = None
        self._last_clicked_icon = None

        self._box = hippo.CanvasBox()
        self._box.props.background_color = style.COLOR_WHITE.get_int()
        self.set_root(self._box)

        self._my_icon = OwnerIcon(style.XLARGE_ICON_SIZE)
        self._my_icon.connect('register-activate', self.__register_activate_cb)
        self._box.append(
            self._my_icon
        )  # looks like this puts the xo user icon in the middle

        self._current_activity = CurrentActivityIcon()
        self._box.append(
            self._current_activity
        )  # looks like this puts the current activity icon under the user icon

        self._layout = None
        self._alert = None
        self._resume_mode = True

        # More DND stuff
        self.add_events(gtk.gdk.BUTTON_PRESS_MASK
                        | gtk.gdk.POINTER_MOTION_HINT_MASK)
        self.connect('motion-notify-event', self.__motion_notify_event_cb)
        self.connect('button-press-event', self.__button_press_event_cb)
        self.connect('drag-begin', self.__drag_begin_cb)
        self.connect('drag-motion', self.__drag_motion_cb)
        self.connect('drag-drop', self.__drag_drop_cb)
        self.connect('drag-data-received', self.__drag_data_received_cb)

        gobject.idle_add(self.__connect_to_bundle_registry_cb)

        favorites_settings = get_settings()
        favorites_settings.changed.connect(self.__settings_changed_cb)
        self._set_layout(favorites_settings.layout)
Beispiel #30
0
    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