示例#1
0
  def on_button_query_clicked(self, widget):
    '''Open the query dialog.

    '''
    from add_edit import add_edit
    ## Get a book for editing.  SHOULD be devolved to add_edit !!
    foo,iter = self.treeview.get_selection().get_selected()
    #logging.info(iter)
    if iter:
      # Get the data
      bid = self.booklist.get_value(iter,7)
      # If it's an e-book then we do nothing
      if bid == 0:
        import messages
        messages.pop_info(_('Cannot query e-books.  Please use calibre.' ))
        return
      adder = add_edit()
      #logging.info(adder)
      adder.populate(bid)
      adder.display()

    else:
      adder = add_edit()
      adder.display()
    self.get_book_list(1) # Repopulate book list.
示例#2
0
  def get_config(self):
    config_file = home + "/.librarian.cfg"
    config = ConfigParser.ConfigParser()
    config.read(config_file)
    if not config.sections():
      #print "Cannot read config file, exiting.\n"
      # Pop up a message
      import messages
      messages.pop_info(_('No config file found.\nA template file file has been written to disk.\nPlease edit ') 
        + config_file + _(' to contain the correct login details for your databases.\nNote that is is a hidden file'))

      f = open(config_file,"w")
      # Write a dummy config file if one doesn't exist
      #The python way, but it converts everything to LOWER case! 
      parser = ConfigParser.SafeConfigParser()
      parser.add_section('database')
      parser.add_section('calibre')
      parser.add_section('qr_code')
      parser.add_section('amazon_aws')
      parser.set('database', 'USER', 'username')
      parser.set('database', 'PASSWD', 'password')
      parser.set('database', 'DB', 'db_name')
      parser.set('database', 'DBHOST', 'db_host')
      parser.set('database', '# DON\'T change the LITE_DB name', '')
      parser.set('database', 'LITE_DB', 'books.db')
      parser.set('database', '# Select either sqlite or mysql, Disable a type with a leading #', '')
      parser.set('database', '#use', 'sqlite')
      parser.set('database', 'use', 'mysql')
      parser.set('calibre', '# Optional: Define path to Calibre database, Users home dir will be automatically determined.', '')
      parser.set('calibre', 'CALIBRE_DB', 'calibre_db')
      parser.set('qr_code', 'QR_CODE', 'False')
      parser.set('amazon_aws','AWS_KEY','AWS_KEY')
      parser.set('amazon_aws','SECRET_KEY','SECRET_KEY')
      parser.write(f)
      # Set access mode to owner only
      os.fchmod(f.fileno(),stat.S_IREAD|stat.S_IWRITE)
      f.close()
      del f

    else:
      # Now read the file
      self.db_user = config.get('database','USER')
      self.db_pass = config.get('database','PASSWD')
      self.db_base = config.get('database','DB')
      self.db_host = config.get('database','DBHOST')
      self.lite_db = config.get('database','LITE_DB')
      self.use = config.get('database','USE')
      self.qr_code = config.get('qr_code','QR_CODE')
      self.az_key = config.get('amazon_aws','AWS_KEY')
      self.az_skey = config.get('amazon_aws','SECRET_KEY')
      try:
        self.calibre_db = config.get('calibre','CALIBRE_DB')
      except:
        pass
示例#3
0
  def get_config(self):
    config_file = home + "/.librarian.cfg"
    config = ConfigParser.ConfigParser()
    config.read(config_file)
    if not config.sections():
      #print "Cannot read config file, exiting.\n"
      # Pop up a message
      import messages
      messages.pop_info(_('No config file found.\nA template file file has been written to disk.\nPlease edit ') 
        + config_file + _(' to contain the correct login details for your databases.\nNote that is is a hidden file'))

      f = open(config_file,"w")
      # Write a dummy config file if one doesn't exist
      #The python way, but it converts everything to LOWER case! 
      parser = ConfigParser.SafeConfigParser()
      parser.add_section('database')
      parser.add_section('calibre')
      parser.add_section('qr_code')
      parser.add_section('amazon_aws')
      parser.set('database', 'USER', 'username')
      parser.set('database', 'PASSWD', 'password')
      parser.set('database', 'DB', 'db_name')
      parser.set('database', 'DBHOST', 'db_host')
      parser.set('database', '# DON\'T change the LITE_DB name', '')
      parser.set('database', 'LITE_DB', 'books.db')
      parser.set('database', '# Select either sqlite or mysql, Disable a type with a leading #', '')
      parser.set('database', 'use', 'sqlite')
      parser.set('database', '#use', 'mysql')
      parser.set('calibre', '# Optional: Define path to Calibre database, Users home dir will be automatically determined.', '')
      parser.set('calibre', 'CALIBRE_DB', 'calibre_db')
      parser.set('qr_code', 'QR_CODE', 'False')
      parser.set('amazon_aws','AWS_KEY','AWS_KEY')
      parser.set('amazon_aws','SECRET_KEY','SECRET_KEY')
      parser.write(f)
      # Set access mode to owner only
      os.fchmod(f.fileno(),stat.S_IREAD|stat.S_IWRITE)
      f.close()
      del f

    else:
      # Now read the file
      self.db_user = config.get('database','USER')
      self.db_pass = config.get('database','PASSWD')
      self.db_base = config.get('database','DB')
      self.db_host = config.get('database','DBHOST')
      self.lite_db = config.get('database','LITE_DB')
      self.use = config.get('database','USE')
      self.qr_code = config.get('qr_code','QR_CODE')
      self.az_key = config.get('amazon_aws','AWS_KEY')
      self.az_skey = config.get('amazon_aws','SECRET_KEY')
      try:
        self.calibre_db = config.get('calibre','CALIBRE_DB')
      except:
        pass
示例#4
0
 def on_button_print_clicked(self, widget):
   '''Print the entire book list to pdf then opens the default pdf viewer.
   TODO: Auto width columns
   This will likely be system specific
   '''
   try:
     from reportlab.lib.enums import TA_JUSTIFY, TA_LEFT
     from reportlab.lib.pagesizes import A4
     from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image, Table, TableStyle
     from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
     from reportlab.lib.units import mm
   except ImportError, e:
     messages.pop_info(e)
     return
示例#5
0
    def on_button_print_clicked(self, widget):
        '''
    Print the book list we are viewing to pdf then open the default pdf viewer.
    TODO: Auto width columns
    This will likely be system specific
    '''
        try:
            from reportlab.lib.enums import TA_JUSTIFY, TA_LEFT
            from reportlab.lib.pagesizes import A4
            from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image, Table, TableStyle, KeepTogether
            from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
            from reportlab.lib.units import mm

        except ImportError, e:
            messages.pop_info(e)
            return
示例#6
0
    def on_button_print_clicked(self, widget):
        '''
        Print the book list we are viewing to pdf then open the default pdf viewer.
        TODO: Auto width columns
        This will likely be system specific
        '''
        try:
            from reportlab.lib.enums import TA_JUSTIFY, TA_LEFT
            from reportlab.lib.pagesizes import A4
            from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image, Table, TableStyle,KeepTogether
            from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
            from reportlab.lib.units import mm

        except ImportError as e:
            messages.pop_info(e)
            return
        filename = "booklist.pdf"
        doc = SimpleDocTemplate(filename,pagesize=A4,
                                rightMargin=10,leftMargin=20,
                                topMargin=40,bottomMargin=18)
        Story=[]
        data = []
        styles=getSampleStyleSheet()
        text = Paragraph("long line",styles['Normal'])
        styles.add(ParagraphStyle(name='Justify', alignment = TA_LEFT))
        model = self.booklist
        myiter = model.get_iter_first()
        if myiter is not None:
            while str(myiter) != 'None':
                row = []
                if myiter is not None:
                    row.append(Paragraph(model.get_value(myiter, 9), styles["Normal"]))
                    row.append(Paragraph(model.get_value(myiter, 1), styles["Normal"]))
                    row.append(Paragraph(model.get_value(myiter, 2), styles["Normal"]))
                    myiter = model.iter_next(myiter)
                data.append(row)
            t = Table(data,[100, 180, 200]) # Values are cell widths
            t.hAlign='LEFT' # Move WHOLE TABLE to the left, defaults to CENTRE
            t.setStyle(TableStyle([('VALIGN', (0, 0), (-1, -1), 'TOP')])) # Apples to CELLS
            Story.append(t)
            doc.build(Story)

        # Open a reader for viewing and printing
        if os.name == "nt": # Windoze.  Not tested, I don't have Windoze :)
            os.filestart(filename)
        elif os.name == "posix": # Linux
            os.system("/usr/bin/xdg-open " + filename)
示例#7
0
    def on_button_query_clicked(self, widget):
        '''Open the query dialog.

        '''
        from add_edit import add_edit
        ## Get a book for editing.  SHOULD be devolved to add_edit !!
        foo,iter = self.treeview.get_selection().get_selected()
        if iter:
            # Get the data
            bid = self.booklist.get_value(iter,7)
            # If it's an e-book then we do nothing
            if bid == 0:
                import messages
                messages.pop_info(_('Cannot query e-books.  Please use calibre.' ))
                return
            adder = add_edit()
            adder.populate(bid)
            adder.display()

        else:
            adder = add_edit()
            adder.display()
        self.get_book_list(1) # Repopulate book list.