Ejemplo n.º 1
0
    def display_about_dialog_callback(self, w, data):
        """
    This method is used for displaying "About DBR" notice
    """
        play = False
        program_name = "DBR"
        authors = ["Rafael Cantos Villanueva", "Francisco Javier Dorado Martínez"]
        translations = _("This program has been translated by:\n\nJuan C. Buño\nHammer Attila\n")
        license = _(
            "This program is under GNU/General Public License version 3. See accompanying COPYING file for more details."
        )
        version = pkg_resources.require("dbr")[0].version
        copyright = "Copyright 2008 Rafael Cantos Villanueva"
        website = "http://dbr.sourceforge.net"

        ADlg = gtk.AboutDialog()

        if self.bookOpened():
            if self.p.getState() == "Playing":
                play = True
                self.p.playPause()

        ADlg.set_program_name(program_name)
        ADlg.set_version(version)
        ADlg.set_copyright(copyright)
        ADlg.set_authors(authors)
        ADlg.set_translator_credits(translations)
        ADlg.set_license(license)
        ADlg.set_website(website)

        ADlg.connect("response", self.close_about_dialog_callback)
        ADlg.show()
Ejemplo n.º 2
0
 def downVolumeCallback(self, w, data):
     """
 Change down the volume
 """
     if self.bookOpened():
         self.p.changeVolume(-1)
     else:
         self.showMessage(_("Warning"), _("There are currently no playing book"))
Ejemplo n.º 3
0
 def switchStateCallback(self, w, data):
     """
 Switch between play and pause
 """
     if self.bookOpened():
         self.p.playPause()
     else:
         self.showMessage(_("Warning"), _("There are currently no playing book"))
Ejemplo n.º 4
0
 def toggleMuteCallback(self, w, data):
     """
 Toggles the mute
 """
     if self.bookOpened():
         self.p.mute()
     else:
         self.showMessage(_("Warning"), _("There are currently no playing book"))
Ejemplo n.º 5
0
 def stopCallback(self, w, data):
     """
 Stops the playback and checks if there is any opened book
 """
     if self.bookOpened():
         self.p.stop()
         self.syncViewAudio(False)
     else:
         self.showMessage(_("Warning"), _("Tehre are currently no playing book"))
Ejemplo n.º 6
0
 def goToPriorChapterCallback(self, w, data):
     """
 Goto prior chapter
 """
     if self.bookOpened():
         switch = self.b.nextOrPriorChapter(-1)
         if switch == 1:
             self.p.stop()
             self.b.setReadPosition(self.b.ncc_pos, 0)
             self.syncViewAudio()
     else:
         self.showMessage(_("Warning"), _("There are currently no playing book"))
Ejemplo n.º 7
0
 def deleteBookmarkCallback(self, w, data):
     """
 Prompts for deletion of bookmark
 """
     play = False
     if self.bookOpened():
         book_title = self.b.getBookTitle()
         bookmarks = self.sets.getBookmarksForBook(book_title)
         if self.p.getState() == "Playing":
             play = True
             self.p.playPause()
         if bookmarks != []:
             bookmarks_names = []
             for i in range(len(bookmarks)):
                 bookmarks_names.append(bookmarks[i][0])
             bookmark_index = self.showCombobox(
                 _("Bookmarks deletion"), _("Choose the bookmark which you want to delete"), bookmarks_names
             )
             if bookmark_index != None:
                 self.sets.deleteBookmark(book_title, bookmark_index)
             else:
                 self.showMessage(_("Warning"), _("You have not selected any bookmark"))
         else:
             self.showMessage(_("Warning"), _("Don't exist bookmarks for this book"))
         if self.p.getState() == "Paused" and play:
             self.p.playPause()
     else:
         self.showMessage(_("Warning"), _("Tehre are currently no playing book"))
Ejemplo n.º 8
0
 def displayChaptersCallback(self, w, data):
     """
 Displays the chapters list
 """
     play = False
     if self.bookOpened():
         if self.p.getState() == "Playing":
             play = True
             self.p.playPause()
         chapters, chapters_pos = self.b.getChapters()
         if chapters != []:
             chapter_pos = self.showCombobox(
                 _("Goo to chapter"), _("Select which chapter do you want to go"), chapters
             )
             if chapter_pos != None:
                 self.p.stop()
                 self.syncViewAudio()  # here?
             else:
                 self.showMessage(_("Warning"), _("You have not selected any chapter"))
         else:
             self.showMessage(_("Error"), _("Don't exist any chapter in the book"))
         if self.p.getState() == "Paused" and play:
             self.p.playPause()
     else:
         self.showMessage(_("Warning"), _("There are currently no playing book"))
Ejemplo n.º 9
0
 def displayBookmarksCallback(self, w, data):
     """
 Displays a list of bookmarks 
 """
     play = False
     if self.bookOpened():
         book_title = self.b.getBookTitle()
         bookmarks = self.sets.getBookmarksForBook(book_title)
         if self.p.getState() == "Playing":
             play = True
             self.p.playPause()
         if bookmarks != []:
             bookmarks_names = []
             for i in range(len(bookmarks)):
                 bookmarks_names.append(bookmarks[i][0])
             bookmark_index = self.showCombobox(
                 _("Bookmark list"), _("Choose the bookmark which you want to go"), bookmarks_names
             )
             if bookmark_index != None:
                 self.p.stop()
                 self.b.setReadPosition(bookmarks[bookmark_index][1], bookmarks[bookmark_index][2])
                 self.syncViewAudio()
             else:
                 self.showMessage(_("Warning"), _("You have not selected any bookmark"))
         else:
             self.showMessage(_("Warning"), _("There are not bookmarks for this book"))
         if self.p.getState() == "Paused" and play:
             self.p.playPause()
     else:
         self.showMessage(_("Warning"), _("Tehre are currently no playing book"))
Ejemplo n.º 10
0
 def displayBookTranslationCallback(self, w, data):
     """
 Displays book translation information
 """
     play = False
     if self.bookOpened():
         if self.p.getState() == "Playing":
             play = True
             self.p.playPause()
         info = self.b.getBookTranslationInfo()
         self.showMessage(_("Book translation information"), info)
         if self.p.getState() == "Paused" and play:
             self.p.playPause()
     else:
         self.showMessage(_("Warning"), _("There are currently no playing book"))
Ejemplo n.º 11
0
 def displayBookDurationCallback(self, w, data):
     """
 Display current book duration in hh:mm:ss format
 """
     play = False
     if self.bookOpened():
         if self.p.getState() == "Playing":
             play = True
             self.p.playPause()
         duration = self.b.getBookDuration()
         duration_formated = self.b.getFormatedTime(duration)
         self.showMessage(_("Total book's playback time"), duration_formated)
         if self.p.getState() == "Paused" and play:
             self.p.playPause()
     else:
         self.showMessage(_("Warning"), _("Tehre are currently no playing book"))
Ejemplo n.º 12
0
 def displayLicenseCallback(self, w, data):
     """
 Display license notice
 """
     play = False
     if self.bookOpened():
         if self.p.getState() == "Playing":
             play = True
             self.p.playPause()
     if os.path.exists("docs/licencia.html"):
         os.system("firefox docs/licencia.html")
     else:
         self.showMessage(_("Warning!"), _("The help file can not be found"))
     if self.bookOpened():
         if self.p.getState() == "Paused" and play:
             self.p.playPause()
Ejemplo n.º 13
0
 def openRecentBookCallback(self, w, data):
     """
 Open a recently opened book
 """
     play = False
     if self.p.getState() == "Playing":
         play = True
         self.p.playPause()
     books = self.sets.getBooks()
     if books != []:
         book_titles = []
         for i in range(len(books)):
             book_titles.append(books[i][0])
         book_index = self.showCombobox(
             _("Recently opened books"), _("Choose the book which you want to open"), book_titles
         )
         if book_index != None:
             aux_book = book.Book(books[book_index][1])
             if aux_book.getBookTitle() == books[book_index][0]:
                 self.p.stop()
                 self.v.clearModel()
                 self.b = aux_book
                 self.v.displayBook(self.b.getNcc())
                 self.syncViewAudio()
             else:
                 self.showMessage(
                     _("Warning"), _("Specified book doesn't match with the book currently in that path")
                 )
         else:
             self.showMessage("Warning", _("You have not selected any book"))
     else:
         self.showMessage(_("Warning"), _("There are no saved books"))
     if (self.p.getState() == "Paused") and play:
         self.p.playPause()
Ejemplo n.º 14
0
 def displayCurrentPlayingTimeCallback(self, w, data):
     """
 Displays playing time in hh:mm:ss format
 """
     play = False
     if self.bookOpened():
         if self.p.getState() == "Playing":
             play = True
             self.p.playPause()
         pos = self.p.getCurrentNs()
         pos = pos / 1000000000
         seconds, aux = self.b.getPlayingTime()
         t = seconds + (pos - aux)
         duration = self.b.getFormatedTime(t)
         self.showMessage(_("Elapsed playback time"), duration)
         if self.p.getState() == "Paused" and play:
             self.p.playPause()
     else:
         self.showMessage(_("Warning"), _("Tehre are currently no playing book"))
Ejemplo n.º 15
0
Archivo: view.py Proyecto: javido/dbr
 def newWindow(self):
   """
   Creates the main window for the application
   """
   window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   window.connect("destroy", self.destroyApplication)
   # Translators: this string the main DBR window title
   window.set_title(_("Daisy Book Reader"))
   window.set_border_width(1)
   window.set_default_size(640, 480)
   return window
Ejemplo n.º 16
0
Archivo: view.py Proyecto: javido/dbr
 def displayBook(self, list):
   """
   Displays book when starting application
   """
   self.clearModel()
   l = []
   for x in range(len(list)):
     y = list[x].childNodes
     z = y[0].firstChild.toprettyxml()
     l.append(y[0])
     iter = self.treestore.append(None, ['%s' % z])
   title = self.c.displayBookTitle()
   # Translators: this string the DBR application window title when the user opening a daisy book. %s variable containing the opened daisy book title
   self.window.set_title(_("Daisy Book Reader - %s") %(title))
Ejemplo n.º 17
0
 def goToPageCallback(self, w, data):
     """
 Goto a specified page user entered
 """
     play = False
     if self.bookOpened():
         if self.p.getState() == "Playing":
             play = True
             self.p.playPause()
         page = self.showEntryText(_("Go to page"), _("Enter the page which you want to go"), 4)
         if page.isdigit():
             switch, pos = self.b.goToPage(page)
             if switch == 1:
                 self.p.stop()
                 self.b.setReadPosition(pos - 1, 0)
                 self.syncViewAudio()
             else:
                 self.showMessage(_("Warning"), _("Page out of range"))
         else:
             self.showMessage(_("Error"), _("You have not entered a number"))
         if self.p.getState() == "Paused" and play:
             self.p.playPause()
     else:
         self.showMessage(_("Warning"), _("Tehre are currently no playing book"))
Ejemplo n.º 18
0
 def createBookmarkCallback(self, w, data):
     """
 Creates a bookmark for the current playing book
 """
     play = False
     if self.bookOpened():
         if self.p.getState() == "Playing":
             play = True
             self.p.playPause()
         bookmark_name = self.showEntryText(_("Set bookmark"), _("Enter the bookmark name"), 50)
         if bookmark_name != "":
             bookmark = self.b.getExactPosition()
             bookmark.append(bookmark_name)
             self.sets.createBookmark(bookmark)
         else:
             self.showMessage(_("Error"), _("You have not entered a bookmark name"))
         if self.p.getState() == "Paused" and play:
             self.p.playPause()
     else:
         self.showMessage(_("Warning"), _("There are currently no playing book"))
Ejemplo n.º 19
0
    def openBook(self, w):
        """
    Handle opening a book 
    """
        if self.p.getState() == "Playing":
            self.p.playPause()
        selection = gtk.FileChooserDialog(
            _("Open book"),
            None,
            gtk.FILE_CHOOSER_ACTION_OPEN,
            (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK),
        )
        selection.set_default_response(gtk.RESPONSE_OK)

        # Filter all ncc.html filenames
        filter = gtk.FileFilter()
        path = os.path.abspath("ncc")
        selection.set_filename(path)
        # Configure file extension and filter name
        filter.set_name(_("Daisy 2.0/2.02 book (*.html)"))
        filter.add_pattern("*.html")
        selection.add_filter(filter)

        response = selection.run()
        if response == gtk.RESPONSE_OK:
            try:
                # Open the book
                filename = selection.get_filename()
                self.b = book.Book(filename)

            except IOError:
                self.showMessage(_("Failed to open"), _(" The book can not be opened"))
        elif response == gtk.RESPONSE_CANCEL:
            self.showMessage(_("Canceled selection"), _("No book has been selected"))
            if self.p.getState() == "Paused":
                self.p.playPause()
        selection.destroy()
        ncc = self.b.getNcc()
        if len(ncc) > 1:
            return ncc
Ejemplo n.º 20
0
Archivo: view.py Proyecto: javido/dbr
  def __init__(self, controller):
    """
    Initialization for view object
    """
    self.c = controller
    self.c.setView(self)


    self.menu_items = (
      ("/" +  _("_File"), "<alt>F", None, 0, "<Branch>"),
      ("/" + _("File") + "/" + _("_Open book"), "<control>O", self.openBookCallback, 0, None),
      ("/" + _("File") + "/" + _("_Find book"), "<control>F", self.c.openRecentBookCallback, 0, None),
      ("/" + _("File") + "/" + _("_Close book"), "<control>F4", self.c.closeBookCallback, 0, None),
      ("/" + _("File") + "/" + _("_Quit"), "<control>Q", self.closeApplication, 0, None),

      ("/" + _("_Control"), "<alt>C", None, 0, "<Branch>"),
      ("/" + _("Control") + "/" + _("_Play-Pause"), "<control>space", self.c.switchStateCallback, 0, None),
      ("/" + _("Control") + "/" + _("_Mute"), "<control>M", self.c.toggleMuteCallback, 0, None),
      ("/" + _("Control") + "/" + _("_Stop"), "<control>S", self.c.stopCallback, 0, None),
      ("/" + _("Control") + "/" + _("_Volume"), "<alt>V", None, 0, "<Branch>"),
      ("/" + _("Control") + "/" + _("Volume") + "/" + _("Increase volume"), "<control>V", self.c.upVolumeCallback, 0, None),
      ("/" + _("Control") + "/" + _("Volume") + "/" + _("Decrease volume"), "<control><shift>V", self.c.downVolumeCallback, 0, None),

      ("/" + _("_Navigation"), "<alt>N", None, 0, "<Branch>"),
      ("/" + _("Navigation") + "/" + _("Previous chapter"), "<control><shift>L", self.c.goToPriorChapterCallback, 0, None),
      ("/" + _("Navigation") + "/" + _("Next chapter"), "<control>L", self.c.goToNextChapterCallback, 0, None),
      ("/" + _("Navigation") + "/" + _("Previous page"), "<control><shift>N", self.c.goToPriorPageCallback, 0, None),
      ("/" + _("Navigation") + "/" + _("Next page"), "<control>N", self.c.goToNextPageCallback, 0, None),
      ("/" + _("Navigation") + "/" + _("Previous paragraph"), "<control><shift>P", self.c.goToPriorTextCallback, 0, None),
      ("/" + _("Navigation") + "/" + _("Next paragraph"), "<control>P", self.c.goToNextTextCallback, 0, None),
      ("/" + _("_Go to"), "<control>G", None, 0, "<Branch>"),
      ("/" + _("_Go to") + "/" + _("Chapter"), None, self.c.displayChaptersCallback, 0, None),
      ("/" + _("_Go to") + "/" + _("Page"), None, self.c.goToPageCallback, 0, None),
      ("/" + _("_Bookmarks"), "<alt>B", None, 0, "<Branch>"),
      ("/" + _("Bookmarks") + "/" + _("_Set bookmark"), "<control>K", self.c.createBookmarkCallback, 0, None),
      ("/" + _("Bookmarks") + "/" + _("_Delete bookmarks"), "<control>D", self.c.deleteBookmarkCallback, 0, None),
      ("/" + _("Bookmarks") + "/" + _("_List bookmarks"), "<control>B", self.c.displayBookmarksCallback, 0, None),
      ("/" + _("_Info"), "<alt>I", None, 0, "<Branch>"),
      ("/" + _("Info") + "/" + _("_Book info"), "<control>O", self.c.displayBookInfoCallback, 0, None),
      ("/" + _("Info") + "/" + _("Book _translation information"), "<control>N", self.c.displayBookTranslationCallback, 0, None),
      ("/" + _("Info") + "/" + _("Playback _duration"), "<control>X", self.c.displayCurrentPlayingTimeCallback, 0, None),
      ("/" + _("Info") + "/" + _("Total play _duration"), "<control>W", self.c.displayBookDurationCallback, 0, None),
      ("/" + _("_Help"), "<alt>H", None, 0, "<Branch>"),
      ("/" + _("Help") + "/" + _("_User help"), "<control>u", self.c.displayHelpCallback, 0, None),
      ("/" + _("Help") + "/" + _("_About DBR"), "<control>Y", self.c.display_about_dialog_callback, 0, None),
      ("/" + _("Help") + "/" + _("_License"), "<control>J", self.c.displayLicenseCallback, 0, None)
      )

    self.window = self.newWindow()


    main_box = gtk.VBox(False, 1)
    main_box.set_border_width(1)
    main_box.show()

    menubar = self.mainMenu(self.window)

    main_box.pack_start(menubar, False, True, 0)
    menubar.show()


    #Create toolbar
    self.toolbar = gtk.Toolbar()
    self.toolbar.set_orientation(gtk.ORIENTATION_HORIZONTAL)
    self.toolbar.set_style(gtk.TOOLBAR_BOTH)
    self.toolbar.set_border_width(5)
    
    # Options for toolbar: open...
    toolbar_item = gtk.ToolButton(_("Open"))
    toolbar_item.set_stock_id(gtk.STOCK_OPEN)
    toolbar_item.connect("clicked", self.openBookCallback, toolbar_item)
    toolbar_item.show()
    self.toolbar.insert(toolbar_item, -1)

    self.toolbar_item2 = gtk.ToggleToolButton(gtk.STOCK_MEDIA_PLAY)
    #self.toolbar_item2.set_stock_id(gtk.STOCK_MEDIA_PAUSE)
    self.toolbar_item2.set_active(False)

    self.toolbar_item2.connect("clicked", self.c.switchStateCallback, self.toolbar_item2)
    self.toolbar_item2.show()
    self.toolbar.insert(self.toolbar_item2, -1)
    
    toolbar_item3 = gtk.ToolButton(_("Stop"))
    toolbar_item3.set_stock_id(gtk.STOCK_MEDIA_STOP)
    toolbar_item3.connect("clicked", self.c.stopCallback, toolbar_item3)
    toolbar_item3.show()
    self.toolbar.insert(toolbar_item3, -1)

    
    toolbar_item6 = gtk.ToolButton(_("Next Chapter"))
    toolbar_item6.set_stock_id(gtk.STOCK_MEDIA_REWIND)
    toolbar_item6.connect("clicked", self.c.goToNextChapterCallback, toolbar_item6)
    toolbar_item6.show()
    self.toolbar.insert(toolbar_item6, -1)
    
    toolbar_item4 = gtk.ToolButton(_("Previous Chapter"))
    toolbar_item4.set_stock_id(gtk.STOCK_MEDIA_FORWARD)
    toolbar_item4.connect("clicked", self.c.goToPriorChapterCallback, toolbar_item4)
    toolbar_item4.show()
    self.toolbar.insert(toolbar_item4, -1)

    iconw = gtk.Image() # icon widget
    iconw.set_from_file("/usr/share/icons/gnome/32x32/actions/bookmarks.png")

    toolbar_item5 = gtk.ToolButton(iconw,_("Set Bookmark"))
    #toolbar_item5.set_stock_id(gtk.STOCK_INDEX)
    toolbar_item5.connect("clicked", self.c.createBookmarkCallback, toolbar_item5)
    toolbar_item5.show()
    self.toolbar.insert(toolbar_item5, -1)

    main_box.pack_start(self.toolbar, False, True, 0)
    self.toolbar.show()


    # Creates a  TreeStore with a text column.
    self.treestore = gtk.TreeStore(str)

    # Creation of TreeView using the treestore
    self.treeview = gtk.TreeView(self.treestore)

    # Creation of the TreeViewColumn for displaying data
    self.tvcolumn = gtk.TreeViewColumn(_("Table of contents"))

    # Add the column to the treeview
    self.treeview.append_column(self.tvcolumn)

    # Create a CellRendererText  for displaying data
    self.cell = gtk.CellRendererText()

    # Add the cell to the column and let expand it
    self.tvcolumn.pack_start(self.cell, True)

    # Include "text" attribute to the column 0 - return text
    # from the column into tree.
    self.tvcolumn.add_attribute(self.cell, 'text', 0)


    # Make it searchable
    self.treeview.set_search_column(0)
    self.treeselection = self.treeview.get_selection()

    self.cursorChanged = self.treeview.connect("cursor-changed", self.updateAudio)


    book_window = gtk.ScrolledWindow()
    book_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
    book_window.show()
    book_window.add_with_viewport(self.treeview)


    self.treeview.show_all()

    general_box = gtk.VBox(False, 1)
    general_box.set_border_width(1)
    self.window.add(general_box)
    general_box.show()
    general_box.pack_start(main_box, False, True, 0)
    general_box.pack_start(book_window, True, True, 0)


    self.window.show_all()
    list, toc_position = self.c.getConfiguration()
    if len(list) > 0:
      self.displayBook(list)
      self.updateView(toc_position)
      self.c.loadLatestBook()
    
    self.treeview.grab_focus()
Ejemplo n.º 21
0
Archivo: view.py Proyecto: javido/dbr
 def clearModel(self):
   """
   Clears the tree model 
   """
   self.treestore.clear()
   self.window.set_title(_("Daisy Book Reader"))