Skip to content
Snippets Groups Projects
Commit 8f2fd7e2 authored by lijenstina's avatar lijenstina
Browse files

Is key Free: Add export shortcuts into a text block

Bump version to 1.1.1
Some style tweaks
Use register_class instead of register_module
Add operator to export all shortcuts into a text block
parent d20b2acf
No related branches found
No related tags found
No related merge requests found
......@@ -21,33 +21,33 @@
bl_info = {
"name": "Is key Free",
"author": "Antonio Vazquez (antonioya)",
"version": (1, 0, 2),
"version": (1, 1, 1),
"blender": (2, 6, 9),
"location": "Text Editor > Props Shelf (Ctrl/t > IsKeyFree Tools",
"description": "Find free shortcuts and inform of used keys",
"description": "Find free shortcuts, inform about used and print a key list",
"wiki_url": "https://wiki.blender.org/index.php/Extensions:2.6"
"/Py/Scripts/Development/IsKeyFree",
"category": "Development"}
"category": "Development"
}
import bpy
from bpy.props import (
StringProperty,
BoolProperty,
EnumProperty,
PointerProperty,
)
BoolProperty,
EnumProperty,
StringProperty,
PointerProperty,
)
from bpy.types import (
Operator,
Panel,
PropertyGroup,
)
Operator,
Panel,
PropertyGroup,
)
# ------------------------------------------------------
# Class to find keymaps
# ------------------------------------------------------
class MyChecker():
lastfind = None
lastkey = None
......@@ -191,16 +191,11 @@ mychecker = MyChecker() # Global class handler
# ------------------------------------------------------
# Button: Class for search button
# ------------------------------------------------------
class RunActionCheck(Operator):
bl_idname = "iskeyfree.action_check"
bl_label = ""
bl_description = "Verify if the selected shortcut is free"
# ------------------------------
# Execute
# ------------------------------
# noinspection PyUnusedLocal
def execute(self, context):
scene = context.scene.is_keyfree
......@@ -239,6 +234,8 @@ class UIControlPanel(Panel):
row = layout.row()
row.prop(scene, "numpad")
layout.operator("iskeyfree.run_export_keys", icon="FILE_TEXT")
global mychecker
mylist = mychecker.getlist()
oldcontext = None
......@@ -270,8 +267,6 @@ class UIControlPanel(Panel):
# ------------------------------------------------------
# Update key (special values) event handler
# ------------------------------------------------------
# noinspection PyUnusedLocal
def update_data(self, context):
scene = context.scene.is_keyfree
......@@ -281,230 +276,320 @@ def update_data(self, context):
class IskeyFreeProperties(PropertyGroup):
data = StringProperty(
name="Key", maxlen=32,
description="Shortcut to verify"
)
name="Key", maxlen=32,
description="Shortcut to verify"
)
use_crtl = BoolProperty(
name="Ctrl",
description="Ctrl key used in shortcut",
default=False
)
name="Ctrl",
description="Ctrl key used in shortcut",
default=False
)
use_alt = BoolProperty(
name="Alt",
description="Alt key used in shortcut",
default=False
)
name="Alt",
description="Alt key used in shortcut",
default=False
)
use_shift = BoolProperty(
name="Shift",
description="Shift key used in shortcut",
default=False
)
name="Shift",
description="Shift key used in shortcut",
default=False
)
use_oskey = BoolProperty(
name="OsKey",
description="Operating system key used in shortcut",
default=False
)
name="OsKey",
description="Operating system key used in shortcut",
default=False
)
numpad = EnumProperty(
items=(('NONE', "Select key", ""),
("LEFTMOUSE", "LEFTMOUSE", ""),
("MIDDLEMOUSE", "MIDDLEMOUSE", ""),
("RIGHTMOUSE", "RIGHTMOUSE", ""),
("BUTTON4MOUSE", "BUTTON4MOUSE", ""),
("BUTTON5MOUSE", "BUTTON5MOUSE", ""),
("BUTTON6MOUSE", "BUTTON6MOUSE", ""),
("BUTTON7MOUSE", "BUTTON7MOUSE", ""),
("ACTIONMOUSE", "ACTIONMOUSE", ""),
("SELECTMOUSE", "SELECTMOUSE", ""),
("MOUSEMOVE", "MOUSEMOVE", ""),
("INBETWEEN_MOUSEMOVE", "INBETWEEN_MOUSEMOVE", ""),
("TRACKPADPAN", "TRACKPADPAN", ""),
("TRACKPADZOOM", "TRACKPADZOOM", ""),
("MOUSEROTATE", "MOUSEROTATE", ""),
("WHEELUPMOUSE", "WHEELUPMOUSE", ""),
("WHEELDOWNMOUSE", "WHEELDOWNMOUSE", ""),
("WHEELINMOUSE", "WHEELINMOUSE", ""),
("WHEELOUTMOUSE", "WHEELOUTMOUSE", ""),
("EVT_TWEAK_L", "EVT_TWEAK_L", ""),
("EVT_TWEAK_M", "EVT_TWEAK_M", ""),
("EVT_TWEAK_R", "EVT_TWEAK_R", ""),
("EVT_TWEAK_A", "EVT_TWEAK_A", ""),
("EVT_TWEAK_S", "EVT_TWEAK_S", ""),
("A", "A", ""),
("B", "B", ""),
("C", "C", ""),
("D", "D", ""),
("E", "E", ""),
("F", "F", ""),
("G", "G", ""),
("H", "H", ""),
("I", "I", ""),
("J", "J", ""),
("K", "K", ""),
("L", "L", ""),
("M", "M", ""),
("N", "N", ""),
("O", "O", ""),
("P", "P", ""),
("Q", "Q", ""),
("R", "R", ""),
("S", "S", ""),
("T", "T", ""),
("U", "U", ""),
("V", "V", ""),
("W", "W", ""),
("X", "X", ""),
("Y", "Y", ""),
("Z", "Z", ""),
("ZERO", "ZERO", ""),
("ONE", "ONE", ""),
("TWO", "TWO", ""),
("THREE", "THREE", ""),
("FOUR", "FOUR", ""),
("FIVE", "FIVE", ""),
("SIX", "SIX", ""),
("SEVEN", "SEVEN", ""),
("EIGHT", "EIGHT", ""),
("NINE", "NINE", ""),
("LEFT_CTRL", "LEFT_CTRL", ""),
("LEFT_ALT", "LEFT_ALT", ""),
("LEFT_SHIFT", "LEFT_SHIFT", ""),
("RIGHT_ALT", "RIGHT_ALT", ""),
("RIGHT_CTRL", "RIGHT_CTRL", ""),
("RIGHT_SHIFT", "RIGHT_SHIFT", ""),
("OSKEY", "OSKEY", ""),
("GRLESS", "GRLESS", ""),
("ESC", "ESC", ""),
("TAB", "TAB", ""),
("RET", "RET", ""),
("SPACE", "SPACE", ""),
("LINE_FEED", "LINE_FEED", ""),
("BACK_SPACE", "BACK_SPACE", ""),
("DEL", "DEL", ""),
("SEMI_COLON", "SEMI_COLON", ""),
("PERIOD", "PERIOD", ""),
("COMMA", "COMMA", ""),
("QUOTE", "QUOTE", ""),
("ACCENT_GRAVE", "ACCENT_GRAVE", ""),
("MINUS", "MINUS", ""),
("SLASH", "SLASH", ""),
("BACK_SLASH", "BACK_SLASH", ""),
("EQUAL", "EQUAL", ""),
("LEFT_BRACKET", "LEFT_BRACKET", ""),
("RIGHT_BRACKET", "RIGHT_BRACKET", ""),
("LEFT_ARROW", "LEFT_ARROW", ""),
("DOWN_ARROW", "DOWN_ARROW", ""),
("RIGHT_ARROW", "RIGHT_ARROW", ""),
("UP_ARROW", "UP_ARROW", ""),
("NUMPAD_1", "NUMPAD_1", ""),
("NUMPAD_2", "NUMPAD_2", ""),
("NUMPAD_3", "NUMPAD_3", ""),
("NUMPAD_4", "NUMPAD_4", ""),
("NUMPAD_5", "NUMPAD_5", ""),
("NUMPAD_6", "NUMPAD_6", ""),
("NUMPAD_7", "NUMPAD_7", ""),
("NUMPAD_8", "NUMPAD_8", ""),
("NUMPAD_9", "NUMPAD_9", ""),
("NUMPAD_0", "NUMPAD_0", ""),
("NUMPAD_PERIOD", "NUMPAD_PERIOD", ""),
("NUMPAD_SLASH", "NUMPAD_SLASH", ""),
("NUMPAD_ASTERIX", "NUMPAD_ASTERIX", ""),
("NUMPAD_MINUS", "NUMPAD_MINUS", ""),
("NUMPAD_ENTER", "NUMPAD_ENTER", ""),
("NUMPAD_PLUS", "NUMPAD_PLUS", ""),
("F1", "F1", ""),
("F2", "F2", ""),
("F3", "F3", ""),
("F4", "F4", ""),
("F5", "F5", ""),
("F6", "F6", ""),
("F7", "F7", ""),
("F8", "F8", ""),
("F9", "F9", ""),
("F10", "F10", ""),
("F11", "F11", ""),
("F12", "F12", ""),
("F13", "F13", ""),
("F14", "F14", ""),
("F15", "F15", ""),
("F16", "F16", ""),
("F17", "F17", ""),
("F18", "F18", ""),
("F19", "F19", ""),
("PAUSE", "PAUSE", ""),
("INSERT", "INSERT", ""),
("HOME", "HOME", ""),
("PAGE_UP", "PAGE_UP", ""),
("PAGE_DOWN", "PAGE_DOWN", ""),
("END", "END", ""),
("MEDIA_PLAY", "MEDIA_PLAY", ""),
("MEDIA_STOP", "MEDIA_STOP", ""),
("MEDIA_FIRST", "MEDIA_FIRST", ""),
("MEDIA_LAST", "MEDIA_LAST", ""),
("TEXTINPUT", "TEXTINPUT", ""),
("WINDOW_DEACTIVATE", "WINDOW_DEACTIVATE", ""),
("TIMER", "TIMER", ""),
("TIMER0", "TIMER0", ""),
("TIMER1", "TIMER1", ""),
("TIMER2", "TIMER2", ""),
("TIMER_JOBS", "TIMER_JOBS", ""),
("TIMER_AUTOSAVE", "TIMER_AUTOSAVE", ""),
("TIMER_REPORT", "TIMER_REPORT", ""),
("TIMERREGION", "TIMERREGION", ""),
("NDOF_MOTION", "NDOF_MOTION", ""),
("NDOF_BUTTON_MENU", "NDOF_BUTTON_MENU", ""),
("NDOF_BUTTON_FIT", "NDOF_BUTTON_FIT", ""),
("NDOF_BUTTON_TOP", "NDOF_BUTTON_TOP", ""),
("NDOF_BUTTON_BOTTOM", "NDOF_BUTTON_BOTTOM", ""),
("NDOF_BUTTON_LEFT", "NDOF_BUTTON_LEFT", ""),
("NDOF_BUTTON_RIGHT", "NDOF_BUTTON_RIGHT", ""),
("NDOF_BUTTON_FRONT", "NDOF_BUTTON_FRONT", ""),
("NDOF_BUTTON_BACK", "NDOF_BUTTON_BACK", ""),
("NDOF_BUTTON_ISO1", "NDOF_BUTTON_ISO1", ""),
("NDOF_BUTTON_ISO2", "NDOF_BUTTON_ISO2", ""),
("NDOF_BUTTON_ROLL_CW", "NDOF_BUTTON_ROLL_CW", ""),
("NDOF_BUTTON_ROLL_CCW", "NDOF_BUTTON_ROLL_CCW", ""),
("NDOF_BUTTON_SPIN_CW", "NDOF_BUTTON_SPIN_CW", ""),
("NDOF_BUTTON_SPIN_CCW", "NDOF_BUTTON_SPIN_CCW", ""),
("NDOF_BUTTON_TILT_CW", "NDOF_BUTTON_TILT_CW", ""),
("NDOF_BUTTON_TILT_CCW", "NDOF_BUTTON_TILT_CCW", ""),
("NDOF_BUTTON_ROTATE", "NDOF_BUTTON_ROTATE", ""),
("NDOF_BUTTON_PANZOOM", "NDOF_BUTTON_PANZOOM", ""),
("NDOF_BUTTON_DOMINANT", "NDOF_BUTTON_DOMINANT", ""),
("NDOF_BUTTON_PLUS", "NDOF_BUTTON_PLUS", ""),
("NDOF_BUTTON_MINUS", "NDOF_BUTTON_MINUS", ""),
("NDOF_BUTTON_ESC", "NDOF_BUTTON_ESC", ""),
("NDOF_BUTTON_ALT", "NDOF_BUTTON_ALT", ""),
("NDOF_BUTTON_SHIFT", "NDOF_BUTTON_SHIFT", ""),
("NDOF_BUTTON_CTRL", "NDOF_BUTTON_CTRL", ""),
("NDOF_BUTTON_1", "NDOF_BUTTON_1", ""),
("NDOF_BUTTON_2", "NDOF_BUTTON_2", ""),
("NDOF_BUTTON_3", "NDOF_BUTTON_3", ""),
("NDOF_BUTTON_4", "NDOF_BUTTON_4", ""),
("NDOF_BUTTON_5", "NDOF_BUTTON_5", ""),
("NDOF_BUTTON_6", "NDOF_BUTTON_6", ""),
("NDOF_BUTTON_7", "NDOF_BUTTON_7", ""),
("NDOF_BUTTON_8", "NDOF_BUTTON_8", ""),
("NDOF_BUTTON_9", "NDOF_BUTTON_9", ""),
("NDOF_BUTTON_10", "NDOF_BUTTON_10", ""),
("NDOF_BUTTON_A", "NDOF_BUTTON_A", ""),
("NDOF_BUTTON_B", "NDOF_BUTTON_B", ""),
("NDOF_BUTTON_C", "NDOF_BUTTON_C", "")
),
name="Quick Type",
description="Enter key code in find text",
update=update_data
)
items=(
('NONE', "Select key", ""),
("LEFTMOUSE", "LEFTMOUSE", ""),
("MIDDLEMOUSE", "MIDDLEMOUSE", ""),
("RIGHTMOUSE", "RIGHTMOUSE", ""),
("BUTTON4MOUSE", "BUTTON4MOUSE", ""),
("BUTTON5MOUSE", "BUTTON5MOUSE", ""),
("BUTTON6MOUSE", "BUTTON6MOUSE", ""),
("BUTTON7MOUSE", "BUTTON7MOUSE", ""),
("ACTIONMOUSE", "ACTIONMOUSE", ""),
("SELECTMOUSE", "SELECTMOUSE", ""),
("MOUSEMOVE", "MOUSEMOVE", ""),
("INBETWEEN_MOUSEMOVE", "INBETWEEN_MOUSEMOVE", ""),
("TRACKPADPAN", "TRACKPADPAN", ""),
("TRACKPADZOOM", "TRACKPADZOOM", ""),
("MOUSEROTATE", "MOUSEROTATE", ""),
("WHEELUPMOUSE", "WHEELUPMOUSE", ""),
("WHEELDOWNMOUSE", "WHEELDOWNMOUSE", ""),
("WHEELINMOUSE", "WHEELINMOUSE", ""),
("WHEELOUTMOUSE", "WHEELOUTMOUSE", ""),
("EVT_TWEAK_L", "EVT_TWEAK_L", ""),
("EVT_TWEAK_M", "EVT_TWEAK_M", ""),
("EVT_TWEAK_R", "EVT_TWEAK_R", ""),
("EVT_TWEAK_A", "EVT_TWEAK_A", ""),
("EVT_TWEAK_S", "EVT_TWEAK_S", ""),
("A", "A", ""),
("B", "B", ""),
("C", "C", ""),
("D", "D", ""),
("E", "E", ""),
("F", "F", ""),
("G", "G", ""),
("H", "H", ""),
("I", "I", ""),
("J", "J", ""),
("K", "K", ""),
("L", "L", ""),
("M", "M", ""),
("N", "N", ""),
("O", "O", ""),
("P", "P", ""),
("Q", "Q", ""),
("R", "R", ""),
("S", "S", ""),
("T", "T", ""),
("U", "U", ""),
("V", "V", ""),
("W", "W", ""),
("X", "X", ""),
("Y", "Y", ""),
("Z", "Z", ""),
("ZERO", "ZERO", ""),
("ONE", "ONE", ""),
("TWO", "TWO", ""),
("THREE", "THREE", ""),
("FOUR", "FOUR", ""),
("FIVE", "FIVE", ""),
("SIX", "SIX", ""),
("SEVEN", "SEVEN", ""),
("EIGHT", "EIGHT", ""),
("NINE", "NINE", ""),
("LEFT_CTRL", "LEFT_CTRL", ""),
("LEFT_ALT", "LEFT_ALT", ""),
("LEFT_SHIFT", "LEFT_SHIFT", ""),
("RIGHT_ALT", "RIGHT_ALT", ""),
("RIGHT_CTRL", "RIGHT_CTRL", ""),
("RIGHT_SHIFT", "RIGHT_SHIFT", ""),
("OSKEY", "OSKEY", ""),
("GRLESS", "GRLESS", ""),
("ESC", "ESC", ""),
("TAB", "TAB", ""),
("RET", "RET", ""),
("SPACE", "SPACE", ""),
("LINE_FEED", "LINE_FEED", ""),
("BACK_SPACE", "BACK_SPACE", ""),
("DEL", "DEL", ""),
("SEMI_COLON", "SEMI_COLON", ""),
("PERIOD", "PERIOD", ""),
("COMMA", "COMMA", ""),
("QUOTE", "QUOTE", ""),
("ACCENT_GRAVE", "ACCENT_GRAVE", ""),
("MINUS", "MINUS", ""),
("SLASH", "SLASH", ""),
("BACK_SLASH", "BACK_SLASH", ""),
("EQUAL", "EQUAL", ""),
("LEFT_BRACKET", "LEFT_BRACKET", ""),
("RIGHT_BRACKET", "RIGHT_BRACKET", ""),
("LEFT_ARROW", "LEFT_ARROW", ""),
("DOWN_ARROW", "DOWN_ARROW", ""),
("RIGHT_ARROW", "RIGHT_ARROW", ""),
("UP_ARROW", "UP_ARROW", ""),
("NUMPAD_1", "NUMPAD_1", ""),
("NUMPAD_2", "NUMPAD_2", ""),
("NUMPAD_3", "NUMPAD_3", ""),
("NUMPAD_4", "NUMPAD_4", ""),
("NUMPAD_5", "NUMPAD_5", ""),
("NUMPAD_6", "NUMPAD_6", ""),
("NUMPAD_7", "NUMPAD_7", ""),
("NUMPAD_8", "NUMPAD_8", ""),
("NUMPAD_9", "NUMPAD_9", ""),
("NUMPAD_0", "NUMPAD_0", ""),
("NUMPAD_PERIOD", "NUMPAD_PERIOD", ""),
("NUMPAD_SLASH", "NUMPAD_SLASH", ""),
("NUMPAD_ASTERIX", "NUMPAD_ASTERIX", ""),
("NUMPAD_MINUS", "NUMPAD_MINUS", ""),
("NUMPAD_ENTER", "NUMPAD_ENTER", ""),
("NUMPAD_PLUS", "NUMPAD_PLUS", ""),
("F1", "F1", ""),
("F2", "F2", ""),
("F3", "F3", ""),
("F4", "F4", ""),
("F5", "F5", ""),
("F6", "F6", ""),
("F7", "F7", ""),
("F8", "F8", ""),
("F9", "F9", ""),
("F10", "F10", ""),
("F11", "F11", ""),
("F12", "F12", ""),
("F13", "F13", ""),
("F14", "F14", ""),
("F15", "F15", ""),
("F16", "F16", ""),
("F17", "F17", ""),
("F18", "F18", ""),
("F19", "F19", ""),
("PAUSE", "PAUSE", ""),
("INSERT", "INSERT", ""),
("HOME", "HOME", ""),
("PAGE_UP", "PAGE_UP", ""),
("PAGE_DOWN", "PAGE_DOWN", ""),
("END", "END", ""),
("MEDIA_PLAY", "MEDIA_PLAY", ""),
("MEDIA_STOP", "MEDIA_STOP", ""),
("MEDIA_FIRST", "MEDIA_FIRST", ""),
("MEDIA_LAST", "MEDIA_LAST", ""),
("TEXTINPUT", "TEXTINPUT", ""),
("WINDOW_DEACTIVATE", "WINDOW_DEACTIVATE", ""),
("TIMER", "TIMER", ""),
("TIMER0", "TIMER0", ""),
("TIMER1", "TIMER1", ""),
("TIMER2", "TIMER2", ""),
("TIMER_JOBS", "TIMER_JOBS", ""),
("TIMER_AUTOSAVE", "TIMER_AUTOSAVE", ""),
("TIMER_REPORT", "TIMER_REPORT", ""),
("TIMERREGION", "TIMERREGION", ""),
("NDOF_MOTION", "NDOF_MOTION", ""),
("NDOF_BUTTON_MENU", "NDOF_BUTTON_MENU", ""),
("NDOF_BUTTON_FIT", "NDOF_BUTTON_FIT", ""),
("NDOF_BUTTON_TOP", "NDOF_BUTTON_TOP", ""),
("NDOF_BUTTON_BOTTOM", "NDOF_BUTTON_BOTTOM", ""),
("NDOF_BUTTON_LEFT", "NDOF_BUTTON_LEFT", ""),
("NDOF_BUTTON_RIGHT", "NDOF_BUTTON_RIGHT", ""),
("NDOF_BUTTON_FRONT", "NDOF_BUTTON_FRONT", ""),
("NDOF_BUTTON_BACK", "NDOF_BUTTON_BACK", ""),
("NDOF_BUTTON_ISO1", "NDOF_BUTTON_ISO1", ""),
("NDOF_BUTTON_ISO2", "NDOF_BUTTON_ISO2", ""),
("NDOF_BUTTON_ROLL_CW", "NDOF_BUTTON_ROLL_CW", ""),
("NDOF_BUTTON_ROLL_CCW", "NDOF_BUTTON_ROLL_CCW", ""),
("NDOF_BUTTON_SPIN_CW", "NDOF_BUTTON_SPIN_CW", ""),
("NDOF_BUTTON_SPIN_CCW", "NDOF_BUTTON_SPIN_CCW", ""),
("NDOF_BUTTON_TILT_CW", "NDOF_BUTTON_TILT_CW", ""),
("NDOF_BUTTON_TILT_CCW", "NDOF_BUTTON_TILT_CCW", ""),
("NDOF_BUTTON_ROTATE", "NDOF_BUTTON_ROTATE", ""),
("NDOF_BUTTON_PANZOOM", "NDOF_BUTTON_PANZOOM", ""),
("NDOF_BUTTON_DOMINANT", "NDOF_BUTTON_DOMINANT", ""),
("NDOF_BUTTON_PLUS", "NDOF_BUTTON_PLUS", ""),
("NDOF_BUTTON_MINUS", "NDOF_BUTTON_MINUS", ""),
("NDOF_BUTTON_ESC", "NDOF_BUTTON_ESC", ""),
("NDOF_BUTTON_ALT", "NDOF_BUTTON_ALT", ""),
("NDOF_BUTTON_SHIFT", "NDOF_BUTTON_SHIFT", ""),
("NDOF_BUTTON_CTRL", "NDOF_BUTTON_CTRL", ""),
("NDOF_BUTTON_1", "NDOF_BUTTON_1", ""),
("NDOF_BUTTON_2", "NDOF_BUTTON_2", ""),
("NDOF_BUTTON_3", "NDOF_BUTTON_3", ""),
("NDOF_BUTTON_4", "NDOF_BUTTON_4", ""),
("NDOF_BUTTON_5", "NDOF_BUTTON_5", ""),
("NDOF_BUTTON_6", "NDOF_BUTTON_6", ""),
("NDOF_BUTTON_7", "NDOF_BUTTON_7", ""),
("NDOF_BUTTON_8", "NDOF_BUTTON_8", ""),
("NDOF_BUTTON_9", "NDOF_BUTTON_9", ""),
("NDOF_BUTTON_10", "NDOF_BUTTON_10", ""),
("NDOF_BUTTON_A", "NDOF_BUTTON_A", ""),
("NDOF_BUTTON_B", "NDOF_BUTTON_B", ""),
("NDOF_BUTTON_C", "NDOF_BUTTON_C", "")
),
name="Quick Type",
description="Enter key code in find text",
update=update_data
)
class IsKeyFreeRunExportKeys(Operator):
bl_idname = "iskeyfree.run_export_keys"
bl_label = "List all Shortcuts"
bl_description = ("List all existing shortcuts in a text block\n"
"The newly generated list will be made active in the Text Editor\n"
"To access the previous ones, select them from the Header dropdown")
def all_shortcuts_name(self, context):
new_name, def_name, ext = "", "All_Shortcuts", ".txt"
suffix = 1
try:
# first slap a simple linear count + 1 for numeric suffix, if it fails
# harvest for the rightmost numbers and append the max value
list_txt = []
data_txt = bpy.data.texts
list_txt = [txt.name for txt in data_txt if txt.name.startswith("All_Shortcuts")]
new_name = "{}_{}{}".format(def_name, len(list_txt) + 1, ext)
if new_name in list_txt:
from re import findall
test_num = [findall("\d+", words) for words in list_txt]
suffix += max([int(l[-1]) for l in test_num])
new_name = "{}_{}{}".format(def_name, suffix, ext)
return new_name
except:
return None
def execute(self, context):
wm = bpy.context.window_manager
from collections import defaultdict
mykeys = defaultdict(list)
file_name = self.all_shortcuts_name(context) or "All_Shortcut.txt"
start_note = "# Note: Some of the shortcuts entries don't have a name. Mostly Modal stuff\n"
col_width, col_shortcuts = 2, 2
for ctx_type, keyboardmap in wm.keyconfigs.user.keymaps.items():
for myitem in keyboardmap.keymap_items:
padding = len(myitem.name)
col_width = padding + 2 if padding > col_width else col_width
short_type = myitem.type if myitem.type else "UNKNOWN"
is_ctrl = " Ctrl" if myitem.ctrl is True else ""
is_alt = " Alt" if myitem.alt is True else ""
is_shift = " Shift" if myitem.shift is True else ""
is_oskey = " OsKey" if myitem.oskey is True else ""
short_cuts = "{}{}{}{}{}".format(short_type, is_ctrl, is_alt, is_shift, is_oskey)
t = (
myitem.name if myitem.name else "No Name",
short_cuts,
)
mykeys[ctx_type].append(t)
padding_s = len(short_cuts) + 2
col_shortcuts = padding_s if padding_s > col_shortcuts else col_shortcuts
max_line = col_shortcuts + col_width + 4
textblock = bpy.data.texts.new(file_name)
total = sum([len(mykeys[ctxs]) for ctxs in mykeys])
textblock.write('# %d Total Shortcuts\n\n' % total)
textblock.write(start_note)
for ctx in mykeys:
textblock.write("\n[%s]\nEntries: %s\n\n" % (ctx, len(mykeys[ctx])))
line_k = sorted(mykeys[ctx])
for keys in line_k:
add_ticks = "-" * (max_line - (len(keys[0]) + len(keys[1])))
entries = "{ticks} {entry}".format(ticks=add_ticks, entry=keys[1])
textblock.write("{name} {entry}\n".format(name=keys[0], entry=entries))
textblock.write("\n\n")
# try to set the created text block to active
if context.area.type in {"TEXT_EDITOR"}:
bpy.context.space_data.text = bpy.data.texts[file_name]
self.report({'INFO'}, "See %s textblock" % file_name)
return {"FINISHED"}
# -----------------------------------------------------
# Registration
# ------------------------------------------------------
classes = (
IskeyFreeProperties,
RunActionCheck,
UIControlPanel,
IsKeyFreeRunExportKeys,
)
def register():
bpy.utils.register_module(__name__)
for cls in classes:
bpy.utils.register_class(cls)
bpy.types.Scene.is_keyfree = PointerProperty(type=IskeyFreeProperties)
def unregister():
bpy.utils.unregister_module(__name__)
for cls in classes:
bpy.utils.unregister_class(cls)
del bpy.types.Scene.is_keyfree
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment