Ejemplo n.º 1
0
    def __init__(self, parent, setting_info, work_path):
        super(Setting, self).__init__(parent)
        self.frame = parent
        self.setting = setting_info
        self.path = work_path
        self.data = GlobalData()

        pic = ImageWork.pic_transform(
            os.path.join(self.path, "core\\assets\\img.png"),
            list(self.m_bitmap2.GetSize()))
        bitmap = wx.Bitmap.FromBufferRGBA(pic.width, pic.height, pic.tobytes())
        self.m_bitmap2.SetBitmap(bitmap)

        self.setting_hold = SettingHolder(setting_info)

        self.input_filter_tex = (
            r'^.+(?<!_[\dhg])\.[Pp][Nn][Gg]$',
            r'^.+(?<=_\d)\.[Pp][Nn][Gg]$',
            r'^.+(?<=_g)\.[Pp][Nn][Gg]$',
            r'^.+(?<=_h)\.[Pp][Nn][Gg]$',
            r'^.+_younvy(?:_[\dhg])?\.[Pp][Nn][Gg]$',
        )
        self.input_filter_mesh = (
            r'^.+(?<!_[\dhg])-mesh\.[Oo][Bb][Jj]$',
            r'^.+(?<=_\d)-mesh\.[Oo][Bb][Jj]$',
            r'^.+(?<=_g)-mesh\.[Oo][Bb][Jj]$',
            r'^.+(?<=_h)-mesh\.[Oo][Bb][Jj]$',
            r'^.+_younvy(?:_[\dhg])?-mesh\.[Oo][Bb][Jj]$',
        )
Ejemplo n.º 2
0
    def __init__(self, name, val, has_cn):
        super(PerInfo, self).__init__(name, val)

        self.data = GlobalData()

        self._tex_path = "Empty"
        self.more_tex = []
        self._mesh_path = "Empty"
        self.more_mesh = []

        self.lay_in = ""

        self.is_able_work = False

        self._save_path: str = ""

        self.cn_name = val
        self.has_cn = has_cn

        self.tree_ID = ...
        self.tex_id = ...
        self.more_tex_per_id = []
        self.mesh_id = ...
        self.more_mesh_per_id = []

        self._is_save_as_cn = True
Ejemplo n.º 3
0
    def __init__(self, parent: es.PerWorkList, view_work: es.PerWorkList,
                 frame: MainFrame):
        super(DragOrder, self).__init__()
        self.view_work = view_work
        self.frame = frame

        self.parent = parent
        self.data = GlobalData()
Ejemplo n.º 4
0
    def __init__(self, parent, path=os.getcwd()):
        super(MainFrame, self).__init__(parent)
        # 添加图标
        icon = wx.Icon(os.path.join(path, "core\\assets\\Tools.ico"))
        self.SetIcon(icon)
        # 舰娘名称文件
        self.names = {}
        with open(os.path.join(path, "core\\assets\\names.json"), "r")as file:
            self.names = json.load(file)
        # 设置文件
        with open(os.path.join(path, "core\\assets\\setting.json"), 'r')as file:
            self.setting_info = json.load(file)

        self.root = self.m_treeCtrl_info.AddRoot(u"碧蓝航线")
        # 数据储存结构实例
        self.painting_work = PerWorkList()
        self.view_work = PerWorkList()
        # 查找tree索引的信息
        self.pos, self.type_is, self.name = None, None, None
        # 设置拖动绑定
        self.drop = DragOrder(self.painting_work, self.view_work, self)
        self.m_treeCtrl_info.SetDropTarget(self.drop)
        # 立绘还原线程
        self.thread_quick = None
        self.thread_main = None
        # 进入退出状态
        self.enter_exit = False
        # 保存路径,脚本路径
        self.save_path = ""
        self.work_path = path
        # 之窗口(只有一个)
        self.__dialog = None
        # ,搜索,筛选器
        self.search_type = False
        self.filter_type = False
        # 常参储存类
        self.data = GlobalData()

        self.select_data = None

        self.frame_size = self.Size
Ejemplo n.º 5
0
 def __init__(self, item: collections.abc.Iterable = None):
     super(PerWorkList, self).__init__(item)
     self.data = GlobalData()
Ejemplo n.º 6
0
    def run(self):
        data = GlobalData()
        for self.index in range(len(self.able)):

            if self.stop:
                return
            if self.index < len(self.able) and not self.stop:
                now_info: PerInfo = self.able[self.index]
                self.format.m_staticText_info.SetLabel(
                    "当前第%d个!为:%s 类型-直接还原" % (self.index + 1, now_info.cn_name))

                now_info.is_save_as_cn = self.setting[data.sk_use_cn_name]

                # 文件分类部分
                if self.setting[data.sk_output_group] == data.feg_do_no_group:
                    save_path = self.save_path

                elif self.setting[data.sk_output_group] == data.feg_by_type:
                    pattern_skin = data.fp_skin
                    pattern_power = data.fp_build_up
                    pattern_marry = data.fp_wedding
                    pattern_young = data.fp_young
                    pattern_self = data.fp_default_skin
                    if pattern_skin.match(now_info.name) is not None:

                        save_path = f"{self.save_path}\\皮肤"

                    elif pattern_marry.match(now_info.name) is not None:
                        save_path = f"{self.save_path}\\婚纱"

                    elif pattern_power.match(now_info.name) is not None:
                        save_path = f"{self.save_path}\\改造"

                    elif pattern_self.match(now_info.name) is not None:
                        save_path = f"{self.save_path}\\原皮"

                    elif pattern_young.match(now_info.name) is not None:
                        save_path = f"{self.save_path}\\Lily化"

                    else:
                        save_path = f"{self.save_path}\\其他"

                elif self.setting[data.sk_output_group] == data.feg_by_name:
                    val = re.match(r'^(.+)(_[hg\d])$', now_info.name)
                    if val is not None:
                        val = val.group(1)
                        if now_info.has_cn and self.setting[
                                data.sk_use_cn_name]:
                            value = self.names[val]
                            if value != "":
                                val = value
                    else:
                        if now_info.has_cn and self.setting[
                                data.sk_use_cn_name]:
                            val = now_info.cn_name
                        else:
                            val = now_info.name

                    save_path = f"{self.save_path}\\{val}"

                elif self.setting[data.sk_output_group] == data.feg_by_is_able:
                    save_path = f"{self.save_path}\\{'还原'}"

                else:
                    save_path = self.save_path

                os.makedirs(save_path, exist_ok=True)

                now_info.add_save(save_path)

                is_good, info = ImageWork.restore_tool(now_info)
                if not is_good:
                    self.format.m_staticText_info.SetLabel(info)

                val = round(100 * (self.index / len(self.able)))
                self.format.m_gauge_state.SetValue(val)
                self.index += 1

        if self.stop:
            return
        if self.setting[data.sk_export_all_while_copy]:

            num = 0
            if self.setting[data.sk_output_group] == data.feg_by_is_able:
                save_path = f'{self.save_path}\\拷贝'
            else:
                save_path = self.save_path

            os.makedirs(save_path, exist_ok=True)

            for name in self.unable:
                if self.stop:
                    return
                name: PerInfo = name
                name.add_save(save_path)
                num += 1
                shutil.copyfile(name.tex_path, name.save_path)

                self.format.m_gauge_state.SetValue(
                    round(100 * (num / len(self.unable))))
                self.format.m_staticText_info.SetLabel(
                    f"当前:{name.cn_name},仅拷贝")

        self.format.m_staticText_info.SetLabel(
            f"完成,共{len(self.able) + len(self.unable)}")
        self.format.start = False

        if self.stop:
            return

        self.format.m_gauge_state.SetValue(100)

        if self.setting[data.sk_open_output_dir]:
            os.system(r'start "%s"' % self.save_path)

        if self.setting[data.sk_finish_exit]:
            self.format.exit(None)
Ejemplo n.º 7
0
    def file_deal(paths, info_list: PerWorkList, clear_list: bool = False, pattern=r'^[.\n]*$',
                  is_file=True,
                  replace_str: str = '', names: dict = None, type_set=1):
        data = GlobalData()

        def info_write_builder(is_files, dict_path_group, replace_string, info_group,
                               names_dict, type_use):
            def info_write(per_path):
                if not is_files:
                    name = per_path
                    per_path = dict_path_group[name]
                    name = op.splitext(name)[0].replace(replace_string, '')
                else:
                    name = op.splitext(op.basename(per_path))[0].replace(replace_string, '')

                name = re.sub(r'\s#\d+?$', "", name, flags=re.IGNORECASE)

                key = info_group.append_name(name, names_dict)

                if type_use == data.fi_texture_type:
                    info_group.set_tex(per_path, key)
                if type_use == data.fi_mesh_type:
                    info_group.set_mesh(per_path, key)

            return info_write

        try:
            if names is None:
                names = {}

            pattern_re = re.compile(pattern)
            if not is_file:
                dict_path = paths.copy()
                paths = paths.keys()
                num = len(paths)
            else:
                dict_path = {}
                num = len(info_list)

            if clear_list:
                if type_set == 2:
                    info_list.clear_mesh()
                if type_set == 1:
                    info_list.clear_tex()
                num = 0

            if not len(paths) == 0:

                path = filter(lambda x: pattern_re.match(
                    re.sub(r'\s#\d+?(?=\.png|obj)', "", os.path.basename(x), flags=re.IGNORECASE)) is not None, paths)
                path = list(path)

                info_write2 = info_write_builder(is_file, dict_path, replace_str, info_list,
                                                 names, type_set)

                path_len = len(path)

                num += len(list(map(info_write2, path)))

                if path_len == 0:
                    return False, '导入完成,无新增项!'
            else:
                return False, '导入失败,无导入项!'
        except (TypeError, KeyError, RuntimeError)as info:
            #  raise
            return False, '导入失败,发生错误!%s' % info
        else:
            return True, '导入成功! 成功导入%d个!' % num
from core.src.static_classes.static_data import GlobalData

data = GlobalData()
a = {
    data.sk_clear_when_input: True,
    data.sk_finish_exit: True,
    data.sk_skip_exist: True,
    data.sk_open_output_dir: True,
    data.sk_use_cn_name: True,
    data.sk_make_new_dir: True,
    data.sk_export_all_while_copy: False,
    data.sk_input_filter_mesh: r'.+\.[Oo][Bb][Jj]',
    data.sk_input_filter_tex: r'.+\.[Pp][Nn][Gg]',
    data.sk_input_filter: 0,
    data.sk_output_group: 0
}

print(a)
import json

with open("setting.json", 'w') as file:
    json.dump(a, file)