2da editor - treat this as Beta until you get comfortable with it. And it's always a good idea to keep regular backups of custom files such as 2das.
.NET 3.5 required
c# sourcecode @ https://github.com/kevL/yata
forum thread @ https://forum.neverwintervault.org/t/yata-2da-editor/1462
ReadMe.txt @ github
Attachment | Size |
---|---|
Yata_231223_5620.7z [latest] (496) | 148.44 KB |
Yata_230401_5500.7z (389) | 147.11 KB |
IMPORTANT Update ver 2.7
fixed save bug when multiple files are open (ie, one file is saved then another file is saved)
Gotta tell you this is an awesome app! I use Notepad++ mostly to edit, but I was havving a real hard time introducing new creature speed varables outside of the ones already in the game with it. I also was having issues with formatting using the 2da editor. But no issues with this, pretty much the best 2da app for NWN2, for me anyway! Great work!
thanks adam. am getting old and its good to hear I did a thing right in my life. ;):)
/cheers
Hi KevL,
Thanks for putting this together. Always good to have alternative sources of tools we may need. :)
Finally got around to using the latest and thankful for it. Thanks KevL!
Lance.
next version will have Undo/Redo for table-edits, plus little things i've noticed here & there :)
ver 2.8
Undo/Redo + tweaks and nuances
ver 2.8.1
fixes
– trying to paste text to either the Searchbox or Gotobox with the keyboard [Ctrl+v] caused the currently selected cell to take the text instead.
– Gotobox defaults to “0” if a nonnumeric or negative value is entered.
feature
– Ctrl+mousewheel forces horizontal scroll if applicable.
notes
– don’t overwrite your settings file, it hasn’t changed. Only the ReadMe and executable have been changed.
Yata ver.2.8.2
- clicking a label in the property panel selects the cell in the table (previous behavior was that a cell in the table would be selected only when a field in the property panel was being edited). Note that this auto-selection will be bypassed if more than one cell is currently selected on the table.
- bugfix: allow shortcut keys for copy and paste [Ctrl+c] [Ctrl+v] to work in the PropertyPanel's editor (instead of being intercepted by a copy/paste of the table's selected gridcell).
yata changelog ver.2.9.0.0
- add CreateRows dialog (receive a bonus DarthVader quote on any error)
- add shortcut [Ctrl+e] for SaveAs
- add shortcuts to 2daOps menu
- add mnemonics to all menus
- fix/tighten many shortcuts' Enabled/Disabled determinations
- tweaks to Clipboard editor (no wordwrap, add Done button)
- monitor changes on disk to opened files (deleted, moved, renamed, or saved outside of Yata)
- SaveAll on the File menu (is Beta - be careful, make backups of open files first! SaveAll is Beta)
- don't beep when pressing [Enter] on Search or Goto
- Ctrl+Left/Right: shifts table by visible width left/right
- update ReadMe.txt
I'm the only guy testing these releases. And all i do is poke at it with my mouse for a while ... but the state-space in a multi-tabbed app is, uh, large. So on a large release like this, be wary. Please keep your eye on things,
Do backups.
update 2019 may 22
ver.3.0.0.0
- implement internal diff/merge operations (right-click a Tab: select diff1, select diff2, reset, justify tables)
- implement var "diff=" in Settings.Cfg for an external diff/merge program (WinMerge, kdiff3)
- fix Clear Undo/Redo's enabled/disabled determination
- underline the current tab's text iff the tabcontrol has focus (as an indicator that the grid does *not* have focus)
- change shift-page-by-visible-width's modifier key to Shift+Left/Right (was Ctrl+Left/Right)
- Shift+Mousewheel shifts table by visible height/width (Ctrl+Mousewheel already forces horizontal scroll if possible)
update 2019 june 8
ver.3.3.0.0
- PropertyPanel: draw the background of frozen fields with a lightgray color
- PropertyPanel: cycle location through all four corners of the table (instead of just top or bottom right)
- PropertyPanel: fix location when the form is resized
- FontDialog: rework (incl/ remove ShowCurrentFontString from the Font menu and display the .NET string in the dialog itself)
- Shift-key reverses Search direction (ditto for GotoLoadchanged and GotoDiff)
- add Save to the right-click tab menu
- add Edit to the right-click cell menu
- add option for a fixedwidth font in Settings.Cfg ("fontf=")
- add option for a recently opened files list in Settings.Cfg ("recent=") [see note below.]
- paint frozen fields' background color as selected, searched, loadchanged, or diffed as applicable
- render the text of a colhead in a different color if the table is sorted by that col
- fix Clipboard menu's enabled determinations
- close the tab, cell, and/or context menu (if showing) when the table is scrolled
- close the DifferDialog on diff-reset or re-diff
- reworked scrollbars and totally reworked UI invalidations/screen updates -- this involved a lot of fiddly stuff and if i missed something it could result in an awkward/unrefreshed UI-state (if screen updates) or throw an exception (if scrollbars). Pls report w/ steps to reproduce if you notice a glitch.
- minor and not so minor code fixes & changes
- update ReadMe.txt
- re. PathInfo for Spells.2da: values for the following cols can be chosen via right-click Cell->input:
- School
- Range
- MetaMagic
- TargetType
- ImmunityType (not technically used by NwN2 but it's a good idea to keep things consistent)
- Category (if Categories.2da is pathed)
- UserType
- AsMetaMagic
- TargetingUI (if SpellTarget.2da is pathed)
Reminder to backup your custom 2das before opening them in Yata (!)
a Note on Settings.Cfg option.
recent=(integer) a count of recently opened file-paths to store. If left
blank or a value less than 1 is specified, recently opened files will
not be tracked, while 16 is the hardcoded upper limit. SETTING
"recent=" TO A VALID VALUE ENABLES YATA TO WRITE THE FILE Recent.Cfg
TO ITS APPLICATION DIRECTORY. Recent.Cfg stores filepaths (without
quotes). THE WRITE-OPERATION CAN FAIL for a variety of reasons that I
really don't want to be arshed with - hence the option so you can
decide if it works on your OS.
2019 jun 13
ver 3.3.3.1
- fix overflow on the Recent files list
- DifferDialog: show Goto button only if cell-diffs actually occured + tweak format of output text
- (Paths) InfoInputDialog: list "MetaMagic" Invocation Blasts and Shapes alphabetically
- (Paths) InfoInputDialog: fix initial "School" checkbox determinations
- (Paths) InfoInputDialog: add Clear button, add MetaMagic groups
- RowCreatorDialog: fix possible invalid value not generating an error
- RowCreatorDialog: rewrite
-- Add at end
-- Insert at ID
-- by final ID
-- by quantity of rows
-- option to fill with currently copied row fields
Settings.Cfg has not changed; do not overwrite your Settings file!
2019 jun 18
ver 3.3.7.0
- RowCreatorDialog: add 2 more options to fill
-- with stars (****) [default]
-- with selected row's fields
- File menu: add Readonly flagger/deflagger
- proper disposal of child windows
- limit size of user-defined fonts when they appear in dialog windows
- DifferDialog:
-- close dialog if both diffed tables are closed
-- clear any diff2 persistence before doing a re-diff
-- tighten sync of diffed tables when selecting cells or scrolling (beware, very fiddly change)
-- don't sync tables if they are identical
-- focus the table when the goto-diff button is clicked
-- fix obscure scrollbar exceptions when sync'd
-- add a Reset button to the dialog
-- tighten constructor code
- relax restrictions for SaveAll enabled
- shortcut keys added:
-- [F2] opens RowCreator dialog
-- [F4] closes the currently focused tab/table
-- [F9] exports copied row(s) to clipboard
-- [F10] imports clipboard to copied row(s)
-- [F11] opens the clipboard
-- [F12] toggles the currently focused table's Readonly flag
- plus assorted tweaks and UI-update fixes
Settings.Cfg has not changed (since last release); be careful with your Settings file!
friendly reminder to backup your 2das (particularly since I did some changes in and around the SaveAll routine)
As this seems to me to be shaping up to be the best 2da editor on here I have no choice but to give it a full house.
TR
thanks Tarot,
feel free to try the Strref reader in v3.3.8+
I suspect it should work for many NwN 2das (as well as NwN2) since i doubt that the stock 2das have changed that much, and they seem to use the same TalkTable version 3.0 (req'd)
2019 jun 22
ver 3.3.8.0
- sync the selected cell on search and gotoloadchanged when tables are diffed
- start Search/GotoLoadchanged/GotoDiff at row if a row is currently selected
- statusbar touchups (stop redundant prints, set PathInfo to auto-fill available width)
- try to print strref-entries to the statusbar OnMouseOver ->
add to the Menubar:
TalkTable
- Path to ... (opens a file-browser to select a Dialog.Tlk file. THE PATH WILL
NOT BE SAVED. But see the Settings.Cfg "dialog=" option. A check
will appear if the file is loaded successfully - clicking this
operation when checked clears loaded talktable entries. Note that
if the file changes on disk - Yata does not write to the
talktable, it only reads it - then it needs to be re-pathed for
those changes to be reflected on the statusbar or in a selected
cell's "strref" dialog)
- Path to custom ... (opens a file-browser to select a custom talktable - see
Path to ... and the Settings.Cfg "dialogalt=" option)
add to Settings.Cfg options:
dialog=a path without quotes to your Dialog.Tlk file. Strrefs can often
print their string values to the statusbar if Dialog.Tlk has been
pathed
dialogalt=as "dialog=" but for a custom talktable
Note: printing strrefs to the statusbar depends on a cell's colhead field. The list of valid fields is hardcoded in TalkReader.LoadTalkingHeads(). There's a lot of them ... the most common heads are "Name" and "Description" -- so those'd be good to use for strref colheads in custom 2das
2019 jun 23
ver 3.3.9.1
- add Strref submenus to cell-menu
-- TalkTable (opens the TalkDialog)
-- set/clear Special (toggles the custom tlk flag on/off)
-- set Invalid (-1) (sets celltext to "-1" which in Nwn2, at least, shows a blank string IG; "****" is really entry #0, "Bad Strref" btw)
- changes to TalkDialog
-- change the Strref reader to decode UTF8 (was ASCII)
-- preload the Strref colhead list (ie, allow use of the TalkDialog to change strref even w/out a talktable loaded)
-- add Load... button
-- color background red if the talktable Type (default or special) has no string entries
-- handle "-1" as a valid strref
- [Delete] with only 1 cell selected changes its celltext to "****"
kevL's, does this work on Linux? Someone tried it, maybe with wine?
I really don't know. It uses several DllImport calls so I'm inclined to say it doesn't. But i really don't know ...
someone should try building it in Linux against Mono
that said, if wine can mimic those DllImport calls you could be in luck -- but it'd be better to build against Mono and run natively. Although that could be a headache if Mono doesn't do its layouts exactly as .NET does ...
Ask in the forum thread, if you like, to see if anyone has given it a try
2019 oct 23
ver 3.4 changelog
- fix glitch: redraw the colhead when the width of a col changes (usually due to editing the longest celltext in a col)
- rewidth the frozen-panel (usually just the ID-col) when a table closes in case the width of the ID-cols of any other tables need to decrease
- draw the tabcontrol composited so it doesn't flicker
- tighten key-conditions for [Enter] and [Escape] (disallow key-modifiers)
- Cell menu STRREF: print "Custom" instead of "Special" (Talktable)
- move Font menu after TalkTable and Paths menus
- tweaks & maintenance
- update ReadMe.txt
DO NOT OVERWRITE YOUR Settings.Cfg FILE, it hasn't changed.
Yata 3.5
2020 march 29
noncritical update
YataForm.tab_DrawItem() - fix exception when tabcontrol needs to create a new row
YataForm.tab_DrawItem() - redraw text on tabs it can go wonky on drag&drop tabs
ClipboardF - keep text snuggled against the bottom of the richtextbox control if/when the window is enlargened.
PropertyPanel - fix editrect height on the 2nd and subsequent propertypanels that are invoked
**new Settings in settings.cfg**
maximized= "true" (without quotes) to start Yata in a maximized window. A true
setting takes precedence over the x/y/w/h settings although the
latter are recalled if the window is restored.
instantgoto= "true" (without quotes) causes the current table to select a row as
digits are typed in the goto-box. If false [Enter] needs to be
pressed to select a row after digits are typed.
casesort= "true" (without quotes) for case-sensitive sorting*
* the default used to be true but is now false.
Do NOT overwrite your current Settings.Cfg file. just add those new options, if you want 'em
This tool has been a life saver.
:)
unfortunately i introduced a bit of sluggishness on the 3.5 release -- fixed in 3.5.3 tho
2020 April 2
3.5.3.0
- fix sluggishness on tabtext redraw
- prevent recent-list from duplicating entries when Yata is started by loading a file from FileExplorer
- when dragging a tab allow the mouse-cursor to leave (and re-enter) the tabcontrol
Do not overwrite your Settings.Cfg file. It has not changed
3.6.0.0
2020 apr 26
added to cellmenu:
- toLowercase
- toUppercase
implemented multi-cell operations:
- select a single cell, then [LMB+Shift] to span horizontally and vertically to the clicked cell.
multi-cell operations on the Edit menu:
- stars (aka blank cells)
- toLowercase
- toUppercase
- overwrite selected cells with a given text
reworked the Font dialog extensively, it had pseudo-obscure error(s)
fixes:
- keep the gotobox focused when typing a row# even if the table has to scroll for "instantgoto"
- tighten key modifiers [Ctrl][Shift][Alt] Eg. Don't allow [Ctrl+Shift] to fire an operation that wants [Ctrl] only.
- search clears all selected cells if no match is found
+ code tweaks
DO NOT OVERWRITE your Settings.Cfg - it hasn't changed since 3.5.0.0
Thanks for making this!
yer welcome
3.9.2.0
2020 oct 31
- extended statusbar Info and added an InfoInput dialog, to Feat.2da
DO NOT OVERWRITE your Settings.Cfg - nothing new there.
3.9.3.0
2020 dec 22
- fix exception under Font|Load default font (if the default font got loaded twice it could throw)
Careful don't overwrite your Settings.Cfg file
Anything that makes reading 2da files and not having to count every line or bit of writing over and over and over again is awesome !
A real brain damage saving device.
if/when i get time am going to try to implement multi-threaded loading of large 2da files :p
so they load in ~3sec instead of ~20 ... (maybe)
Such a great tool for nwn 1 and 2! Looking forward to the speedier loading times. Any chance of the ability to insert, delete & copy whole columns or did I miss it somewhere? Having no problems selecting whole columns but no luck inserting them into a seperate .2da.
Thanks for your work on this.
thks,
|ability to insert, delete & copy whole columns
im starting to miss that feature myself ... will see what i can do but (unfortunately) it may not be for some time :\
Good things come to those who wait. Don't mind waiting :)
NwN EE has been getting modding\2DA updates lately with added columns is why I asked about it.
Thanks for sharing your work.
np.
Am guessing you'd like to copy those new cols over to your (already modified) 2das?
Correct. And since I'm using custom modded CEP 2DAs, the only other way to do so is a text editor manually. Most tools centered around this will combine but not allow a 1:1 comparison nor is it as easy to manipulate the cell data in cases where you dont want to replace the whole row. Im using WinMerge with Yata too and it is useful but I find WinMerge counterintuitive in many ways.
ok. I'm very close to finishing a project atm. will have a look at yata-code after and see if i can push something in (even if it's not polished up).
@Tarot /heh -- write up a command line app ;)
the hard part's done - Create colhead
https://github.com/kevL/yata/commit/029e8e1747ccec692e15cfeeb8960dc49c94...
TODO: copy/paste/delete
If you're a masochist you could always do it using column mode in Notepad++...
TR
Lol true but if I was I'd go through all 30k lines in CEP placeables.2da row x col x cell. ;) Joking aside, N++ is definitely one of the better if not best text editors. I occasionally use it on GNULinux with snaps too. I worry about misalignment issues using n++ which lead me to use tools more centered around 2das\tlk editing.
@NightRaven
ver 4 is up.
4.0.0.0
2021 may 26
Implement column operations : mainmenu Editcol
- create col
- delete col
- relabel col
- copy col
- paste col
Careful don't overwrite your Settings.Cfg file - it hasn't changed.
WARNING: beta implementation !
Backup your file(s) before doing column operations. Creating and deleting cols will clear the Undo/Redo stacks for that table. If you accept this mission, test it by such things as saving and reloading, doing diffs against your backup 2da, and/or opening the saved file in another 2da editor, etc.
My tests appear stable but they were not comprehensive.
Your program is now one of only a few that has all the editing abilities for cols and rows. You just made my editing a ton easier. Thank you. I love the freeze cols as it keeps me from having to scroll all the way left, all the way right, all the way left, and so on editing various rows. Thanks for listening!
Edit: If I find any issues with it I'll be sure to let you know. No issues with initial tests.
thanks for the feedback
| love the freeze cols...
got the idea from NWN_2daEditor - it was my goto 2da editor before yata.
| Edit: If I find any issues with it I'll be sure to let you know. No issues with initial tests.
yes, tks. even tertiary issues, like if the PropertyPanel is open and doesn't seem to "width" itself properly, etc.
efforts at multithreaded loading turned out to have a catch. As near as I can figure, the function that measures the cell-strings is a (.net) static method that needs to be locked by each thread on each pass -- not sure why but bad things happen if it isn't.
Unfortunately that's the method that needs to run concurrently to get an improvement on load times.
so unless i find a non-static method, that can be instantiated for each thread ...
now for the up side. My Placeables.2da went from a 21 second load to a 4 second load when i simply cache and recall the width of "****" repeatedly.
So, that'll be in next release,
4.1.0.0
2021 may 31
- fix [Shift/Ctrl+n] gotoloadchanged
- improve speed of layout for large tables by caching width of "****"
- change behavior of [Ctrl+End] w/ 1 cell selected: select first cell in last row (instead of last cell)
- [Space] focuses the table and selects the first cell. If cell(s) are already selected the table will scroll to ensure that the first selected cell is visible
Careful don't overwrite your Settings.Cfg file -- it hasn't changed.
4.1.2.0
2021 june 1
- move the mouseleave timer from YataGrid to parent YataForm: slight optimization that also prevents possible memleaks.
Careful don't overwrite your Settings.Cfg file.
Very useful tool in order to clean your 2da from various error!
Pages