Exporter Panel - Project Settings

1. Processing data entry into fields:
- Name - the field must not be empty. If the user tries to set an empty value, then this field specifies the name of the blend file (this is how it is implemented during assembly). The default is the name of the blend file.
- Package - the field must not be empty, it must not consist only of numbers and start with a number. The . symbol is replaced with _. The default is arm.
- Bundle - the field must be filled in according to the mask [string].[string]. Each part must not be empty, contain numbers, or start with a number. The default is org.armory3d. Previously, this field was blank, in which case the current default was used.
- Version.
Input in the Version field is processed and only allows input by masks:
- 0.0
- 0.0.0
- 0.0.0.0
In any case, the value is ignored and the previous value remains.

If the (Auto-increment Build Number) checkbox is checked and when performing the operation, Build and Publish will be automatically incremented by one after the version value.
Examples:
it was 1.0 - it is 1.1,
it was 1.9 - it is 1.10,
it was 1.0.1 - it is 1.0.2,
it was 0.1.1.2 - it is 0.1.1.3.

Defaults:
- Version - 1.0.0
- Auto-increment Build Number - enabled.

For all fields, special characters ([] / \ ;,> <& *:% = + @! # ^ () |? ^) Are also replaced with _.

2. Fixed display of Android Settings panel.
This commit is contained in:
E1e5en 2020-11-13 20:36:27 +03:00
parent da5ed3c5e0
commit 65dd6b701f
4 changed files with 77 additions and 7 deletions

View file

@ -216,6 +216,10 @@ def export_data(fp, sdk_path):
import_logic = not state.is_publish and arm.utils.logic_editor_space() != None
write_data.write_khafilejs(state.is_play, export_physics, export_navigation, export_ui, state.is_publish, enable_dce, ArmoryExporter.import_traits, import_logic)
# Change project version (Build, Publish)
if (not state.is_play) and (wrd.arm_project_version_autoinc):
wrd.arm_project_version = arm.utils.arm.utils.change_version_project(wrd.arm_project_version)
# Write Main.hx - depends on write_khafilejs for writing number of assets
scene_name = arm.utils.get_project_scene_name()
write_data.write_mainhx(scene_name, resx, resy, state.is_play, state.is_publish)
@ -312,7 +316,6 @@ def compile(assets_only=False):
cmd.append('--noproject')
state.proc_build = run_proc(cmd, assets_done if compilation_server else build_done)
def build(target, is_play=False, is_publish=False, is_export=False):
global profile_time
profile_time = time.time()

View file

@ -1,5 +1,6 @@
import bpy
from bpy.props import *
import re
import arm.assets as assets
import arm.make
@ -11,15 +12,66 @@ import arm.utils
arm_version = '2020.11'
arm_commit = '$Id$'
def set_project_name(self, value):
value = arm.utils.safestr(value)
if len(value) > 0:
self['arm_project_name'] = value
else:
self['arm_project_name'] = arm.utils.blend_name()
def get_project_name(self):
return self.get('arm_project_name', arm.utils.blend_name())
def set_project_package(self, value):
value = arm.utils.safestr(value).replace('.', '_')
if (len(value) > 0) and (not value.isdigit()) and (not value[0].isdigit()):
self['arm_project_package'] = value
def get_project_package(self):
return self.get('arm_project_package', 'arm')
def set_version(self, value):
value = value.strip().replace(' ', '')
if re.match(r'^\d+(\.\d+){1,3}$', value) is not None:
check = True
v_i = value.split('.')
for item in v_i:
try:
i = int(item)
except ValueError:
check = False
break
if check:
self['arm_project_version'] = value
def get_version(self):
return self.get('arm_project_version', '1.0.0')
def set_project_bundle(self, value):
value = arm.utils.safestr(value)
v_a = value.strip().split('.')
if (len(value) > 0) and (not value.isdigit()) and (not value[0].isdigit()) and (len(v_a) > 1):
check = True
for item in v_a:
if (item.isdigit()) or (item[0].isdigit()):
check = False
break
if check:
self['arm_project_bundle'] = value
def get_project_bundle(self):
return self.get('arm_project_bundle', 'org.armory3d')
def init_properties():
global arm_version
bpy.types.World.arm_recompile = BoolProperty(name="Recompile", description="Recompile sources on next play", default=True)
bpy.types.World.arm_version = StringProperty(name="Version", description="Armory SDK version", default="")
bpy.types.World.arm_commit = StringProperty(name="Version Commit", description="Armory SDK version", default="")
bpy.types.World.arm_project_name = StringProperty(name="Name", description="Exported project name", default="", update=assets.invalidate_compiler_cache)
bpy.types.World.arm_project_package = StringProperty(name="Package", description="Package name for scripts", default="arm", update=assets.invalidate_compiler_cache)
bpy.types.World.arm_project_version = StringProperty(name="Version", description="Exported project version", default="1.0", update=assets.invalidate_compiler_cache)
bpy.types.World.arm_project_bundle = StringProperty(name="Bundle", description="Exported project bundle", default="", update=assets.invalidate_compiler_cache)
bpy.types.World.arm_project_name = StringProperty(name="Name", description="Exported project name", default="", update=assets.invalidate_compiler_cache, set=set_project_name, get=get_project_name)
bpy.types.World.arm_project_package = StringProperty(name="Package", description="Package name for scripts", default="arm", update=assets.invalidate_compiler_cache, set=set_project_package, get=get_project_package)
bpy.types.World.arm_project_version = StringProperty(name="Version", description="Exported project version", default="1.0.0", update=assets.invalidate_compiler_cache, set=set_version, get=get_version)
bpy.types.World.arm_project_version_autoinc = BoolProperty(name="Auto-increment Build Number", description="Auto-increment build number", default=True, update=assets.invalidate_compiler_cache)
bpy.types.World.arm_project_bundle = StringProperty(name="Bundle", description="Exported project bundle", default="org.armory3d", update=assets.invalidate_compiler_cache, set=set_project_bundle, get=get_project_bundle)
bpy.types.World.arm_project_android_sdk_compile = IntProperty(name="Compile Version SDK", description="Compile Android SDK Version", default=29, min=26, max=30, update=assets.invalidate_compiler_cache)
bpy.types.World.arm_project_android_sdk_min = IntProperty(name="Minimal Version SDK", description="Minimal Version Android SDK", default=14, min=14, max=30, update=assets.invalidate_compiler_cache)
bpy.types.World.arm_project_android_sdk_target = IntProperty(name="Target Version SDK", description="Target Version Android SDK", default=29, min=26, max=30, update=assets.invalidate_compiler_cache)

View file

@ -411,6 +411,7 @@ class ARM_PT_ArmoryExporterPanel(bpy.types.Panel):
col.prop(wrd, 'arm_project_package')
col.prop(wrd, 'arm_project_bundle')
col.prop(wrd, 'arm_project_version')
col.prop(wrd, 'arm_project_version_autoinc')
col.prop(wrd, 'arm_project_icon')
col.prop(wrd, 'arm_dce')
col.prop(wrd, 'arm_compiler_inline')
@ -430,8 +431,11 @@ class ARM_PT_ArmoryExporterAndroidSettingsPanel(bpy.types.Panel):
@classmethod
def poll(cls, context):
wrd = bpy.data.worlds['Arm']
item = wrd.arm_exporterlist[wrd.arm_exporterlist_index]
return item.arm_project_target == 'android-hl'
if len(wrd.arm_exporterlist) > 0:
item = wrd.arm_exporterlist[wrd.arm_exporterlist_index]
return item.arm_project_target == 'android-hl'
else:
return False
def draw(self, context):
layout = self.layout

View file

@ -947,6 +947,17 @@ def type_name_to_type(name: str) -> bpy.types.bpy_struct:
"""Return the Blender type given by its name, if registered."""
return bpy.types.bpy_struct.bl_rna_get_subclass_py(name)
def change_version_project(version: str) -> str:
ver = version.strip().replace(' ', '').split('.')
v_i = int(ver[len(ver) - 1]) + 1
ver[len(ver) - 1] = str(v_i)
version = ''
for i in ver:
if len(version) > 0:
version += '.'
version += i
return version
def register(local_sdk=False):
global use_local_sdk
use_local_sdk = local_sdk