| 52 | | make_option('-l', '--key-levels-per-line', type = 'int', metavar = 'int', default = 3, help = 'default = %default') |
| | 52 | make_option('-l', '--key-levels-per-line', type = 'int', metavar = 'int', default = 3, help = 'default = %default'), |
| | 53 | make_option('-L', '--no-level-disorder',dest = 'level_disorder', action = 'store_false', default = True, help = 'Level 4 and 5 are not swapped') |
| 82 | | for row in [row[:key_panel.index(box_drawings[3])] for row in key_panel.splitlines()[1:]]: # omit beginning and ending box drawings |
| 83 | | if row[0] in (box_drawings[12], box_drawings[14]): # if row begins with ├ or │, |
| 84 | | return_model.append([]); return_view.append([]) # create key row list |
| 85 | | key_lines = [] |
| | 83 | for row in [row[:key_panel.index(box_drawings[3])] for row in key_panel.splitlines()[1:]]: # omit the first line and from closing box drawings |
| | 84 | if row[0] not in (box_drawings[12], box_drawings[14]): # if row begins not with “├” or “└”: |
| | 85 | key_lines = []; key_row.append(row) # push line (sic) |
| | 86 | else: |
| | 87 | return_model.append([]); return_view.append([]) # create key row lists |
| 89 | | return_model[key_row_index].append([]); key_lines.append([]); return_view[key_row_index].append([]) # create key list |
| 90 | | if len(key) == key_width: # if default key, parse line levels: |
| 91 | | if options.key_level_width == 1 and key_width == 7: # if Neo 2 keypad key: |
| 92 | | if key[1] == key[5] == options.key_level_delimiter: |
| 93 | | key_lines[key_index].extend([key[0], key[2:5], key[6]]) |
| 94 | | elif key[::2] == options.key_level_delimiter * 4: |
| 95 | | key_lines[key_index].extend(key[1::2]) |
| | 91 | if key_width == 5 or key_width == 7: |
| | 92 | key_lines.append([]) |
| | 93 | return_model[key_row_index].append([]); return_view[key_row_index].append([]) # create key lists |
| | 94 | if len(key) == key_width: # if standard key, parse line levels: |
| | 95 | if key_width == options.key_level_width * options.key_levels_per_line + (options.key_levels_per_line - 1) * options.key_level_delimiter_width and key[1::options.key_level_width + options.key_level_delimiter_width] == options.key_level_delimiter * (options.key_levels_per_line - 1): # else if standard key: |
| | 96 | key_lines[key_index].append([key[key_level_start:key_level_start + options.key_level_width] for key_level_start in range(0, len(key), options.key_level_width + options.key_level_delimiter_width)]) |
| | 97 | elif key_width == options.key_level_width: # else if standard miniature key: |
| | 98 | return_model[key_row_index][key_index].append(key) |
| | 99 | elif options.key_level_width == 1 and key_width == 7: # if Neo 2 keypad key: |
| | 100 | if key[1] == key[5] == options.key_level_delimiter: # if long middle line level: |
| | 101 | key_lines[key_index].append([key[0], key[2:5], key[6]]) |
| | 102 | elif key[::2] == options.key_level_delimiter * 4: # else if spaced levels: |
| | 103 | key_lines[key_index].append(list(key[1::2])) |
| 107 | | if key_lines != []: |
| 108 | | for key_level_index, level in enumerate(key_lines[0]): |
| 109 | | for key_line_index, line_index in enumerate(key_lines): |
| 110 | | return_model[key_row_index][key_index].append(key_lines[key_line_index][key_level_index]) |
| | 111 | if key_lines != []: |
| | 112 | for key_index, key in enumerate(key_lines): #sort key levels: |
| | 113 | if key_lines[key_index] != []: |
| | 114 | for key_level_index, level in enumerate(key_lines[key_index][0]): |
| | 115 | for key_line_index, line_index in enumerate(key_lines[key_index]): |
| | 116 | if len(key_lines[key_index]) != 0: |
| | 117 | return_model[key_row_index][key_index].append(key_lines[key_index][key_line_index][key_level_index]) |
| | 118 | if options.level_disorder and len(return_model[key_row_index][key_index]) == 6: |
| | 119 | return_model[key_row_index][key_index].insert(3, return_model[key_row_index][key_index].pop(4)) |