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)
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)
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()
def create_layout(self): self.book = BookView(self) self.setCentralWidget(self.book) self.create_library_dock()