Exemplo n.º 1
0
def JoinList(lst, joiners='\n', pad=0, depth=1):
    if is_str_type(joiners):
        joiners = [joiners]
    str_ = ''
    if pad and is_str_type(lst):
        return lst.center(pad)
    if not lst or not isinstance(lst, list):
        return lst
    delimit = joiners[min(len(joiners), depth) - 1]
    for val in lst:
        if str_:
            str_ += delimit
        str_ += JoinList(val, joiners, pad, depth + 1)
    return str_
Exemplo n.º 2
0
def JoinList(lst, joiners='\n', pad=0, depth=1):
    if is_str_type(joiners):
        joiners = [joiners]
    str_ = ''
    if pad and is_str_type(lst):
        return lst.center(pad)
    if not lst or not isinstance(lst, list):
        return lst
    delimit = joiners[min(len(joiners), depth) - 1]
    for val in lst:
        if str_:
            str_ += delimit
        str_ += JoinList(val, joiners, pad, depth + 1)
    return str_
Exemplo n.º 3
0
 def __init__(self, name=None, parent=None, type=None, self_dict=None, parent_dict=None, default_name=None, default_parent=None, delimiter=None):
     type = type or 'key'
     parent_dict = parent_dict or self_dict is not None and self_dict._parent_
     if parent_dict is not None:
         self._parent_dict_ = parent_dict
         if type == 'key':
             default_name = parent_dict.__class__.__name__
         else:
             base_key = getattr(parent_dict, '_key_')
             default_name = base_key.name
             default_parent = base_key.parent
         base_key = getattr(parent_dict, '_%s_' % type.lower())
         if name is None:
             name = base_key.name
             if parent is None:
                 parent = base_key.parent
         elif parent is None:
             parent = base_key.full
         if delimiter is None:
             delimiter = base_key.delimiter
     all_args = locals()
     for attr in 'name|parent|delimiter|default_name|default_parent|type|self_dict'.split('|'):
         val = all_args[attr]
         if val is None:
             continue
         if (attr == 'name' or attr == 'parent') and not is_str_type(val):
             str_val = str(val)
             if type == 'label' and str_val.isdigit():
                 val = str_val
             else:
                 raise TypeError("Cannot set %s %s from non string type <%s> %s" % (type.capitalize(), attr, val.__class__.__name__, str_val))
         setattr(self, '_%s_' % (attr), val)
Exemplo n.º 4
0
def parse_log_content(content, prefix='', **kwargs):
    if content is None:
        return '', prefix
    if not is_str_type(content):
        content = pf(content, pf_replace_newline=False, pf_encode_text=False)
    if not content:
        content = '{EMPTY STRING}'
    if content.startswith("!"):
        content = content[1:]; prefix = '\n'
    return content, prefix
Exemplo n.º 5
0
def parse_log_content(content, prefix='', **kwargs):
    if content is None:
        return '', prefix
    if not is_str_type(content):
        content = pf(content, pf_replace_newline=False, pf_encode_text=False)
    if not content:
        content = '{EMPTY STRING}'
    if content.startswith("!"):
        content = content[1:]
        prefix = '\n'
    return content, prefix
Exemplo n.º 6
0
def showInfo(message,
             title="Anknotes: Evernote Importer for Anki",
             textFormat=0,
             cancelButton=False,
             richText=False,
             minHeight=None,
             minWidth=400,
             styleSheet=None,
             convertNewLines=True):
    global imgEvernoteWebMsgBox, icoEvernoteArtcore, icoEvernoteWeb
    msgDefaultButton = QPushButton(icoEvernoteArtcore, "Okay!", mw)

    if not styleSheet:
        styleSheet = file(FILES.ANCILLARY.CSS_QMESSAGEBOX, 'r').read()

    if not is_str_type(message):
        message = str(message)

    if richText:
        textFormat = 1
        message = '<style>\n%s</style>\n\n%s' % (styleSheet, message)
    global messageBox
    messageBox = QMessageBox()
    messageBox.addButton(msgDefaultButton, QMessageBox.AcceptRole)
    if cancelButton:
        msgCancelButton = QPushButton(icoTomato, "No Thanks", mw)
        messageBox.addButton(msgCancelButton, QMessageBox.RejectRole)
    messageBox.setDefaultButton(msgDefaultButton)
    messageBox.setIconPixmap(imgEvernoteWebMsgBox)
    messageBox.setTextFormat(textFormat)

    messageBox.setWindowIcon(icoEvernoteWeb)
    messageBox.setWindowIconText("Anknotes")
    messageBox.setText(message)
    messageBox.setWindowTitle(title)
    hSpacer = QSpacerItem(minWidth, 0, QSizePolicy.Minimum,
                          QSizePolicy.Expanding)

    layout = messageBox.layout()
    """:type : QGridLayout """
    layout.addItem(hSpacer, layout.rowCount() + 1, 0, 1, layout.columnCount())
    ret = messageBox.exec_()
    if not cancelButton:
        return True
    if messageBox.clickedButton(
    ) == msgCancelButton or messageBox.clickedButton() == 0:
        return False
    return True
Exemplo n.º 7
0
        def _copy_keys_from_parent_(kw):
            def init(suffix=''):
                k0, k1 = keys[0] + suffix, keys[1] + suffix
                if k1 not in kw and k0 in kw and kw[k0]:
                    kw[k1] = kw[k0]

            # Begin _copy_keys_from_parent_():
            keys=['key', 'label']
            for k0 in keys:
                if k0 in kw and is_str_type(kw[k0]):
                    kw[k0+'_name'] = kw[k0]
                    del kw[k0]
            init(), init('_name')
            for k in keys:
                kv, kn, kp = self._get_kwargs_(kw, k, '%s_name' % k, ['%s_parent' % k, 'parent_%s' % k])
                self._my_attrs_ += '|_%s_' % k
                kv = kv or DictKey(kn, kp, k, self, self._parent_)
                setattr(self, '_%s_' % k, kv)
Exemplo n.º 8
0
 def __init__(self,
              name=None,
              parent=None,
              type=None,
              self_dict=None,
              parent_dict=None,
              default_name=None,
              default_parent=None,
              delimiter=None):
     type = type or 'key'
     parent_dict = parent_dict or self_dict is not None and self_dict._parent_
     if parent_dict is not None:
         self._parent_dict_ = parent_dict
         if type == 'key':
             default_name = parent_dict.__class__.__name__
         else:
             base_key = getattr(parent_dict, '_key_')
             default_name = base_key.name
             default_parent = base_key.parent
         base_key = getattr(parent_dict, '_%s_' % type.lower())
         if name is None:
             name = base_key.name
             if parent is None:
                 parent = base_key.parent
         elif parent is None:
             parent = base_key.full
         if delimiter is None:
             delimiter = base_key.delimiter
     all_args = locals()
     for attr in 'name|parent|delimiter|default_name|default_parent|type|self_dict'.split(
             '|'):
         val = all_args[attr]
         if val is None:
             continue
         if (attr == 'name' or attr == 'parent') and not is_str_type(val):
             str_val = str(val)
             if type == 'label' and str_val.isdigit():
                 val = str_val
             else:
                 raise TypeError(
                     "Cannot set %s %s from non string type <%s> %s" %
                     (type.capitalize(), attr, val.__class__.__name__,
                      str_val))
         setattr(self, '_%s_' % (attr), val)
Exemplo n.º 9
0
        def _copy_keys_from_parent_(kw):
            def init(suffix=''):
                k0, k1 = keys[0] + suffix, keys[1] + suffix
                if k1 not in kw and k0 in kw and kw[k0]:
                    kw[k1] = kw[k0]

            # Begin _copy_keys_from_parent_():
            keys = ['key', 'label']
            for k0 in keys:
                if k0 in kw and is_str_type(kw[k0]):
                    kw[k0 + '_name'] = kw[k0]
                    del kw[k0]
            init(), init('_name')
            for k in keys:
                kv, kn, kp = self._get_kwargs_(
                    kw, k, '%s_name' % k,
                    ['%s_parent' % k, 'parent_%s' % k])
                self._my_attrs_ += '|_%s_' % k
                kv = kv or DictKey(kn, kp, k, self, self._parent_)
                setattr(self, '_%s_' % k, kv)
Exemplo n.º 10
0
def showInfo(message, title="Anknotes: Evernote Importer for Anki", textFormat=0, cancelButton=False, richText=False,
             minHeight=None, minWidth=400, styleSheet=None, convertNewLines=True):
    global imgEvernoteWebMsgBox, icoEvernoteArtcore, icoEvernoteWeb
    msgDefaultButton = QPushButton(icoEvernoteArtcore, "Okay!", mw)

    if not styleSheet:
        styleSheet = file(FILES.ANCILLARY.CSS_QMESSAGEBOX, 'r').read()

    if not is_str_type(message):
        message = str(message)

    if richText:
        textFormat = 1
        message = '<style>\n%s</style>\n\n%s' % (styleSheet, message)
    global messageBox
    messageBox = QMessageBox()
    messageBox.addButton(msgDefaultButton, QMessageBox.AcceptRole)
    if cancelButton:
        msgCancelButton = QPushButton(icoTomato, "No Thanks", mw)
        messageBox.addButton(msgCancelButton, QMessageBox.RejectRole)
    messageBox.setDefaultButton(msgDefaultButton)
    messageBox.setIconPixmap(imgEvernoteWebMsgBox)
    messageBox.setTextFormat(textFormat)

    messageBox.setWindowIcon(icoEvernoteWeb)
    messageBox.setWindowIconText("Anknotes")
    messageBox.setText(message)
    messageBox.setWindowTitle(title)
    hSpacer = QSpacerItem(minWidth, 0, QSizePolicy.Minimum, QSizePolicy.Expanding)

    layout = messageBox.layout()
    """:type : QGridLayout """
    layout.addItem(hSpacer, layout.rowCount() + 1, 0, 1, layout.columnCount())
    ret = messageBox.exec_()
    if not cancelButton:
        return True
    if messageBox.clickedButton() == msgCancelButton or messageBox.clickedButton() == 0:
        return False
    return True
Exemplo n.º 11
0
 def process_tags(self):
     if is_str_type(self.TagNames):
         self.TagNames = self.TagNames[1:-1].split(',')
     if is_str_type(self.TagGuids):
         self.TagGuids = self.TagGuids[1:-1].split(',')
Exemplo n.º 12
0
def obj2log_simple(content):
    if not is_str_type(content):
        content = str(content)
    return content
Exemplo n.º 13
0
    def titleObjectToString(title, recursion=0):
        """
        :param title: Title in string, unicode, dict, sqlite, TOCKey or NoteTitle formats. Note objects are also parseable
        :type title: None | str | unicode | dict[str,str] | sqlite.Row | EvernoteNoteTitle
        :return: string Title
        :rtype: str
        """
        # if recursion == 0:
        #     str_ = str_safe(title)
        #     try: log(u'\n---------------------------------%s' % str_, 'tOTS', timestamp=False)
        #     except Exception: log(u'\n---------------------------------%s' % '[UNABLE TO DISPLAY TITLE]', 'tOTS', timestamp=False)
        #     pass

        if title is None:
            # log('NoneType', 'tOTS', timestamp=False)
            return ""
        if is_str_type(title):
            # log('str/unicode', 'tOTS', timestamp=False)
            return title
        if hasattr(title, 'FullTitle'):
            # log('FullTitle', 'tOTS', timestamp=False)
            # noinspection PyCallingNonCallable
            title = title.FullTitle() if callable(title.FullTitle) else title.FullTitle
        elif hasattr(title, 'Title'):
            # log('Title', 'tOTS', timestamp=False)
            title = title.Title() if callable(title.Title) else title.Title
        elif hasattr(title, 'title'):
            # log('title', 'tOTS', timestamp=False)
            title = title.title() if callable(title.title) else title.title
        else:
            try:
                if hasattr(title, 'keys'):
                    keys = title.keys() if callable(title.keys) else title.keys
                    if 'title' in keys:
                        # log('keys[title]', 'tOTS', timestamp=False)
                        title = title['title']
                    elif 'Title' in keys:
                        # log('keys[Title]', 'tOTS', timestamp=False)
                        title = title['Title']
                    elif not keys:
                        # log('keys[empty dict?]', 'tOTS', timestamp=False)
                        raise
                    else:
                        log('keys[Unknown Attr]: %s' % str(keys), 'tOTS', timestamp=False)
                        return ""
                elif 'title' in title:
                    # log('[title]', 'tOTS', timestamp=False)
                    title = title['title']
                elif 'Title' in title:
                    # log('[Title]', 'tOTS', timestamp=False)
                    title = title['Title']
                elif FIELDS.TITLE in title:
                    # log('[FIELDS.TITLE]', 'tOTS', timestamp=False)
                    title = title[FIELDS.TITLE]
                else:
                    # log('Nothing Found', 'tOTS', timestamp=False)
                    # log(title)
                    # log(title.keys())
                    return title
            except Exception:
                log('except', 'tOTS', timestamp=False)
                log(title, 'toTS', timestamp=False)
                raise LookupError
        recursion += 1
        # log(u'recursing %d: ' % recursion, 'tOTS', timestamp=False)
        return EvernoteNoteTitle.titleObjectToString(title, recursion)
Exemplo n.º 14
0
 def process_tags(self):
     if is_str_type(self.TagNames):
         self.TagNames = self.TagNames[1:-1].split(',')
     if is_str_type(self.TagGuids):
         self.TagGuids = self.TagGuids[1:-1].split(',')
Exemplo n.º 15
0
def obj2log_simple(content):
    if not is_str_type(content):
        content = str(content)
    return content
Exemplo n.º 16
0
    def titleObjectToString(title, recursion=0):
        """
        :param title: Title in string, unicode, dict, sqlite, TOCKey or NoteTitle formats. Note objects are also parseable
        :type title: None | str | unicode | dict[str,str] | sqlite.Row | EvernoteNoteTitle
        :return: string Title
        :rtype: str
        """
        # if recursion == 0:
        #     str_ = str_safe(title)
        #     try: log(u'\n---------------------------------%s' % str_, 'tOTS', timestamp=False)
        #     except Exception: log(u'\n---------------------------------%s' % '[UNABLE TO DISPLAY TITLE]', 'tOTS', timestamp=False)
        #     pass

        if title is None:
            # log('NoneType', 'tOTS', timestamp=False)
            return ""
        if is_str_type(title):
            # log('str/unicode', 'tOTS', timestamp=False)
            return title
        if hasattr(title, 'FullTitle'):
            # log('FullTitle', 'tOTS', timestamp=False)
            # noinspection PyCallingNonCallable
            title = title.FullTitle() if callable(
                title.FullTitle) else title.FullTitle
        elif hasattr(title, 'Title'):
            # log('Title', 'tOTS', timestamp=False)
            title = title.Title() if callable(title.Title) else title.Title
        elif hasattr(title, 'title'):
            # log('title', 'tOTS', timestamp=False)
            title = title.title() if callable(title.title) else title.title
        else:
            try:
                if hasattr(title, 'keys'):
                    keys = title.keys() if callable(title.keys) else title.keys
                    if 'title' in keys:
                        # log('keys[title]', 'tOTS', timestamp=False)
                        title = title['title']
                    elif 'Title' in keys:
                        # log('keys[Title]', 'tOTS', timestamp=False)
                        title = title['Title']
                    elif not keys:
                        # log('keys[empty dict?]', 'tOTS', timestamp=False)
                        raise
                    else:
                        log('keys[Unknown Attr]: %s' % str(keys),
                            'tOTS',
                            timestamp=False)
                        return ""
                elif 'title' in title:
                    # log('[title]', 'tOTS', timestamp=False)
                    title = title['title']
                elif 'Title' in title:
                    # log('[Title]', 'tOTS', timestamp=False)
                    title = title['Title']
                elif FIELDS.TITLE in title:
                    # log('[FIELDS.TITLE]', 'tOTS', timestamp=False)
                    title = title[FIELDS.TITLE]
                else:
                    # log('Nothing Found', 'tOTS', timestamp=False)
                    # log(title)
                    # log(title.keys())
                    return title
            except Exception:
                log('except', 'tOTS', timestamp=False)
                log(title, 'toTS', timestamp=False)
                raise LookupError
        recursion += 1
        # log(u'recursing %d: ' % recursion, 'tOTS', timestamp=False)
        return EvernoteNoteTitle.titleObjectToString(title, recursion)