diff --git a/text_editor_tools/api_navigator.py b/text_editor_tools/api_navigator.py index e5fa5c7..29e5859 100644 --- a/text_editor_tools/api_navigator.py +++ b/text_editor_tools/api_navigator.py @@ -10,7 +10,7 @@ # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License @@ -19,11 +19,11 @@ # # ***** END GPL LICENCE BLOCK ***** -# bl_info = { +#bl_info = { # "name": "API Navigator", # "author": "Dany Lebel (Axon_D)", # "version": (1, 0, 2), -# "blender": (2, 57, 0), +# "blender": (2, 80, 0), # "location": "Text Editor > Properties > API Navigator Panel", # "description": "Allows exploration of the python api via the user interface", # "warning": "", @@ -124,7 +124,7 @@ def evaluate(module): def get_tree_level(): # print('get_tree_level') - prefs = bpy.context.user_preferences.addons['weed'].preferences + prefs = bpy.context.preferences.addons['weed'].preferences path = prefs.anp_path def object_list(): @@ -193,7 +193,7 @@ def parent(path): def update_filter(): """Update the filter according to the current path""" global filter_mem - prefs = bpy.context.user_preferences.addons['weed'].preferences + prefs = bpy.context.preferences.addons['weed'].preferences try: prefs.anp_filter = filter_mem[prefs.anp_path] @@ -217,7 +217,7 @@ def isiterable(mod): def fill_filter_mem(): global filter_mem - prefs = bpy.context.user_preferences.addons['weed'].preferences + prefs = bpy.context.preferences.addons['weed'].preferences filter = prefs.anp_filter if filter: @@ -235,7 +235,7 @@ class ApiNavigator(): def generate_global_values(): """Populate the level attributes to display the panel buttons and the documentation""" global tree_level, current_module, module_type, return_report, last_text - prefs = bpy.context.user_preferences.addons['weed'].preferences + prefs = bpy.context.preferences.addons['weed'].preferences try: text = bpy.context.space_data.text @@ -268,7 +268,7 @@ def generate_global_values(): def generate_api_doc(): """Format the doc string for API Navigator""" global current_module, api_doc_, return_report, module_type - prefs = bpy.context.user_preferences.addons['weed'].preferences + prefs = bpy.context.preferences.addons['weed'].preferences path = prefs.anp_path doc = current_module.__doc__ @@ -281,7 +281,7 @@ def generate_api_doc(): def api_update(context): - prefs = bpy.context.user_preferences.addons['weed'].preferences + prefs = bpy.context.preferences.addons['weed'].preferences if prefs.anp_path != prefs.anp_old_path: fill_filter_mem() prefs.anp_old_path = prefs.anp_path @@ -306,7 +306,7 @@ class BackToBpy(ApiNavigator, bpy.types.Operator): def execute(self, context): fill_filter_mem() - prefs = bpy.context.user_preferences.addons['weed'].preferences + prefs = bpy.context.preferences.addons['weed'].preferences if not prefs.anp_path: prefs.anp_old_path = prefs.anp_path = 'bpy' @@ -321,11 +321,11 @@ class Down(ApiNavigator, bpy.types.Operator): """go to this Module""" bl_idname = "weed.api_navigator_down" bl_label = "API Navigator Down" - pointed_module = bpy.props.StringProperty(name='Current Module', default='') + pointed_module: bpy.props.StringProperty(name='Current Module', default='') def execute(self, context): fill_filter_mem() - prefs = bpy.context.user_preferences.addons['weed'].preferences + prefs = bpy.context.preferences.addons['weed'].preferences if not prefs.anp_path: prefs.anp_old_path = prefs.anp_path = prefs.anp_path + self.pointed_module @@ -343,7 +343,7 @@ class Parent(ApiNavigator, bpy.types.Operator): bl_label = "API Navigator Parent" def execute(self, context): - prefs = bpy.context.user_preferences.addons['weed'].preferences + prefs = bpy.context.preferences.addons['weed'].preferences path = prefs.anp_path if path: @@ -358,23 +358,24 @@ class Subscript(ApiNavigator, bpy.types.Operator): """Subscript to this Item""" bl_idname = "weed.api_navigator_subscript" bl_label = "API Navigator Subscript" - subscription = bpy.props.StringProperty(name='', default='') + subscription: bpy.props.StringProperty(name='', default='') def execute(self, context): fill_filter_mem() - prefs = bpy.context.user_preferences.addons['weed'].preferences + prefs = bpy.context.preferences.addons['weed'].preferences prefs.anp_old_path = prefs.anp_path = prefs.anp_path + '[' + self.subscription + ']' update_filter() self.generate_global_values() return {'FINISHED'} + class ClearFilter(ApiNavigator, bpy.types.Operator): """Clear the filter""" bl_idname = 'weed.api_navigator_clear_filter' bl_label = 'API Nav clear filter' def execute(self, context): - prefs = bpy.context.user_preferences.addons['weed'].preferences + prefs = bpy.context.preferences.addons['weed'].preferences prefs.anp_filter = '' return {'FINISHED'} @@ -392,12 +393,12 @@ class SelectModule(ApiNavigator, bpy.types.Menu): emboss=True).subscription = '\"' + obj + '\"'", 1 : "col.operator('weed.api_navigator_subscript', text=str(obj)[:30],\ emboss=True).subscription = str(i)", - 8 : "col.label(obj[:30])" + 8 : "col.label(text=obj[:30])" } def draw(self, context): global tree_level, current_module, module_type, return_report - prefs = bpy.context.user_preferences.addons['weed'].preferences + prefs = bpy.context.preferences.addons['weed'].preferences layout = self.layout text_filter = prefs.anp_filter split = layout.split() @@ -423,7 +424,7 @@ class PopupApiNavigator(ApiNavigator, bpy.types.Operator): bl_options = {'REGISTER', 'UNDO'} def __init__(self): - prefs = bpy.context.user_preferences.addons['weed'].preferences + prefs = bpy.context.preferences.addons['weed'].preferences modules_types = [ (0, "Items", "DOTSDOWN"), (1, "Item Values", "DOTSDOWN"), @@ -443,14 +444,13 @@ def __init__(self): module.icon = icon - def draw(self, context): global tree_level, current_module, module_type, return_report, api_doc_ - prefs = bpy.context.user_preferences.addons['weed'].preferences + prefs = bpy.context.preferences.addons['weed'].preferences layout = self.layout box = layout.box() - split = box.split(percentage=0.7) + split = box.split(factor=0.7) split.prop(prefs, 'anp_path', text='', icon='OOPS') row = split.row(align=True) row.operator('weed.api_navigator_parent', @@ -458,7 +458,7 @@ def draw(self, context): row.operator('weed.api_navigator_back_to_bpy', text='back to bpy', icon='BACK') - split = box.split(percentage=0.85) + split = box.split(factor=0.85) row = split.row(align=True) for module in prefs.submodules: if tree_level[module.level].__len__(): @@ -473,9 +473,9 @@ def draw(self, context): col = layout.column(align=True) try: for line in api_doc_.splitlines(): - col.label(line) + col.label(text=line) except: - col.label('Empty:::') + col.label(text='Empty:::') def check(self, context): return True @@ -488,29 +488,31 @@ def invoke(self, context, event): return context.window_manager.invoke_props_dialog(self, width=700) -# registro automatico de modulos. +## registro automatico de modulos. + +#def register(): +# bpy.utils.register_class(Update) +# bpy.utils.register_class(BackToBpy) +# bpy.utils.register_class(Down) +# bpy.utils.register_class(Parent) +# bpy.utils.register_class(Subscript) +# bpy.utils.register_class(ClearFilter) +# bpy.utils.register_class(SelectModule) +# bpy.utils.register_class(PopupApiNavigator) -# def register(): -# bpy.utils.register_class(Update) -# bpy.utils.register_class(BackToBpy) -# bpy.utils.register_class(Down) -# bpy.utils.register_class(Parent) -# bpy.utils.register_class(Subscript) -# bpy.utils.register_class(ClearFilter) -# bpy.utils.register_class(SelectModule) -# bpy.utils.register_class(PopupApiNavigator) +#def unregister(): +# bpy.utils.unregister_class(PopupApiNavigator) +# bpy.utils.unregister_class(SelectModule) +# bpy.utils.unregister_class(ClearFilter) +# bpy.utils.unregister_class(Subscript) +# bpy.utils.unregister_class(Parent) +# bpy.utils.unregister_class(Down) +# bpy.utils.unregister_class(BackToBpy) +# bpy.utils.unregister_class(Update) -# def unregister(): -# bpy.utils.unregister_class(PopupApiNavigator) -# bpy.utils.unregister_class(SelectModule) -# bpy.utils.unregister_class(ClearFilter) -# bpy.utils.unregister_class(Subscript) -# bpy.utils.unregister_class(Parent) -# bpy.utils.unregister_class(Down) -# bpy.utils.unregister_class(BackToBpy) -# bpy.utils.unregister_class(Update) +#if __name__ == '__main__': +# register() -# if __name__ == '__main__': -# register() +##unregister() diff --git a/text_editor_tools/code_editor.py b/text_editor_tools/code_editor.py index a264611..9b64f5a 100644 --- a/text_editor_tools/code_editor.py +++ b/text_editor_tools/code_editor.py @@ -1,4 +1,4 @@ -# ##### BEGIN GPL LICENSE BLOCK ##### +# ###### BEGIN GPL LICENSE BLOCK ###### # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -14,7 +14,7 @@ # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # -# ##### END GPL LICENSE BLOCK ##### +# ###### END GPL LICENSE BLOCK ###### # bl_info = { # "name": "Code Editor", diff --git a/text_editor_tools/code_tree.py b/text_editor_tools/code_tree.py index 31a0220..e85001b 100644 --- a/text_editor_tools/code_tree.py +++ b/text_editor_tools/code_tree.py @@ -5,7 +5,7 @@ def draw_code_tree_box(self, context, layout): col = layout.column(align=False) row = col.row(align=False) row.prop(get_addon_preferences(), 'user_site_packages', - icon = 'RECOVER_AUTO', text = '') + icon = 'RECOVER_LAST', text = '') selector = row.row(align=True) selector.prop(context.scene, 'explorer_root_folder', text='') selector.operator('weed.open_addon_menu', @@ -77,3 +77,4 @@ def execute(self, context): # def unregister(): # bpy.utils.unregister_class(WEED_OT_ViewCodeTree) + diff --git a/text_editor_tools/find_replace.py b/text_editor_tools/find_replace.py index 63c659b..7f8a5fc 100644 --- a/text_editor_tools/find_replace.py +++ b/text_editor_tools/find_replace.py @@ -1,16 +1,17 @@ import bpy + class PopupFindReplace(bpy.types.Operator): bl_idname = 'weed.popup_find_replace' bl_label = 'Popup Find and Replace' - bl_description = 'popup with Find and Replace' + bl_description = 'Pop-up with Find and Replace' bl_options = {'REGISTER', 'UNDO'} # Needed hack for repeat operator - find_hack = bpy.props.BoolProperty(default=False) - replace_hack = bpy.props.BoolProperty(default=False) + find_hack: bpy.props.BoolProperty(default=False) + replace_hack: bpy.props.BoolProperty(default=False) - # set_selected_hack = bpy.props.BoolProperty(default = False) + # set_selected_hack: bpy.props.BoolProperty(default = False) @classmethod def poll(cls, context): return context.area.type == 'TEXT_EDITOR' @@ -67,41 +68,40 @@ def invoke(self, context, event): return context.window_manager.invoke_props_popup(self, event) -# def register_keymaps(): -# kc = bpy.context.window_manager.keyconfigs -# if kc.addon: -# km = kc.addon.keymaps.new(name='Text', space_type='TEXT_EDITOR') -# km.keymap_items.new('weed.popup_find_replace', +#def register_keymaps(): +# kc = bpy.context.window_manager.keyconfigs +# if kc.addon: +# km = kc.addon.keymaps.new(name='Text', space_type='TEXT_EDITOR') +# km.keymap_items.new('weed.popup_find_replace', # 'F', 'PRESS', ctrl=True, shift=True) -# # km.keymap_items.new('weed.popup_find_replace', 'H', 'PRESS', ctrl=True) -# # dkm = kc.default.keymaps['Text Generic'] -# # dkm.keymap_items['text.start_find'].active = False -# # dkm.keymap_items['text.replace'].active = False - +# # km.keymap_items.new('weed.popup_find_replace', 'H', 'PRESS', ctrl=True) +# # dkm = kc.default.keymaps['Text Generic'] +# # dkm.keymap_items['text.start_find'].active = False +# # dkm.keymap_items['text.replace'].active = False -# def unregister_keymaps(): -# kc = bpy.context.window_manager.keyconfigs -# if kc.addon: -# km = kc.addon.keymaps['Text'] -# kmi = km.keymap_items['weed.popup_find_replace'] -# km.keymap_items.remove(kmi) -# # kmi = km.keymap_items['weed.popup_replace'] -# # km.keymap_items.remove(kmi) -# # dkm = kc.default.keymaps['Text Generic'] -# # dkm.keymap_items['text.start_find'].active = True -# # dkm.keymap_items['text.replace'].active = True +#def unregister_keymaps(): +# kc = bpy.context.window_manager.keyconfigs +# if kc.addon: +# km = kc.addon.keymaps['Text'] +# kmi = km.keymap_items['weed.popup_find_replace'] +# km.keymap_items.remove(kmi) +# # kmi = km.keymap_items['weed.popup_replace'] +# # km.keymap_items.remove(kmi) +# # dkm = kc.default.keymaps['Text Generic'] +# # dkm.keymap_items['text.start_find'].active = True +# # dkm.keymap_items['text.replace'].active = True -# def register(): -# bpy.utils.register_class(PopupFindReplace) -# register_keymaps() +#def register(): +# bpy.utils.register_class(PopupFindReplace) +# register_keymaps() -# def unregister(): -# bpy.utils.unregister_class(PopupFindReplace) -# unregister_keymaps() +#def unregister(): +# bpy.utils.unregister_class(PopupFindReplace) +# unregister_keymaps() -# if __name__ == '__main__': -# # unregister() -# register() +#if __name__ == '__main__': +# # unregister() +# register() diff --git a/text_editor_tools/icons_get.py b/text_editor_tools/icons_get.py index 17a21bf..2d23ef7 100644 --- a/text_editor_tools/icons_get.py +++ b/text_editor_tools/icons_get.py @@ -22,7 +22,7 @@ # "name": "Icons", # "author": "Crouch, N.tox, PKHG, Campbell Barton, Dany Lebel", # "version": (1, 5, 2), -# "blender": (2, 57, 0), +# "blender": (2, 80, 0), # "location": "Text Editor > Properties or " "Console > Console Menu", # "warning": "", # "description": "Click an icon to display its name and " @@ -32,116 +32,118 @@ # "category": "Development", # } - import bpy + def create_icon_list(text_filter): - rna_prop = bpy.types.UILayout.bl_rna.functions['prop'] - icons = [icon for icon in rna_prop.parameters['icon'].enum_items.keys() - if text_filter.upper() in icon] - #icons.remove('NONE') - return icons + rna_prop = bpy.types.UILayout.bl_rna.functions['prop'] + icons = [ + icon for icon in rna_prop.parameters['icon'].enum_items.keys() + if text_filter.upper() in icon + ] + #icons.remove('NONE') + return icons class ClearFilter(bpy.types.Operator): - """Clear the filter""" - bl_idname = 'weed.icons_get_clear_filter' - bl_label = 'Icons get clear filter' + """Clear the filter""" + bl_idname = 'weed.icons_get_clear_filter' + bl_label = 'Icons get clear filter' - def execute(self, context): - prefs = bpy.context.user_preferences.addons['weed'].preferences - prefs.icg_filter = '' - return {'FINISHED'} + def execute(self, context): + prefs = bpy.context.preferences.addons['weed'].preferences + prefs.icg_filter = '' + return {'FINISHED'} class WM_OT_icon_info(bpy.types.Operator): - bl_idname = 'wm.icon_info' - bl_label = 'Icon Info' - bl_description = 'Click to copy this icon name to the clipboard' - bl_options = {'REGISTER', 'INTERNAL'} - icon = bpy.props.StringProperty() - - def invoke(self, context, event): - bpy.data.window_managers['WinMan'].clipboard = "%s" % self.icon - self.report({'INFO'}, "%s copied" % self.icon) - return {'FINISHED'} - - + bl_idname = 'wm.icon_info' + bl_label = 'Icon Info' + bl_description = 'Click to copy this icon name to the clipboard' + bl_options = {'REGISTER', 'INTERNAL'} + icon: bpy.props.StringProperty() + + def invoke(self, context, event): + bpy.data.window_managers['WinMan'].clipboard = "%s" % self.icon + self.report({'INFO'}, "%s copied" % self.icon) + return {'FINISHED'} + + class WEED_OT_IconsDialog(bpy.types.Operator): - bl_idname = 'weed.icons_dialog' - bl_label = 'Icons Info' - bl_description = 'show icons' - bl_options = {'REGISTER', 'UNDO'} - - def __init__(self): - # self.icon_list = create_icon_list() - self.icon_list = [] - # self.num_cols = int(1.6*sqrt(self.icon_list.__len__())) - self.num_cols = 40 - - def check(self, context): - prefs = bpy.context.user_preferences.addons['weed'].preferences - if prefs.icg_filter != prefs.icg_old_filter: - prefs.icg_old_filter = prefs.icg_filter - return True - else: - return False - - def draw(self, context): - # text_filter = prefs.icg_filter # prefs.icg_old_filter - # render the icons - # search - prefs = bpy.context.user_preferences.addons['weed'].preferences - layout = self.layout - row = layout.row(align=True) - row.alignment = 'RIGHT' - row.label('filter icon by name:') - row.prop(prefs, 'icg_filter', text='') - #row.operator('weed.icons_get_clear_filter', text='', icon='FILTER') - row.operator('weed.icons_get_clear_filter', text='', icon='PANEL_CLOSE') - - col = layout.column(align = True) - self.icon_list = create_icon_list(prefs.icg_filter) - #self.num_cols = int(1.6*sqrt(self.icon_list.__len__())) - - if not len(self.icon_list): - row = col.row(align = True) - row.label('no matches...') - else: - for i, icon in enumerate(self.icon_list): - if i % self.num_cols == 0: - row = col.row(align = True) - row.operator('wm.icon_info', - text = ' ', - icon = icon, - emboss = False).icon = icon - for i in range(self.num_cols - len(self.icon_list) % self.num_cols): - row.label('') - - def execute(self, context): - #print('testing...') - try: - bpy.ops.text.paste() - except RuntimeError: - self.report({'WARNING'}, 'no text open to paste into') - return {'FINISHED'} - - def invoke(self, context, event): - return context.window_manager.invoke_props_dialog(self, width=770) - - - -# def register(): -# bpy.utils.register_class(WM_OT_icon_info) -# bpy.utils.register_class(WEED_OT_IconsDialog) -# #bpy.types.TEXT_HT_header_weed_menu.append(icons_menu_entry) - -# def unregister(): -# bpy.utils.unregister_class(WM_OT_icon_info) -# bpy.utils.unregister_class(WEED_OT_IconsDialog) -# #bpy.types.TEXT_HT_header_weed_menu.remove(icons_menu_entry) - - -############### -# Corregir luego con una version que no tenga boton ok + bl_idname = 'weed.icons_dialog' + bl_label = 'Icons Info' + bl_description = 'show icons' + bl_options = {'REGISTER', 'UNDO'} + + def __init__(self): + # self.icon_list = create_icon_list() + self.icon_list = [] + # self.num_cols = int(1.6*sqrt(self.icon_list.__len__())) + self.num_cols = 40 + + def check(self, context): + prefs = bpy.context.preferences.addons['weed'].preferences + if prefs.icg_filter != prefs.icg_old_filter: + prefs.icg_old_filter = prefs.icg_filter + return True + else: + return False + + def draw(self, context): + # text_filter = prefs.icg_filter # prefs.icg_old_filter + # render the icons + # search + prefs = bpy.context.preferences.addons['weed'].preferences + layout = self.layout + row = layout.row(align=True) + row.alignment = 'RIGHT' + row.label(text='filter icon by name:') + row.prop(prefs, 'icg_filter', text='') + #row.operator('weed.icons_get_clear_filter', text='', icon='FILTER') + row.operator('weed.icons_get_clear_filter', text='', icon='PANEL_CLOSE') + + col = layout.column(align=True) + self.icon_list = create_icon_list(prefs.icg_filter) + #self.num_cols = int(1.6*sqrt(self.icon_list.__len__())) + + if not len(self.icon_list): + row = col.row(align=True) + row.label(text='no matches...') + else: + for i, icon in enumerate(self.icon_list): + if i % self.num_cols == 0: + row = col.row(align=True) + row.operator( + 'wm.icon_info', text=' ', icon=icon, emboss=False).icon = icon + for i in range(self.num_cols - len(self.icon_list) % self.num_cols): + row.label(text='') + + def execute(self, context): + #print('testing...') + try: + bpy.ops.text.paste() + except RuntimeError: + self.report({'WARNING'}, 'no text open to paste into') + return {'FINISHED'} + + def invoke(self, context, event): + return context.window_manager.invoke_props_dialog(self, width=770) + + +#def register(): +# bpy.utils.register_class(WM_OT_icon_info) +# bpy.utils.register_class(WEED_OT_IconsDialog) +# #bpy.types.TEXT_HT_header_weed_menu.append(icons_menu_entry) + +#def unregister(): +# bpy.utils.unregister_class(WM_OT_icon_info) +# bpy.utils.unregister_class(WEED_OT_IconsDialog) +# #bpy.types.TEXT_HT_header_weed_menu.remove(icons_menu_entry) + +#if __name__ == '__main__': +# # unregister() +# register() +# ################ +## Corregir luego con una version que no tenga boton ok +#################