This commit implements described in the #104573. The goal is to fix the confusion of the submodule hashes change, which are not ideal for any of the supported git-module configuration (they are either always visible causing confusion, or silently staged and committed, also causing confusion). This commit replaces submodules with a checkout of addons and addons_contrib, covered by the .gitignore, and locale and developer tools are moved to the main repository. This also changes the paths: - /release/scripts are moved to the /scripts - /source/tools are moved to the /tools - /release/datafiles/locale is moved to /locale This is done to avoid conflicts when using bisect, and also allow buildbot to automatically "recover" wgen building older or newer branches/patches. Running `make update` will initialize the local checkout to the changed repository configuration. Another aspect of the change is that the make update will support Github style of remote organization (origin remote pointing to thy fork, upstream remote pointing to the upstream blender/blender.git). Pull Request #104755
80 lines
2.3 KiB
Python
80 lines
2.3 KiB
Python
import bpy
|
|
|
|
|
|
def read_some_data(context, filepath, use_some_setting):
|
|
print("running read_some_data...")
|
|
f = open(filepath, 'r', encoding='utf-8')
|
|
data = f.read()
|
|
f.close()
|
|
|
|
# would normally load the data here
|
|
print(data)
|
|
|
|
return {'FINISHED'}
|
|
|
|
|
|
# ImportHelper is a helper class, defines filename and
|
|
# invoke() function which calls the file selector.
|
|
from bpy_extras.io_utils import ImportHelper
|
|
from bpy.props import StringProperty, BoolProperty, EnumProperty
|
|
from bpy.types import Operator
|
|
|
|
|
|
class ImportSomeData(Operator, ImportHelper):
|
|
"""This appears in the tooltip of the operator and in the generated docs"""
|
|
bl_idname = "import_test.some_data" # important since its how bpy.ops.import_test.some_data is constructed
|
|
bl_label = "Import Some Data"
|
|
|
|
# ImportHelper mixin class uses this
|
|
filename_ext = ".txt"
|
|
|
|
filter_glob: StringProperty(
|
|
default="*.txt",
|
|
options={'HIDDEN'},
|
|
maxlen=255, # Max internal buffer length, longer would be clamped.
|
|
)
|
|
|
|
# List of operator properties, the attributes will be assigned
|
|
# to the class instance from the operator settings before calling.
|
|
use_setting: BoolProperty(
|
|
name="Example Boolean",
|
|
description="Example Tooltip",
|
|
default=True,
|
|
)
|
|
|
|
type: EnumProperty(
|
|
name="Example Enum",
|
|
description="Choose between two items",
|
|
items=(
|
|
('OPT_A', "First Option", "Description one"),
|
|
('OPT_B', "Second Option", "Description two"),
|
|
),
|
|
default='OPT_A',
|
|
)
|
|
|
|
def execute(self, context):
|
|
return read_some_data(context, self.filepath, self.use_setting)
|
|
|
|
|
|
# Only needed if you want to add into a dynamic menu.
|
|
def menu_func_import(self, context):
|
|
self.layout.operator(ImportSomeData.bl_idname, text="Text Import Operator")
|
|
|
|
|
|
# Register and add to the "file selector" menu (required to use F3 search "Text Import Operator" for quick access).
|
|
def register():
|
|
bpy.utils.register_class(ImportSomeData)
|
|
bpy.types.TOPBAR_MT_file_import.append(menu_func_import)
|
|
|
|
|
|
def unregister():
|
|
bpy.utils.unregister_class(ImportSomeData)
|
|
bpy.types.TOPBAR_MT_file_import.remove(menu_func_import)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
register()
|
|
|
|
# test call
|
|
bpy.ops.import_test.some_data('INVOKE_DEFAULT')
|