Giter Site home page Giter Site logo

wxmedit / wxmedit Goto Github PK

View Code? Open in Web Editor NEW
641.0 22.0 93.0 19.58 MB

wxMEdit, a Cross-platform Text/Hex Editor, an improved version of MadEdit

Home Page: https://wxmedit.github.io/

License: GNU General Public License v3.0

Makefile 2.06% Shell 0.60% Batchfile 0.02% M4 0.04% Awk 0.01% sed 0.01% C++ 97.23% C 0.03%
wxmedit madedit c-plus-plus wxwidgets wxwidgets-applications text-editor hex-editor unicode encodings

wxmedit's Introduction

                      ==================================
                                wxMEdit v3.2
                      ==================================
About:
-----
wxMEdit is a cross-platform Text/Hex Editor written in C++ & wxWidgets.
wxMEdit is an improved version of MadEdit which has been discontinued.
wxMEdit supports many useful functions, e.g. Bookmark, Syntax Highlightings, 
Word Wraps, Encodings, Column/Hex Modes, Updates checking.
In HexMode, wxMEdit can open large files which size is up to 32GB (INT_MAX*16).

Important Note:
--------------
wxMEdit 3.2 changed some keyboard shortcuts,
see https://github.com/wxMEdit/wxMEdit/wiki/Keyboard-shortcuts-change-in-wxMEdit-3.2 .

Supported Platforms:
-------------------
A. Linux, BSDes, macOS, OpenIndiana, other Unix-like OSes and Haiku OS (__WXGTK__):
   a. GNU C++ 3.x or higher OR clang++ 2.8 or higher:
      Required Tools and Libraries for building:
      1. autoconf 2.63 or higher (optional)
      2. automake 1.11.1 or higher (optional)
      3. wxWidgets 2.8/3.0/3.2 with Unicode enabled
      4. Boost 1.53.0 or higher
      5. ICU4C 50 or higher
      6. libcurl 7.15.5 or higher

B. Windows / ReactOS / Wine (__WXMSW__):
   a. MinGW/MinGW-w64 GNU C++ 3.x or higher:
      Required Tools and Libraries for building:
      1. Bakefile 0.2.9~0.2.11
      2. wxWidgets 2.8/3.0/3.2 with Unicode enabled
      3. Boost 1.53.0 or higher
      4. ICU4C 50 or higher
      5. libcurl 7.15.5 or higher

   b. Visual C++ 2005/2008/2010~2022 (by upgrading from 2008 solution and project files):
      Required Tools and Libraries for building:
      1. Bakefile 0.2.9~0.2.11
      2. wxWidgets 2.8/3.0/3.2 with Unicode enabled
      3. Boost 1.53.0 or higher
      4. ICU4C 50 or higher
      5. libcurl 7.15.5 or higher

NOTE:
   You can download Bakefile at:
      https://bakefile.org/#old-version

Syntax files, Locale files and Settings:
---------------------------------------
  Syntax files: in the path $(wxMEditConfigPath)/syntax/
  Locale files: in the path $(wxMEditConfigPath)/locale/
  
  $(wxMEditConfigPath) are the one of below paths:
    1. wxMEdit execution file directory under Windows and Unix-like OS.
    2. $(HOME)/.wxmedit/ under Unix-like OS.
    3. $(PREFIX)/share/wxmedit/ under Unix-like OS.
    4. %APPDATA%\wxmedit\ under Windows accroding to settings.
  
  If wxMEdit does not find any files in those paths, 
  wxMEdit can also execute standalone by using default settings.
  
  When quit wxMEdit, wxMEdit will save the settings to:
    1. $(HOME)/.wxmedit/wxmedit.cfg under Unix-like OS.
    2. %APPDATA%\wxmedit\ or $(wxMEdit execution file directory)/wxmedit.cfg under Windows accroding to settings.
  And FontWidth.dat will also be saved to the same path.
  FontWidth.dat is Cache of Font-Width-Data, it can speed-up wxMEdit a lot.


ChangeLog:
----------
wxMEdit v3.2:
  1. added new feature: show file size in human readable format.
  2. added a option that always use certain encoding to open files.
  3. added GTK+ 3 and Wayland support.
  4. added High DPI supoport under Windows.
  5. redisigned the icons by jerome KASPER <neon.king.fr[at]gmail.com>.
  6. changed some keyboard shortcuts, see https://github.com/wxMEdit/wxMEdit/wiki/Keyboard-shortcuts-change-in-wxMEdit-3.2 .
  7. updated GB18030 support to GB18030-2022 standard.
  8. updated Unicode block descriptions for Unicode 15.0 (require ICU 72 or higher).
  9. fixed crash in text mode when a line exceed the limit of line length.
 10. fixed crash when pressing OK button in "About wxMEdit" window.
 11. fixed not responding when warping by window with text containing some tab characters.
 12. fixed broken triple click behavior in wxMEdit 3.1.
 13. fixed that the height of Information Window in MadEdit/wxMEdit (built with wxMSW-2.8) always reduce by 4.
 14. fixed fonts and encodings not restored after restart.
 15. fixed that cannot type characters via AltGr key.
 16. fixed cursor and selection rendering under Linux.
 17. fixed that IME candidate window doesn't follow the caret under Windows 10.
 18. added French translation by jerome KASPER <neon.king.fr[at]gmail.com>.
 19. updated Simplified Chinese translation.
 20. other minor changes and bug fixes.

wxMEdit v3.1:
  1. added a killer feature: word boundary with Chinese/Japanese/Thai/Lao/Khmer and Burmese characters etc.
  2. added a killer feature: word-wrap meet the Unicode® Standard Annex `#14`: Unicode Line Breaking Algorithm.
  3. added new feature: column align.
  4. added toolbar icon & shortcut for Inserting Ordered Sequence.
  5. changed End-of-Line mark patterns.
  6. updated Unicode block descriptions for Unicode 8.0 (require ICU 56 or higher).
  7. fixed incorrect word boundary with non-English characters when selecting word.
  8. fixed incorrect word-wrap with non-English letters.
  9. fixed broken characters input with numpad in wxMEdit that built with wxWidgets-3.0 GTK2.
 10. fixed incorrect behavior of when Ctrl-Backspace pressed at beginning of a text file OR at zero-width selection in column mode.
 11. fixed that cannot select the whole word wraped in different lines by double-click.
 12. fixed that triple-click cannot select a whole wrapped line.
 13. fixed that files are not keep in hex mode after restart & restore.
 14. fixed newline redundance when copying in regular text mode.
 15. updated Spanish translation by Carlos Sánchez <carlos1994sanchez[at]gmail.com>.
 16. updated Japanese translation by Tilt <tiltstr[at]gmail.com>.
 17. updated Simplified Chinese translation.
 18. updated Traditional Chinese translation by Vincent_TW.
 19. updated Russian translation by Будинов Станислав <stabud[at]yandex.ru>.
 20. other minor changes and bug fixes.

wxMEdit v3.0:
  1. added a killer feature: Inserting Ordered Sequence.
  2. added new options to display/print bookmark independent of line number.
  3. added a option whether enable dot matching new-line in regular expression.
  4. added a feature that show searching message in status bar when Search/Replace Dialog is invisible.
  5. improved bookmark appearance for displaying and printing.
  6. improved Tab and EOF mark pattern, make it easy to distinguish Tab mark from space mark.
  7. fixed that there are too few characters limited in a line with certain word wrap settings.
  8. fixed that width of list items in Syntax Highlighting Settings Dialog are not updated on resizing.
  9. fixed not responding when counting/replacing-all any zero-length assertions.
 10. updated Unicode block descriptions for Unicode 7.0 (require ICU 54 or higher).
 11. added German translation by Ronny Steiner <post[at]sirsteiner.de>.
 12. added Polish translation by Adam Massalski <massaada[at]wp.pl>.
 13. updated Simplified Chinese translation.
 14. updated Spanish translation by Carlos Sánchez <carlos1994sanchez[at]gmail.com>.
 15. updated Japanese translation by Tilt <tiltstr[at]gmail.com>.
 16. other minor changes and bug fixes.

See file ChangeLog for more changes.


License:
-------
wxMEdit is released under the GNU General Public License Version 3
or (at your option) any later version.


Authors:
------
JiaYanwei <wxmedit[at]gmail.com>          (current maintainer of wxMEdit)
jerome KASPER <neon.king.fr[at]gmail.com> (current maintainer of wxMEdit)
Alston Chen <madedit[at]gmail.com>        (creator of MadEdit)


Links:
-----
wxMEdit: https://wxmedit.github.io/
MadEdit: https://sourceforge.net/projects/madedit/
wxWidgets: https://www.wxwidgets.org/
Boost: https://www.boost.org/
ICU: https://icu.unicode.org/
Bakefile: https://bakefile.org/#old-version
Code::Blocks: https://www.codeblocks.org/
wxSmith: https://wiki.codeblocks.org/index.php?title=WxSmith_plugin
cURL: https://curl.se/
JLH fonts: https://jlhfonts.blogspot.com/
VC-LTL: https://github.com/Chuyu-Team/VC-LTL5
YY-Thunks: https://github.com/Chuyu-Team/YY-Thunks

wxmedit's People

Contributors

denir-li avatar gogelf avatar hltj avatar linxiaohui avatar massaada avatar neonkore avatar petronny avatar shamilbi avatar stanislavbudinov avatar tamilneram avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wxmedit's Issues

Switch to wxSmith RAD tool and fix inappropriate dialog items bug of MadEdit/wxMEdit

Switch to wxSmith RAD tool.
And redesign the dialogs to fix the bug of MadEdit/wxMEdit that font size and controls layout of dialogs were inappropriate. e.g. :

  • all fonts of all dialogs were too big under many Unix like OS.
  • all combo boxes were not big enough under most Unix like OS.
  • some controls of syntax highlighting dialog overlaped each other under most Unix like OS.
  • some controls were clipped when resized the find/relace/find-in-files dialog to minimal size under Windows/Unix like OS.
  • etc.

Most recent lists of wxMEdit/MadEdit were buggy

The recent lists:

  • Recent Encodings
  • Recent Fonts
  • Recent Find Texts
  • Recent Replace Texts
  • Recent Find Directories
  • Recent Find Filters
  • Recent Find Exclude Filters

Problem of them:

  1. All of them were case insensitive under Windows, but most of them should be case sensitive even under Windows.
  2. The first(most recent) item shown in associated menu was truncated if it contained "/".

e.g.:

  • Select view encoding "[CP437] Windows/DOS OEM (CP 437)", the most recent encoding in menu should be "[CP437] Windows/DOS OEM (CP 437)", but it shows "DOS OEM (CP 437)".

CP936, CP949, CP950 should support converting '\xFF' to Unicode

CP936, CP949, CP950 should support '\xFF' converting to Unicode.

Test program on Windows7:

#include <windows.h>
#include <iostream>

int main()
{
    WCHAR dest[8] = {0,0,0,0,0,0,0,0};

    DWORD n = MultiByteToWideChar(936, 0, "\xFF", -1, NULL, 0);
    MultiByteToWideChar(936, 0, "\xFF", -1, dest, 8);
    std::cout << "936 " << n << " " << std::hex << dest[0] << std::endl;

    n = MultiByteToWideChar(949, 0, "\xFF", -1, NULL, 0);
    MultiByteToWideChar(949, 0, "\xFF", -1, dest, 8);
    std::cout << "949 " << n << " " << std::hex << dest[0] << std::endl;

    n = MultiByteToWideChar(950, 0, "\xFF", -1, NULL, 0);
    MultiByteToWideChar(950, 0, "\xFF", -1, dest, 8);
    std::cout << "950 " << n << " " << std::hex << dest[0] << std::endl;

    return 0;
}

the result:

936 2 f8f5
949 2 f8f7
950 2 f8f8

The Encoding "EUC-JP" of MadEdit/wxMEdit run under UNIX were quite different from under Windows

The Encoding "EUC-JP" of wxMEdit/MadEdit run under UNIX like OS were quite different from under Windows. Under windows it was DOUBLE-byte encoding "CP20932" with single-byte 0xA0 and 0xFF mapping changed, but under Linux it was TRIPLE-byte encoding.

e.g.:

characters: U+00FA(ú)      and U+00FC(ü)
CP20932:    "\xAB\x62"     and "\xAB\x64"
EUC-JP:     "\x8F\xAB\xE2" and "\x8F\xAB\xE4"

while MadEdit/wxMEdit treat them as DOUBLE-byte encoding even under UNIX like OS,and both the characters will be converted to "\x8F\xAB" under UNIX like OS.

Chinese translation for "Words" of Word Count Dialog should updated

Chinese translation for "Words" of Word Count Dialog should be "词数"/"詞數".
Since wxMEdit count Chinese words rather than Chinese characters if the ICU library version >= 50.
e.g.:
Edit "汉字中文字符"/"漢字中文字符" with wxMEdit/ICU 52.
The count of words is 3, for there are 3 words(词/詞): "汉字"/"漢字", "中文", "字符".

While edit the same Chinese text with wxMEdit/ICU 44.
The count of words is 6, for there are 6 characters(字).
And we can still condisder it means 6 words(词/詞), but the word segmentation is not good enough :(.

CP932(Windows-31J) missed converting some Single-bytes to Unicode

CP932(Windows-31J) missed converting some Single-bytes to Unicode.
Test program on Windows7:

#include <windows.h>
#include <iostream>

void win_mbtou(UINT cp, const char* src)
{
    WCHAR dest[8] = {0,0,0,0,0,0,0,0};

    DWORD n = MultiByteToWideChar(cp, 0, src, -1, NULL, 0);
    MultiByteToWideChar(cp, 0, src, -1, dest, 8);

    std::cout << cp << " " << n << " " << std::hex << dest[0] << std::endl;
    std::cout << std::dec;
}

int main()
{
    win_mbtou(932, "\xA0");
    win_mbtou(932, "\xFD");
    win_mbtou(932, "\xFE");
    win_mbtou(932, "\xFF");

    return 0;
}

the result:

932 2 f8f0
932 2 f8f1
932 2 f8f2
932 2 f8f3

Merge of the different branches

Hi, Thank you for your bug fix!

I have a suggestion about the project. Why not cooperate/combine with other similar projects?

There exist some user's patches to make it usable in recent compile environment in the original project web site and others in the internet. For example, here(https://code.google.com/p/madedit-pv), and yours(http://code.google.com/p/wxmedit). The user would be confused if there exist similar projects. It's also waste of time for a bug be solved multiple times (such as the ClientBitmap bug).

madedit-pv exist for a while and includes several useful features, such as hight-light of key words. It would be nice if both of the projects can sync to create a great editor.

Thanks!

Crash on restart if "Max line length before Line-Wrap" was set too large

reported by zaneto[at]users.sf.net.
https://sourceforge.net/p/madedit/discussion/421172/thread/033c9f33/

Version: 0.2.9.1

Repro steps:

  1. In "Tools" - "Options" - "Edit", set the value of "Max line length before
    Line-Wrap" to "999999999".
  2. Press "OK" button.
  3. Close MadEdit.
  4. Restart MadEdit.

Expected result:
MadEdit is restarted.

Actual result:
An error will pop up, signifying memory access failure (The memory could not be "written"). MadEdit cannot be started.

IsUTF8()/IsTextUTF8() of wxMEdit/MadEdit cannot distinguish invalid encoded bytes.

IsUTF8()/IsTextUTF8() of wxMEdit/MadEdit cannot distinguish invalid encoded bytes:

  • first byte is '\xC0' - '\xC1'.
  • first byte is '\xED' and sencod byte not less than '\xA0'.
  • first byte is '\xE0' and second byte less than '\xA0'.
  • first byte is '\xF0' and second byte less than '\x90'.
  • first byte is '\xF4' and second byte greater than '\x8F'.

Can not convert case of some characters

Case conversion of some characters are incorrect.
e.g. U+A758 / U+A759 on linux, U+10414 / U+1043C and other non-bmp letters on windows.

Case-insensitive searching and sorting has the same problem.

Correct invalid UTF-8 detection.

ICU Encoding Detector detect UTF-8 is not strict enough as UTF-8 checker.
If the UTF-8 checker detect a file is not UTF-8, the file should not be detected as UTF-8 text even if ICU Encoding Detector detect it as UTF-8 text.

Support more graph characters of ASCII-Art

Most of C0-characters should be mapped to graph characters if syntax is ASCII-Art.
e.g.
0x03, 0x04, 0x05, 0x06 should be mapped to the heart, club, diamond, spade characters:
♥♦♣♠

Improve Search Dialogs

Improve Search Dialog and Replace Dialog:

  • add option "Wrap around"
  • merge Search Dialog to Replace Dialog and remove Search Dialog
  • change message notification from poping up message-box to showing in bottom of dialog (like Notepad++)
  • change initial position of Dialog and font-size of input

Three modally dialogs should avoid the bug 4373 of wxMSW-2.8/wxMSW-2.6

Strictly speaking, this is the bug of wxMSW-2.8/wxMSW-2.6:
http://trac.wxwidgets.org/ticket/4373

To reproduce the bug:

  1. Rebuild MadEdit / wxMEdit revision 8a26033 or before with official wxMSW-2.8.12 or lower.
  2. Start the rebuilt MadEdit.exe / wxmedit.exe.
  3. Create two new files NoName1 and NoName2, the focus is on NoName2 now.
  4. Select the BUGGY-MODALLY-DIAGLOG in "Tools" menu.
  5. Close the modally dialog.
  6. Then switch to NoName1, and reopen the same BUGGY-MODALLY-DIAGLOG.
  7. Close the modally dialog again, and the focus will jump to NoName2!!

The BUGGY-MODALLY-DIAGLOGs are:

  • "Convert File Encoding..." dialog.
  • "Syntax Highlighting Settings..." dialog.
  • "Options..." dialog.

All of them were in "Tools" menu.

Crash when hex-searching a blank string

like #5

Hex-searching a string only contain space(s) and/or tab(s), whichever of "Find Next", "Find Previous", "Replace" or "Replace All" will cause program crash.

Merge the patches in FreeBSD ports

This is a sub-issue of #15 .
Merge the patches in ftp://ftp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz .

  • patch-charset-detector__src__entry__impl.cpp
  • patch-charset-detector__src__prmem.h
  • patch-src__MadEdit__MadEdit.cpp

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.