Exemple #1
0
    def __init__(self, activity):
        GObject.GObject.__init__(self)
        self.activity = activity

        self.wiki = BookView(book.wiki,
                _('Wiki'), _('Wiki articles'), False)
        self.custom = BookView(book.custom,
                _('Custom'), _('Custom articles'), True)

        # stubs for empty articles

        def create_stub(icon_name, head_text, tail_text):
            head_label = Gtk.Label(label=head_text)
            head_label_a = Gtk.Alignment.new(0.5, 1, 0, 0)
            head_label_a.add(head_label)
            icon = Icon(icon_name=icon_name,
                    icon_size=Gtk.IconSize.LARGE_TOOLBAR)
            tail_label = Gtk.Label(label=tail_text)
            tail_label_a = Gtk.Alignment.new(0.5, 0, 0, 0)
            tail_label_a.add(tail_label)
            stub = Gtk.VBox()
            stub.pack_start(head_label_a, True, True, 0)
            stub.pack_start(icon, False, False, 0)
            stub.pack_start(tail_label_a, True, True, 0)
            return stub

        wiki_stub = create_stub('white-search',
                _('To download Wiki article\ntype "Article name" and click'),
                _('button on the top "Library" panel'))
        custom_stub = create_stub('add',
                _('To create custom article click'),
                _('button on the left "Custom" panel'))

        # articles viewers
        lang_code = locale.getdefaultlocale()[0] or 'en_US'
        wiki_prefix = lang_code[0:2] + '.'
        language_order = 0
        order = 0
        search_box = Gtk.HBox()
        self.wikimenu = ToolComboBox(label_text=_('Get article from:'))
        for i in sorted(WIKI.keys()):
            self.wikimenu.combo.append_item(WIKI[i], i)
            if WIKI[i].startswith(wiki_prefix):
                language_order = order
            order = order + 1
        self.wikimenu.combo.set_active(language_order)
        search_box.pack_start(self.wikimenu, False, False, 0)

        self.searchentry = Gtk.Entry()
        self.searchentry.set_size_request(int(Gdk.Screen.width() / 6), -1)
        self.searchentry.set_text(_("Article name"))
        self.searchentry.select_region(0, -1)
        self.searchentry.connect('activate', self._search_activate_cb)
        search_box.pack_start(self.searchentry, True, True, 0)
        search_box.show_all()

        self.searchbutton = Gtk.Button(label=_('Search'))
        self.searchbutton.connect('clicked', self._search_clicked_cb)
        search_box.pack_start(self.searchbutton, False, False, 0)

        wiki_widget = Reading_View()
        wiki = Gtk.Notebook()
        wiki.props.show_border = False
        wiki.props.show_tabs = False
        wiki.append_page(wiki_stub, None)
        wiki.append_page(wiki_widget, None)

        self.progress = Gtk.Label()
        #self.progress.set_size_request(-1, style.SMALL_ICON_SIZE+4)
        #progress_box = Gtk.HBox()
        #progress_box.pack_start(Gtk.HSeparator(, True, True, 0), False)
        #progress_box.pack_start(self.progress, False)

        wiki_box = Gtk.VBox()
        wiki_box.pack_start(search_box, False, False, 0)
        wiki_box.pack_start(wiki, True, True, 0)
        wiki_box.pack_start(self.progress, False, False, 0)
        logging.debug(int(Gdk.Screen.width() * 3 / 4.))
        wiki_box.set_size_request(int(Gdk.Screen.width() * 3 / 4.),
                                  int((Gdk.Screen.height() - \
                                           style.GRID_CELL_SIZE) / 2))

        custom_widget = Reading_View()
        custom = Gtk.Notebook()
        custom.props.show_border = False
        custom.props.show_tabs = False
        custom.append_page(custom_stub, None)
        custom.append_page(custom_widget, None)
        # custom.set_size_request(Gdk.Screen.width()/4*3,
        #         Gdk.Screen.height()/2 - 55)
        custom.set_size_request(int(Gdk.Screen.width() * 3 / 4.),
                                  int((Gdk.Screen.height() - \
                                           style.GRID_CELL_SIZE) / 2))

        # workspace

        articles_box = Gtk.HBox()
        articles_box.pack_start(self.wiki, True, True, 0)
        articles_box.pack_start(Gtk.VSeparator(), False, False, 0)
        articles_box.pack_start(wiki_box, False, False, 0)

        custom_box = Gtk.HBox()
        custom_box.pack_start(self.custom, True, True, 0)
        custom_box.pack_start(Gtk.VSeparator(), False, False, 0)
        custom_box.pack_start(custom, False, False, 0)

        workspace = Gtk.VBox()
        workspace.pack_start(articles_box, False, False, 0)
        workspace.pack_start(custom_box, False, False, 0)
        workspace.show_all()

        self.add(workspace)

        # init components

        book.wiki.connect('article-selected', self._article_selected_cb,
                wiki_widget, [wiki, custom])
        book.wiki.connect('article-deleted', self._article_deleted_cb,
                [wiki, custom])
        book.custom.connect('article-selected', self._article_selected_cb,
                custom_widget, [custom, wiki])
        book.custom.connect('article-deleted', self._article_deleted_cb,
                [custom, wiki])

        self._article_selected_cb(book.wiki, book.wiki.article,
                wiki_widget, [wiki, custom])
        self._article_selected_cb(book.custom, book.custom.article,
                custom_widget, [custom, wiki])

        self.connect('map', self._map_cb)
Exemple #2
0
    def __init__(self, inidir, inifile):
        """Initiate the application
        
        Arguments
        inidir -- the working directory
        inifile -- the inifile 
        
        """
        #Initiate main GUI
        gui = publicdisplay.PublicDisplay(inifile)
        self.gui = gui
        self.gui.root.protocol("WM_DELETE_WINDOW", self._ehQuit)
        self._views = dict()

        #Read configuration data
        settings = varbergsettings.Settings1(inidir, inifile)

        #Configure harvesters
        config = configreader.ConfigReader(settings.configfile)
        self._sched = scheduler.Scheduler()
        handlers = [self._ehButton1, self._ehButton2]
        hidden = []
        self._datamanagers = dict()

        if (len(config.defaults) != 2):
            raise Exception('Fatal error: there shall be ' +
                            str(_buttonCount) +
                            'default button configurations')

        #Create default harvesters and their views
        for (dsd, id, i) in itertools.izip(config.defaults, _buttonIds,
                                           range(_buttonCount)):
            dm = DataManager1(dsd, settings)
            self._datamanagers[id] = dm
            self._sched.addUpdatable(dm)
            frame = gui.createMainAreaShape(publicdisplay.shpRoundRect, id)
            blv = BooklistView(settings.previewx, settings.previewy, frame)
            self._views[id] = blv
            gui.setupSoftbutton(handlers[i], dsd.buttontext, i)

            if (dsd.startup):
                shown = id
                index = i
            else:
                hidden.append(id)

        #Create item viewer
        frame = gui.createMainAreaShape(publicdisplay.shpRoundRect, _viewId)
        viewer = BookView(frame, gui.bgcolor, settings)
        self._views[_viewId] = viewer
        hidden.append(_viewId)

        #Create carousel view
        self._bottomframe = gui.createBottomFrame()
        self._carouselview = carouselview.ImageCarouselView(
            self._bottomframe, settings.smallpreviewx, settings.smallpreviewy)
        self._bottomframe.grid_remove()

        #Set initial GUI state
        self._setupPublicDisplay(shown, hidden, index)

        #Start background thread
        self._sched.start()
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(601, 701)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
        MainWindow.setSizePolicy(sizePolicy)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8(I("viewer.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MainWindow.setWindowIcon(icon)
        self.central_widget = QtGui.QWidget(MainWindow)
        self.central_widget.setObjectName(_fromUtf8("central_widget"))
        self.vboxlayout = QtGui.QVBoxLayout(self.central_widget)
        self.vboxlayout.setMargin(0)
        self.vboxlayout.setObjectName(_fromUtf8("vboxlayout"))
        self.stack = QtGui.QStackedWidget(self.central_widget)
        self.stack.setObjectName(_fromUtf8("stack"))
        self.viewer_page = QtGui.QWidget()
        self.viewer_page.setObjectName(_fromUtf8("viewer_page"))
        self.gridlayout = QtGui.QGridLayout(self.viewer_page)
        self.gridlayout.setMargin(0)
        self.gridlayout.setObjectName(_fromUtf8("gridlayout"))
        self.graphics_view = BookView(self.viewer_page)
        self.graphics_view.setMouseTracking(True)
        self.graphics_view.setObjectName(_fromUtf8("graphics_view"))
        self.gridlayout.addWidget(self.graphics_view, 0, 0, 1, 1)
        self.stack.addWidget(self.viewer_page)
        self.bar_page = QtGui.QWidget()
        self.bar_page.setObjectName(_fromUtf8("bar_page"))
        self.vboxlayout1 = QtGui.QVBoxLayout(self.bar_page)
        self.vboxlayout1.setObjectName(_fromUtf8("vboxlayout1"))
        spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
        self.vboxlayout1.addItem(spacerItem)
        self.frame_2 = QtGui.QFrame(self.bar_page)
        self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtGui.QFrame.Raised)
        self.frame_2.setObjectName(_fromUtf8("frame_2"))
        self.vboxlayout2 = QtGui.QVBoxLayout(self.frame_2)
        self.vboxlayout2.setObjectName(_fromUtf8("vboxlayout2"))
        self.progress_bar = QtGui.QProgressBar(self.frame_2)
        self.progress_bar.setMaximum(0)
        self.progress_bar.setProperty("value", -1)
        self.progress_bar.setObjectName(_fromUtf8("progress_bar"))
        self.vboxlayout2.addWidget(self.progress_bar)
        self.progress_label = QtGui.QLabel(self.frame_2)
        font = QtGui.QFont()
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        self.progress_label.setFont(font)
        self.progress_label.setObjectName(_fromUtf8("progress_label"))
        self.vboxlayout2.addWidget(self.progress_label)
        self.vboxlayout1.addWidget(self.frame_2)
        spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
        self.vboxlayout1.addItem(spacerItem1)
        self.stack.addWidget(self.bar_page)
        self.vboxlayout.addWidget(self.stack)
        MainWindow.setCentralWidget(self.central_widget)
        self.tool_bar = QtGui.QToolBar(MainWindow)
        self.tool_bar.setAllowedAreas(QtCore.Qt.AllToolBarAreas)
        self.tool_bar.setObjectName(_fromUtf8("tool_bar"))
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.tool_bar)
        self.action_next_page = QtGui.QAction(MainWindow)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(_fromUtf8(I("next.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_next_page.setIcon(icon1)
        self.action_next_page.setObjectName(_fromUtf8("action_next_page"))
        self.action_previous_page = QtGui.QAction(MainWindow)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(_fromUtf8(I("previous.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_previous_page.setIcon(icon2)
        self.action_previous_page.setObjectName(_fromUtf8("action_previous_page"))
        self.action_back = QtGui.QAction(MainWindow)
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(_fromUtf8(I("back.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_back.setIcon(icon3)
        self.action_back.setObjectName(_fromUtf8("action_back"))
        self.action_forward = QtGui.QAction(MainWindow)
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(_fromUtf8(I("forward.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_forward.setIcon(icon4)
        self.action_forward.setObjectName(_fromUtf8("action_forward"))
        self.action_next_match = QtGui.QAction(MainWindow)
        self.action_next_match.setObjectName(_fromUtf8("action_next_match"))
        self.action_open_ebook = QtGui.QAction(MainWindow)
        icon5 = QtGui.QIcon()
        icon5.addPixmap(QtGui.QPixmap(_fromUtf8(I("document_open.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_open_ebook.setIcon(icon5)
        self.action_open_ebook.setObjectName(_fromUtf8("action_open_ebook"))
        self.action_configure = QtGui.QAction(MainWindow)
        icon6 = QtGui.QIcon()
        icon6.addPixmap(QtGui.QPixmap(_fromUtf8(I("config.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_configure.setIcon(icon6)
        self.action_configure.setObjectName(_fromUtf8("action_configure"))
        self.tool_bar.addAction(self.action_back)
        self.tool_bar.addAction(self.action_forward)
        self.tool_bar.addSeparator()
        self.tool_bar.addAction(self.action_open_ebook)
        self.tool_bar.addAction(self.action_configure)
        self.tool_bar.addSeparator()
        self.tool_bar.addAction(self.action_previous_page)
        self.tool_bar.addAction(self.action_next_page)
        self.tool_bar.addSeparator()

        self.retranslateUi(MainWindow)
        self.stack.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
Exemple #4
0
    def __init__(self, inidir, inifile):
        """Initiate the application
        
        Arguments
        inidir -- the working directory
        inifile -- the inifile 
        
        """        
        settings = Settings3(inidir, inifile)
        self._settings = settings
        dsdblog = InifileDataSourceDescription(sBlog, inidir, inifile)
        dsdnew = InifileDataSourceDescription(sNew, inidir, inifile)
                
        #Initiate main GUI
        gui = publicdisplay.PublicDisplay(inifile)
        self.gui = gui
        self.gui.root.protocol("WM_DELETE_WINDOW", self._ehQuit)
        self._views = dict()
        self._datamanagers = dict()
        
        self._sched = scheduler.Scheduler()
        
        #Configure blog data manager
        dm = DataManager3Blog(inidir, dsdblog, settings)
        self._datamanagers[_blogid] = dm
        self._sched.addUpdatable(dm)
        gui.setupSoftbutton(self._ehBlog, lang[lng.txtBlog], 0)

        frame = gui.createMainAreaShape(publicdisplay.shpSmallRoundRect, _blogid)
        blogview = BooklistView(settings.previewx, settings.previewy, frame)
        self._views[_blogid] = blogview
        dm.addSubjectObserver(blogview)

        rect = gui.createMainAreaShape(publicdisplay.shpBottomRect, _bottomblogid)
        ib = Infobar(rect)
        dm.addSubjectObserver(ib)

        #Configure new book data manager
        dm = DataManager3New(inidir, dsdnew, settings)
        self._datamanagers[_newbookid] = dm
        self._sched.addUpdatable(dm)
        gui.setupSoftbutton(self._ehNew, lang[lng.txtRecentlyBought], 1)

        frame = gui.createMainAreaShape(publicdisplay.shpSmallRoundRect, _newbookid)
        blogview = BooklistView(settings.previewx, settings.previewy, frame)
        self._views[_newbookid] = blogview
        dm.addSubjectObserver(blogview)

        rect = gui.createMainAreaShape(publicdisplay.shpBottomRect, _bottomnewbookid)
        ib = Infobar(rect)
        dm.addSubjectObserver(ib)
        
        self._itemviews = dict()

        #Create blog view
        frame = gui.createMainAreaShape(publicdisplay.shpSmallRoundRect, _blogviewid)
        viewer = BlogView(frame, gui.bgcolor, settings)
        self._views[_blogviewid] = viewer
        self._itemviews[_blogid] = _blogviewid
        
        #Create book view
        frame = gui.createMainAreaShape(publicdisplay.shpSmallRoundRect, _bookviewid)
        viewer = BookView(frame, gui.bgcolor, settings)
        self._views[_bookviewid] = viewer
        self._itemviews[_newbookid] = _bookviewid
        
        #Create carousel views
        self._imagecarouselframe = gui.createBottomFrame()
        self._imagecarouselview = ImageCarouselView(self._imagecarouselframe, settings.smallpreviewx, settings.smallpreviewy)
        self._imagecarouselframe.grid_remove()
        
        self._subjectcarouselframe = gui.createBottomFrame()
        self._subjectcarouselview = ImageCarouselView(self._subjectcarouselframe, settings.smallpreviewx, settings.smallpreviewy)
        self._subjectcarouselframe.grid_remove()

        self._setupPublicDisplay(_blogid, _bottomblogid, [_newbookid, _bottomnewbookid, _blogviewid, _bookviewid], 0)
        self._sched.start()
Exemple #5
0
    def create_layout(self):
        self.book = BookView(self)
        self.setCentralWidget(self.book)

        self.create_library_dock()