[packaging] WingHexExplorer2 的 v2.2.3 后续开发日志 Resolved
Tofloor
poster avatar
寂静的羽夏
deepin
2025-05-06 14:05
Author

一个自由的强大免费的十六进制编辑器,基于 QT C++ 进行开发,作者是寂静的羽夏。

如有 Bug, 欢迎反馈到 Github 上,如果你访问这有困难的话,也可以反馈到 Gitee 上。如果实在不行,可以通过我的 博客园 上公告栏的任意一种联系方式来告诉我。不过我还是希望你反馈到 Github 上方便我写递交注释的。

开源不易,也欢迎赞助或者参与代码和文档贡献,我默认会将您放入鸣谢标签的内容进行鸣谢。

许可证:AGPL-3.0


screenshot.png


大家好啊,v2.2.2 版本在五一期间发布了,日志不在这发了,看我的网页,发布之后在我使用的过程中仍旧发现了一些问题,搜索的值在通配符匹配还是除了问题,打算最近一周我再更一个版本,然后根据我的想法再加一点点功能,重点增强了脚本代码预处理器,下面是一个写的脚本(注:该脚本只能在我 GitHub 的 main 分支最新提交才能有效),可以当个示例:

/* @brief 一个拷贝选中字节为 C/C++ 样式数组的脚本
 * @license BSD 3-Clause License
 * @author 寂静的羽夏 (wingsummer)
 */

string header = "[" + __SECTION_BASE__ + "] ";
string icon = ":/com.wingsummer.winghex/images/copyhex.png";

enum Message { LowVersion, NoFileEdit, NoCopy, CopyClipBoard }

char toHexUpper(byte value) { return "0123456789ABCDEF"[value & 0xF]; }

string trMsg(Message msg) {
#if __LANG__ == "zh_CN"
    if (msg == Message::LowVersion) {
        return "该脚本仅支持在软件 2.2.3 及其之后版本下运行";
    } else if (msg == Message::NoFileEdit) {
        return "无当前编辑的文件";
    } else if (msg == Message::NoCopy) {
        return "无拷贝项目";
    } else if (msg == Message::CopyClipBoard) {
        return "已拷贝到剪切板";
    }
#else
    if (msg == Message::LowVersion) {
        return "Script should be run with verison higher than or equal to " +
               "2.2.3";
    } else if (msg == Message::NoFileEdit) {
        return "There is no editing file";
    } else if (msg == Message::NoCopy) {
        return "Nothing to copy";
    } else if (msg == Message::CopyClipBoard) {
        return "Copy to clipboard";
    }
#endif
    return "";
}

string toHex(byte value) {
    string ret = "0x";
    ret += toHexUpper(value >> 4);
    ret += toHexUpper(value & 0xF);
    return ret;
}

bool check() {
#if __WING_VERSION_MAJOR__ >= 2 && __WING_VERSION_MINOR__ >= 2 && __WING_VERSION_PATCH__ >= 3
    return true;
#else
    return false;
#endif
}

int main() {
    if (!check()) {
        toast(header + trMsg(Message::LowVersion), icon);
        return -2;
    }

    if (!reader::isCurrentDocEditing()) {
        toast(header + trMsg(Message::NoFileEdit), icon);
        return -1;
    }

    int64 total = reader::selectionCount();

    if (total < 1) {
        toast(header + trMsg(Message::NoCopy), icon);
        return 0;
    }

    string buffer = "unsigned char array[] = {";

    string[] strs;

    for (int64 i = 0; i < total; i++) {
        byte[] bytes = reader::selectedBytes(i);
        string str = toHex(bytes[0]);
        for (uint p = 1; p < bytes.length(); p++) {
            str += ", ";
            str += toHex(bytes[p]);
        }
        strs.insertLast(str);
    }

    buffer += string::join(strs, ", ");
    buffer += '};';

    clipboard::setText(buffer);

    toast(header + trMsg(Message::CopyClipBoard), icon);
    return 0;
}

目前我觉得没多少人用,我基本没收到任何软件使用上的反馈,打算文档就停更了,最近一周发布 v2.2.3 也停止功能更新,脚本功能和脚本编辑器足够让我认为个人比较舒服的开发了,虽然提示会缺点东西,但我不打算去修了。

下一次更新的内容,更新完就停了:

  • 修复搜索
  • 脚本宏增强
  • 增强 print 脚本函数,新增 println 方便使用
  • 脚本预处理器增强
  • 允许脚本管理器往十六进制编辑邮件菜单增加选项

大家有啥好的建议就提一提,新功能我不打算加大的了,这应该算是我的一个建议征求贴。

Reply Favorite View the author
All Replies
microjo
deepin
2025-05-07 11:02
#1

支持一下,可以在arm64上打包成功吧

Reply View the author
寂静的羽夏
deepin
2025-05-07 11:40
#2
microjo

支持一下,可以在arm64上打包成功吧

你可以试试,我不清楚 arm 的情况,正常来说没问题。

Reply View the author