home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- __license__ = 'GPL v3'
- __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
- import os
- from collections import namedtuple
- from calibre.customize import Plugin
- from calibre.constants import iswindows
-
- class DevicePlugin(Plugin):
- type = _('Device Interface')
- FORMATS = [
- 'lrf',
- 'rtf',
- 'pdf',
- 'txt']
- VENDOR_ID = 0
- PRODUCT_ID = 0
- BCD = None
- THUMBNAIL_HEIGHT = 68
- CAN_SET_METADATA = True
- path_sep = os.sep
- icon = I('reader.svg')
- UserAnnotation = namedtuple('Annotation', 'type, value')
- OPEN_FEEDBACK_MESSAGE = None
- VIRTUAL_BOOK_EXTENSIONS = frozenset([])
-
- def get_gui_name(cls):
- if hasattr(cls, 'gui_name'):
- return cls.gui_name
- if hasattr(cls, '__name__'):
- return cls.__name__
- return cls.name
-
- get_gui_name = classmethod(get_gui_name)
-
- def test_bcd_windows(self, device_id, bcd):
- if bcd is None or len(bcd) == 0:
- return True
- for c in bcd:
- rev = ('rev_%4.4x' % c).replace('a', ':')
- if rev in device_id:
- return True
-
- return False
-
-
- def print_usb_device_info(self, info):
-
- try:
- print '\t', repr(info)
- except:
- import traceback
- traceback.print_exc()
-
-
-
- def is_usb_connected_windows(self, devices_on_system, debug = False, only_presence = False):
-
- def id_iterator():
- if hasattr(self.VENDOR_ID, 'keys'):
- for vid in self.VENDOR_ID:
- vend = self.VENDOR_ID[vid]
- for pid in vend:
- bcd = vend[pid]
- yield (vid, pid, bcd)
-
-
- elif hasattr(self.VENDOR_ID, '__len__'):
- pass
-
- vendors = [
- self.VENDOR_ID]
- products = None if hasattr(self.PRODUCT_ID, '__len__') else [
- self.PRODUCT_ID]
- for vid in vendors:
- for pid in products:
- yield (vid, pid, self.BCD)
-
-
-
- for vendor_id, product_id, bcd in id_iterator():
- vid = 'vid_%4.4x' % vendor_id
- pid = 'pid_%4.4x' % product_id
- vidd = 'vid_%i' % vendor_id
- pidd = 'pid_%i' % product_id
- for device_id in devices_on_system:
- if vid in device_id or vidd in device_id:
- if (pid in device_id or pidd in device_id) and self.test_bcd_windows(device_id, bcd):
- if debug:
- self.print_usb_device_info(device_id)
-
- if only_presence or self.can_handle_windows(device_id, debug = debug):
- return True
- continue
- self.can_handle_windows(device_id, debug = debug)
-
-
- return False
-
-
- def test_bcd(self, bcdDevice, bcd):
- if bcd is None or len(bcd) == 0:
- return True
- for c in bcd:
- if c == bcdDevice:
- return True
-
- return False
-
-
- def is_usb_connected(self, devices_on_system, debug = False, only_presence = False):
- if iswindows:
- return (self.is_usb_connected_windows(devices_on_system, debug = debug, only_presence = only_presence), None)
- vendors_on_system = []([ x[0] for x in devices_on_system ])
- vendors = [] if hasattr(self.VENDOR_ID, '__len__') else [
- self.VENDOR_ID]
- if hasattr(self.VENDOR_ID, 'keys'):
- products = []
- for ven in self.VENDOR_ID:
- products.extend(self.VENDOR_ID[ven].keys())
-
- elif hasattr(self.PRODUCT_ID, '__len__'):
- pass
-
- products = [
- self.PRODUCT_ID]
- for vid in vendors:
- if vid in vendors_on_system:
- for dev in devices_on_system:
- (cvid, pid, bcd) = dev[:3]
- if cvid == vid:
- if pid in products:
- if hasattr(self.VENDOR_ID, 'keys'):
- cbcd = self.VENDOR_ID[vid][pid]
- else:
- cbcd = self.BCD
- if self.test_bcd(bcd, cbcd):
- if debug:
- self.print_usb_device_info(dev)
-
- if self.can_handle(dev, debug = debug):
- return (True, dev)
-
-
- pid in products
-
- iswindows
-
- return (False, None)
-
-
- def reset(self, key = '-1', log_packets = False, report_progress = None, detected_device = None):
- raise NotImplementedError()
-
-
- def can_handle_windows(self, device_id, debug = False):
- return True
-
-
- def can_handle(self, device_info, debug = False):
- return True
-
-
- def open(self):
- raise NotImplementedError()
-
-
- def eject(self):
- raise NotImplementedError()
-
-
- def post_yank_cleanup(self):
- raise NotImplementedError()
-
-
- def set_progress_reporter(self, report_progress):
- raise NotImplementedError()
-
-
- def get_device_information(self, end_session = True):
- raise NotImplementedError()
-
-
- def card_prefix(self, end_session = True):
- raise NotImplementedError()
-
-
- def total_space(self, end_session = True):
- raise NotImplementedError()
-
-
- def free_space(self, end_session = True):
- raise NotImplementedError()
-
-
- def books(self, oncard = None, end_session = True):
- raise NotImplementedError()
-
-
- def upload_books(self, files, names, on_card = None, end_session = True, metadata = None):
- raise NotImplementedError()
-
-
- def add_books_to_metadata(cls, locations, metadata, booklists):
- raise NotImplementedError
-
- add_books_to_metadata = classmethod(add_books_to_metadata)
-
- def delete_books(self, paths, end_session = True):
- raise NotImplementedError()
-
-
- def remove_books_from_metadata(cls, paths, booklists):
- raise NotImplementedError()
-
- remove_books_from_metadata = classmethod(remove_books_from_metadata)
-
- def sync_booklists(self, booklists, end_session = True):
- raise NotImplementedError()
-
-
- def get_file(self, path, outfile, end_session = True):
- raise NotImplementedError()
-
-
- def config_widget(cls):
- raise NotImplementedError()
-
- config_widget = classmethod(config_widget)
-
- def save_settings(cls, settings_widget):
- raise NotImplementedError()
-
- save_settings = classmethod(save_settings)
-
- def settings(cls):
- raise NotImplementedError()
-
- settings = classmethod(settings)
-
-
- class BookList(list):
- __getslice__ = None
- __setslice__ = None
-
- def __init__(self, oncard, prefix, settings):
- pass
-
-
- def supports_collections(self):
- raise NotImplementedError()
-
-
- def add_book(self, book, replace_metadata):
- raise NotImplementedError()
-
-
- def remove_book(self, book):
- raise NotImplementedError()
-
-
- def get_collections(self, collection_attributes):
- raise NotImplementedError()
-
-
-