コード例 #1
0
    def alignAssetKey(self, view, assets):
        ext = view.viewport_extent()
        if self.needLongPanel:
            viewportRate = (ext[0] + self.getLineNumerExt(view)
                            ) / self.vOpts("screen_param")
            panelWidth = int(viewportRate * self.vOpts("panel_param"))
        else:
            panelWidth = self.vOpts("panel_width")
        assetKeys = []
        for asset in assets:
            infoCount = len(asset.keyInfo) if asset.keyInfo else 0
            if infoCount == 0:
                assetKeys.append(asset.key)
            elif infoCount == 1:
                lkey, rkey = asset.key, asset.keyInfo[0]
                assetKeys.append(Str.alignmentBothSide(lkey, rkey, panelWidth))
            elif infoCount == 2:
                lkey, rkey, tip = asset.key, asset.keyInfo[0], asset.keyInfo[1]
                keyArr = [Str.alignmentBothSide(lkey, rkey, panelWidth)]
                tipArr = tip.split("\n")
                for idx in range(len(tipArr), 3):
                    tipArr.append("")
                keyArr.extend(tipArr[:3])
                assetKeys.append(keyArr)
            else:
                raise Exp.WrongCallError(
                    "key item count: {} is not support!".format(len(keyArr)))

        return assetKeys
コード例 #2
0
    def alignAssetKey(self, view, assets):
        ext = view.viewport_extent()
        if self.needLongPanel:
            viewportRate = (ext[0]+self.getLineNumerExt(view))/self.vOpts("screen_param")
            panelWidth = int(viewportRate * self.vOpts("panel_param"))
        else:
            panelWidth = self.vOpts("panel_width")
        assetKeys = []
        for asset in assets:
            infoCount = len(asset.keyInfo) if asset.keyInfo else 0
            if infoCount == 0:
                assetKeys.append(asset.key)
            elif infoCount == 1:
                lkey, rkey = asset.key, asset.keyInfo[0]
                assetKeys.append(Str.alignmentBothSide(lkey, rkey, panelWidth))
            elif infoCount == 2:
                lkey, rkey, tip = asset.key, asset.keyInfo[0], asset.keyInfo[1]
                keyArr = [Str.alignmentBothSide(lkey, rkey, panelWidth)]
                tipArr = tip.split("\n")
                for idx in range(len(tipArr), 3):
                    tipArr.append("")
                keyArr.extend(tipArr[:3])
                assetKeys.append(keyArr)
            else:
                raise Exp.WrongCallError("key item count: {} is not support!".format(len(keyArr)))

        return assetKeys
コード例 #3
0
    def run(self, qAndaDict=None, **kwds):
        content = kwds.get("content")
        ignore_target = kwds.get("ignore_target", [])
        self.transfKey = "key" not in ignore_target
        self.transfVal = "val" not in ignore_target
        self.ignoreKeys = kwds.get("ignore_keys", [])
        self.need_expand_variables = kwds.get("need_expand_variables", True)
        belong_to_project = kwds.get("belong_to_project", False)
        record_mode = kwds.get("record_mode", "record")
        self.qAndaDict = qAndaDict

        key = content["key"]
        if self.qAndaDict is not None:
            key = Str.renderText(key, **self.qAndaDict)

        key = key.lower()
        if record_mode == "erase":
            self.vEraseContent(key, belong_to_project)
            return
        elif record_mode == "toggle":
            self.vEraseContent(key, belong_to_project)
        elif record_mode == "record":
            pass
        else:
            sublime.error_message(
                "record_mode: {} is not allowed".format(record_mode))

        self.vPreTransContent(key, content)
        content = Data.transfJsonObj(content, self.needTransf, self.transf)
        self.vPostTransContent(content)

        self.vRecordContent(key, content, belong_to_project)
コード例 #4
0
    def run(self, qAndaDict=None, **kwds):
        content = kwds.get("content")
        ignore_target = kwds.get("ignore_target", [])
        self.transfKey = "key" not in ignore_target
        self.transfVal = "val" not in ignore_target
        self.ignoreKeys = kwds.get("ignore_keys", [])
        self.need_expand_variables = kwds.get("need_expand_variables", True)
        belong_to_project = kwds.get("belong_to_project", False)
        record_mode = kwds.get("record_mode", "record")
        self.qAndaDict = qAndaDict

        key = content["key"]
        if self.qAndaDict is not None:
            key = Str.renderText(key, **self.qAndaDict)

        key = key.lower()
        if record_mode == "erase":
            self.vEraseContent(key, belong_to_project)
            return
        elif record_mode == "toggle":
            self.vEraseContent(key, belong_to_project)
        elif record_mode == "record":
            pass
        else:
            sublime.error_message(
                "record_mode: {} is not allowed".format(record_mode))

        self.vPreTransContent(key, content)
        content = Data.transfJsonObj(content, self.needTransf, self.transf)
        self.vPostTransContent(content)

        self.vRecordContent(key, content, belong_to_project)
コード例 #5
0
    def run(self, qAndaDict=None, **kwds):
        _async = kwds.pop("async", True)
        commands = kwds.pop("commands")
        run_mode = kwds.pop("run_mode", "capture_both")
        win_mode = kwds.pop("win_mode", "hide")
        run_opts = kwds.pop("run_opts", {})
        dyn_report_mul = kwds.pop("dyn_report_mul", True)

        if qAndaDict:
            commands = [Str.renderText(cmd, **qAndaDict) for cmd in commands]

        commands = Setting.expandVariables(self.window, *commands)
        cwd, = Setting.expandVariables(self.window, run_opts.get("cwd", "${file_path}"))
        if cwd:
            run_opts["cwd"] = cwd

        workParams = dict(commands=commands,
                          run_mode=run_mode,
                          win_mode=win_mode,
                          run_opts=run_opts,
                          dyn_report_mul=dyn_report_mul
                         )
        print(workParams)
        if _async:
            view = self.window.active_view()
            self.asncCmdCount += 1
            if run_mode != "run":
                view.set_status(ASYNC_STATUS_KEY, "***asnc command running***")

            self.doWorkAsnc(view, workParams, **kwds)
        else:
            self.doWork(**Data.mergeDicts(kwds, workParams))
コード例 #6
0
    def transf(self, obj, _):
        if self.qAndaDict is not None:
            obj = Str.renderText(obj, **self.qAndaDict)

        if self.need_expand_variables:
            obj, = Setting.expandVariables(self.window, obj)

        return obj
コード例 #7
0
    def transf(self, obj, _):
        if self.qAndaDict is not None:
            obj = Str.renderText(obj, **self.qAndaDict)

        if self.need_expand_variables:
            obj, = Setting.expandVariables(self.window, obj)

        return obj
コード例 #8
0
    def run(self, qAndaDict=None, **kwds):
        _async = kwds.pop("async", True)
        self.code = kwds.pop("code")

        if qAndaDict:
            self.code = Str.renderText(self.code, **qAndaDict)

        if _async:
            view = self.window.active_view()
            self.asncCmdCount += 1
            view.set_status(ASYNC_STATUS_KEY, "***asnc code running***")

            self.doWorkAsnc(view, **kwds)
        else:
            self.doWork(**kwds)
コード例 #9
0
from MUtils import Os, Str
from . import WView, Selection

_extendVariableKeys = {
    "m_sel_row": lambda vw: str(Selection.getRowCols(vw)[0][0]),
    "m_sel_col": lambda vw: str(Selection.getRowCols(vw)[0][1]),
    "m_sel_text": lambda vw: Selection.getSelTexts(vw)[0],
    "m_sel_lefttext": lambda vw: Selection.getLeftTexts(vw)[0],
    "m_sel_righttext": lambda vw: Selection.getRightTexts(vw)[0],
    "m_sel_line": lambda vw: Selection.getLines(vw)[0],
}
_extendVariableCmds = {
    "!lower": lambda v: v.lower(),
    "!upper": lambda v: v.upper(),
    "!unixpath": lambda v: v.replace("\\", "/"),
    "!020": lambda v: Str.padWithChar(v, "0", 20),
}


@WView.fwPrepareWindow
def expandVariables(window, *strs, forSublime=True, forEnv=True):
    view = window.active_view()
    sublimeVariables = window.extract_variables()

    extendVariables = {k: kFn(view) for k, kFn in _extendVariableKeys.items()}

    for cmd, cmdFn in _extendVariableCmds.items():
        extendVariables.update(
            {k + cmd: cmdFn(v)
             for k, v in sublimeVariables.items()})
コード例 #10
0
from MUtils import Os, Str
from . import WView, Selection

_extendVariableKeys = {
    "m_sel_row": lambda vw: str(Selection.getRowCols(vw)[0][0]),
    "m_sel_col": lambda vw: str(Selection.getRowCols(vw)[0][1]),
    "m_sel_text": lambda vw: Selection.getSelTexts(vw)[0],
    "m_sel_lefttext": lambda vw: Selection.getLeftTexts(vw)[0],
    "m_sel_righttext": lambda vw: Selection.getRightTexts(vw)[0],
    "m_sel_line": lambda vw: Selection.getLines(vw)[0],
}
_extendVariableCmds = {
    "!lower": lambda v: v.lower(),
    "!upper": lambda v: v.upper(),
    "!unixpath": lambda v: v.replace("\\", "/"),
    "!020": lambda v: Str.padWithChar(v, "0", 20),
}

@WView.fwPrepareWindow
def expandVariables(window, *strs, forSublime=True, forEnv=True):
    view = window.active_view()
    sublimeVariables = window.extract_variables()

    extendVariables = {k: kFn(view) for k, kFn in _extendVariableKeys.items()}

    for cmd, cmdFn in _extendVariableCmds.items():
        extendVariables.update({
            k+cmd: cmdFn(v) for k, v in sublimeVariables.items()
        })

    sublimeVariables.update(extendVariables)