Yata - 2da editor


#21

am working up a Property Panel (not done)


#22

Looks promising!


#23

Looking good so far. Hope u’re gonna develop it further. Works fine with NWN1 2da files, but it’s missing a few features. I haven’t tested it thoroughly yet, but:

  • it would be awesome to support undo/redo operations with ctrl+z and ctrl+y
  • pasting values in cells doesn’t work, which is really annoying (it keeps in clipboard only copied rows)

Does it allow you to open 2 or more files in separate views in one window?
Plus a huge gamechanger would be the option to:

  • compare files (show differences with highlighting the cells)
  • merge files (with a few options like overriding values, skipping differences etc)

#24

right now I’m still working on the PropertyPanel (slowly). i’ll probably support/maintain a version of the source at least until it’s bugfree – I view features differently, and my tendency is not to bother unless i’ll use them myself. The code is ofc available to anyone who wants/needs/desires to implement more advanced capabilities …

that said, i’d like to have at least one level of undo.

and copy/pasting a selected cell to a subsequent selected cell shouldn’t be too hard (will put it on my list). Note the text of a cell can be copied into the text of a different cell already, but i agree it’s quicker to just click(select), Ctrl+c, click(select), Ctrl+v

not sure what you mean – it does open files to tabs in one window (at least on my machine). But it also allows running multiple instances (again, at least on my machine – at this point it’s lower level stuff relating to the interaction between .NET, the Windows API, and the OS, which to me is just a diceroll, given the vagaries of .NET and OS versions).

It supports drag&drop, file associations. (again, on my machine: Win7 64-bit)

compare files is also on my todo list, but to be honest there are other apps that compare textfiles, and they have a lot more options than i’ll ever be able to code.

merge files: kdiff3


#25

Doh, now pasting values seems to be working. Yesterday I couldn’t paste any values copied from text editors etc. ;x But yea, it would be more intuitive to be able to just select cell (single click) and be able to copy and paste values.

What I meant was to be able to open two or more tabs at once, like you can do in Killer TLK Editor - http://prntscr.com/lr553a
It would be easier to work on multiple files at once, without switching tabs back and forth (copying values between files, plus there’s a lot of associations between 2da’s, that you have to check and pay attention to etc).

Compare and merge imho are crucial features. At least from my experience, that was always pain in the ass, when I had to compare or marge 2da files from different hakpacks, CPP etc. It would be convenient to have it all in one tool.


#26

oh, MDI (multiple document interface)

no it’s not likely to do that. Personally i’ve never liked MDI and would rather open a 2nd instance of the app.

https://www.codeproject.com/Articles/3553/Introduction-to-MDI-Forms-with-C


#27

also -

… still working out a couple of glitches though.


#28

Present state of stuff

the PropertyPanel (blue) can be toggled top or bottom
a gradient fill for the colhead bar can be toggled in Settings.Cfg

+ several graphical glitches have been smoothed out

etc etc (not ready yet)


#29

Yo, so I tried to use Yata to renumber rows in my 2da (where I needed to create 200 padding lines). It seems that Yata can correctly recalculate it itself, but it doesn’t save its recalculated row lines into 2da.

EDIT: another suggestion, when double clicking into a field, make it so the value is highlighted so when user writes new value it will overwrite it. Currently, the cursor is behind already existing value, but who would want to add to existing value? It is far more common that user want to rewrite it. And if not he can just press right arrow or END.


#30

not sure, Shadooow

it worked for me (although I tried this with my current, unpublished version)

I started with this:

2DA V2.0

 LABEL STRING_REF ICONRESREF TIMER
0 NWACTION_MOVETOPOINT 6399 ia_moveto 0
1 NWACTION_PICKUPITEM 6400 ia_inventory 0
2 NWACTION_DROPITEM 553 ia_drop 0
3 NWACTION_ATTACKOBJECT 1056 ia_attack 1
4 NWACTION_CASTSPELL 557 ia_togglecast 1
5 NWACTION_OPENDOOR 744 ia_openclose 0
6 NWACTION_CLOSEDOOR 1466 ia_openclose 0
7 NWACTION_DIALOGOBJECT 1072 ia_talk 0
8 NWACTION_DISABLETRAP 271 ia_disabledevice 0
9 NWACTION_RECOVERTRAP 1473 ia_recovertrap 0
10 NWACTION_FLAGTRAP 1472 ia_flagtrap 0
11 NWACTION_EXAMINETRAP 1604 ia_handletrap 0
12 NWACTION_SETTRAP 285 ia_settrap 0
13 NWACTION_OPENLOCK 278 ia_openlock 0
14 NWACTION_LOCK 947 ia_lock 0
15 NWACTION_USEOBJECT 554 ia_use 0
16 NWACTION_ANIMALEMPATHY **** ir_animalemp 0
17 NWACTION_REST 950 ia_rest 0
18 NWACTION_TAUNT 342 ia_taunt2 1
19 NWACTION_ITEMCASTSPELL 6404 ia_togglecast 1
20 NWACTION_DISARM 302 ia_disarm 1
21 NWACTION_IMPROVEDDISARM 211 ia_disarm 1
22 NWACTION_KNOCKDOWN 409 ia_knockdown 1
23 NWACTION_IMPROVEDKNOCKDOWN 212 ia_knockdown 1
24 NWACTION_MANYSHOT 111628 ife_manyshot 1
25 NWACTION_SAP 421 ia_specialattack 1
26 NWACTION_STUNNINGFIST 429 ic_monk 1
27 NWACTION_FLURRYOFBLOWS **** ic_monk 1
28 NWACTION_QUIVERINGPALM 1061 ic_monk 1
29 NWACTION_CALLEDSHOTLEG 518 ia_attackmytarget 1
30 NWACTION_CALLEDSHOTARM 517 ia_attackmytarget 1
31 NWACTION_COUNTERSPELL 8122 ia_counterspell 1
32 NWACTION_SMITEEVIL_1 1066 ia_paladinabilities 1
33 NWACTION_HEAL 273 ia_heal 0
34 NWACTION_PICKPOCKET 282 ia_sleightofhand 0
35 NWACTION_FOLLOW **** ia_follow 0
36 NWACTION_WAIT **** ia_wait 0
37 NWACTION_SIT 53137 ia_forcerest 0
38 NWACTION_BARTER **** ia_barter 0
39 NWACTION_DIRTYFIGHTING **** **** 0
40 NWACTION_SMITEGOOD 3779 ia_specialattack 1
41 NWACTION_KIDAMAGE 8731 ia_specialattack 1
42 NWACTION_DEFENSIVESTANCE **** ia_specialattack 1
43 NWACTION_RANDOMWALK 86670 ia_moveto 0
44 NWACTION_MOUNT 271 ia_use 0
45 NWACTION_DISMOUNT 1473 ia_use 0
46 NWACTION_FEINT **** ia_feint 0
47 NWACTION_SMITEEVIL_2 1066 ia_paladinabilities 1
48 NWACTION_SMITEEVIL_3 1066 ia_paladinabilities 1
49 NWACTION_SMITEEVIL_4 1066 ia_paladinabilities 1
50 NWACTION_SMITEEVIL_5 1066 ia_paladinabilities 1
51 NWACTION_SMITEINFIDEL 174280 ic_championoftorm 1
52 NW_ACTION_FLOURISH 113495 ife_flourish 1
53 NWACTION_IMPROMPTU_SNEAK_ATTACK_1 112605 ife_AT_impropsneakatk 1
54 NWACTION_IMPROMPTU_SNEAK_ATTACK_2 112606 ife_AT_impropsneakatk 1
55 NWACTION_CIRCLE_KICK 2841 ife_circlekick 0
56 NWACTION_SMITEEVIL_6 1066 ia_paladinabilities 1
57 NWACTION_SMITEEVIL_7 1066 ia_paladinabilities 1
58 NWACTION_EXPOSE_WEAKNESS 185774 ife_exposeweakness 1
59 NWACTION_ONE_SHOT 185782 ife_oneshot 1
60 NWACTION_WAITFORENDOFROUND **** ia_wait 1
61 NWACTION_BONDOFFATALTOUCH 220738 it_wp_scythepoison 1
62 padding **** **** 0
63 padding **** **** 0
64 padding **** **** 0
65 padding **** **** 0
66 padding **** **** 0
67 padding **** **** 0
68 padding **** **** 0
69 padding **** **** 0
70 padding **** **** 0
71 padding **** **** 0
72 padding **** **** 0
73 padding **** **** 0
74 padding **** **** 0
75 padding **** **** 0
76 padding **** **** 0
77 padding **** **** 0
78 padding **** **** 0
79 padding **** **** 0
80 padding **** **** 0
81 padding **** **** 0
82 padding **** **** 0
83 padding **** **** 0
84 padding **** **** 0

then selected and copied 20 rows from the “padding” section, and pasted it 10 times at the end. Did “order row ids”, saved, and got this:

2DA V2.0

 LABEL STRING_REF ICONRESREF TIMER
0 NWACTION_MOVETOPOINT 6399 ia_moveto 0
1 NWACTION_PICKUPITEM 6400 ia_inventory 0
2 NWACTION_DROPITEM 553 ia_drop 0
3 NWACTION_ATTACKOBJECT 1056 ia_attack 1
4 NWACTION_CASTSPELL 557 ia_togglecast 1
5 NWACTION_OPENDOOR 744 ia_openclose 0
6 NWACTION_CLOSEDOOR 1466 ia_openclose 0
7 NWACTION_DIALOGOBJECT 1072 ia_talk 0
8 NWACTION_DISABLETRAP 271 ia_disabledevice 0
9 NWACTION_RECOVERTRAP 1473 ia_recovertrap 0
10 NWACTION_FLAGTRAP 1472 ia_flagtrap 0
11 NWACTION_EXAMINETRAP 1604 ia_handletrap 0
12 NWACTION_SETTRAP 285 ia_settrap 0
13 NWACTION_OPENLOCK 278 ia_openlock 0
14 NWACTION_LOCK 947 ia_lock 0
15 NWACTION_USEOBJECT 554 ia_use 0
16 NWACTION_ANIMALEMPATHY **** ir_animalemp 0
17 NWACTION_REST 950 ia_rest 0
18 NWACTION_TAUNT 342 ia_taunt2 1
19 NWACTION_ITEMCASTSPELL 6404 ia_togglecast 1
20 NWACTION_DISARM 302 ia_disarm 1
21 NWACTION_IMPROVEDDISARM 211 ia_disarm 1
22 NWACTION_KNOCKDOWN 409 ia_knockdown 1
23 NWACTION_IMPROVEDKNOCKDOWN 212 ia_knockdown 1
24 NWACTION_MANYSHOT 111628 ife_manyshot 1
25 NWACTION_SAP 421 ia_specialattack 1
26 NWACTION_STUNNINGFIST 429 ic_monk 1
27 NWACTION_FLURRYOFBLOWS **** ic_monk 1
28 NWACTION_QUIVERINGPALM 1061 ic_monk 1
29 NWACTION_CALLEDSHOTLEG 518 ia_attackmytarget 1
30 NWACTION_CALLEDSHOTARM 517 ia_attackmytarget 1
31 NWACTION_COUNTERSPELL 8122 ia_counterspell 1
32 NWACTION_SMITEEVIL_1 1066 ia_paladinabilities 1
33 NWACTION_HEAL 273 ia_heal 0
34 NWACTION_PICKPOCKET 282 ia_sleightofhand 0
35 NWACTION_FOLLOW **** ia_follow 0
36 NWACTION_WAIT **** ia_wait 0
37 NWACTION_SIT 53137 ia_forcerest 0
38 NWACTION_BARTER **** ia_barter 0
39 NWACTION_DIRTYFIGHTING **** **** 0
40 NWACTION_SMITEGOOD 3779 ia_specialattack 1
41 NWACTION_KIDAMAGE 8731 ia_specialattack 1
42 NWACTION_DEFENSIVESTANCE **** ia_specialattack 1
43 NWACTION_RANDOMWALK 86670 ia_moveto 0
44 NWACTION_MOUNT 271 ia_use 0
45 NWACTION_DISMOUNT 1473 ia_use 0
46 NWACTION_FEINT **** ia_feint 0
47 NWACTION_SMITEEVIL_2 1066 ia_paladinabilities 1
48 NWACTION_SMITEEVIL_3 1066 ia_paladinabilities 1
49 NWACTION_SMITEEVIL_4 1066 ia_paladinabilities 1
50 NWACTION_SMITEEVIL_5 1066 ia_paladinabilities 1
51 NWACTION_SMITEINFIDEL 174280 ic_championoftorm 1
52 NW_ACTION_FLOURISH 113495 ife_flourish 1
53 NWACTION_IMPROMPTU_SNEAK_ATTACK_1 112605 ife_AT_impropsneakatk 1
54 NWACTION_IMPROMPTU_SNEAK_ATTACK_2 112606 ife_AT_impropsneakatk 1
55 NWACTION_CIRCLE_KICK 2841 ife_circlekick 0
56 NWACTION_SMITEEVIL_6 1066 ia_paladinabilities 1
57 NWACTION_SMITEEVIL_7 1066 ia_paladinabilities 1
58 NWACTION_EXPOSE_WEAKNESS 185774 ife_exposeweakness 1
59 NWACTION_ONE_SHOT 185782 ife_oneshot 1
60 NWACTION_WAITFORENDOFROUND **** ia_wait 1
61 NWACTION_BONDOFFATALTOUCH 220738 it_wp_scythepoison 1
62 padding **** **** 0
63 padding **** **** 0
64 padding **** **** 0
65 padding **** **** 0
66 padding **** **** 0
67 padding **** **** 0
68 padding **** **** 0
69 padding **** **** 0
70 padding **** **** 0
71 padding **** **** 0
72 padding **** **** 0
73 padding **** **** 0
74 padding **** **** 0
75 padding **** **** 0
76 padding **** **** 0
77 padding **** **** 0
78 padding **** **** 0
79 padding **** **** 0
80 padding **** **** 0
81 padding **** **** 0
82 padding **** **** 0
83 padding **** **** 0
84 padding **** **** 0
85 padding **** **** 0
86 padding **** **** 0
87 padding **** **** 0
88 padding **** **** 0
89 padding **** **** 0
90 padding **** **** 0
91 padding **** **** 0
92 padding **** **** 0
93 padding **** **** 0
94 padding **** **** 0
95 padding **** **** 0
96 padding **** **** 0
97 padding **** **** 0
98 padding **** **** 0
99 padding **** **** 0
100 padding **** **** 0
101 padding **** **** 0
102 padding **** **** 0
103 padding **** **** 0
104 padding **** **** 0
105 padding **** **** 0
106 padding **** **** 0
107 padding **** **** 0
108 padding **** **** 0
109 padding **** **** 0
110 padding **** **** 0
111 padding **** **** 0
112 padding **** **** 0
113 padding **** **** 0
114 padding **** **** 0
115 padding **** **** 0
116 padding **** **** 0
117 padding **** **** 0
118 padding **** **** 0
119 padding **** **** 0
120 padding **** **** 0
121 padding **** **** 0
122 padding **** **** 0
123 padding **** **** 0
124 padding **** **** 0
125 padding **** **** 0
126 padding **** **** 0
127 padding **** **** 0
128 padding **** **** 0
129 padding **** **** 0
130 padding **** **** 0
131 padding **** **** 0
132 padding **** **** 0
133 padding **** **** 0
134 padding **** **** 0
135 padding **** **** 0
136 padding **** **** 0
137 padding **** **** 0
138 padding **** **** 0
139 padding **** **** 0
140 padding **** **** 0
141 padding **** **** 0
142 padding **** **** 0
143 padding **** **** 0
144 padding **** **** 0
145 padding **** **** 0
146 padding **** **** 0
147 padding **** **** 0
148 padding **** **** 0
149 padding **** **** 0
150 padding **** **** 0
151 padding **** **** 0
152 padding **** **** 0
153 padding **** **** 0
154 padding **** **** 0
155 padding **** **** 0
156 padding **** **** 0
157 padding **** **** 0
158 padding **** **** 0
159 padding **** **** 0
160 padding **** **** 0
161 padding **** **** 0
162 padding **** **** 0
163 padding **** **** 0
164 padding **** **** 0
165 padding **** **** 0
166 padding **** **** 0
167 padding **** **** 0
168 padding **** **** 0
169 padding **** **** 0
170 padding **** **** 0
171 padding **** **** 0
172 padding **** **** 0
173 padding **** **** 0
174 padding **** **** 0
175 padding **** **** 0
176 padding **** **** 0
177 padding **** **** 0
178 padding **** **** 0
179 padding **** **** 0
180 padding **** **** 0
181 padding **** **** 0
182 padding **** **** 0
183 padding **** **** 0
184 padding **** **** 0
185 padding **** **** 0
186 padding **** **** 0
187 padding **** **** 0
188 padding **** **** 0
189 padding **** **** 0
190 padding **** **** 0
191 padding **** **** 0
192 padding **** **** 0
193 padding **** **** 0
194 padding **** **** 0
195 padding **** **** 0
196 padding **** **** 0
197 padding **** **** 0
198 padding **** **** 0
199 padding **** **** 0
200 padding **** **** 0
201 padding **** **** 0
202 padding **** **** 0
203 padding **** **** 0
204 padding **** **** 0
205 padding **** **** 0
206 padding **** **** 0
207 padding **** **** 0
208 padding **** **** 0
209 padding **** **** 0
210 padding **** **** 0
211 padding **** **** 0
212 padding **** **** 0
213 padding **** **** 0
214 padding **** **** 0
215 padding **** **** 0
216 padding **** **** 0
217 padding **** **** 0
218 padding **** **** 0
219 padding **** **** 0
220 padding **** **** 0
221 padding **** **** 0
222 padding **** **** 0
223 padding **** **** 0
224 padding **** **** 0
225 padding **** **** 0
226 padding **** **** 0
227 padding **** **** 0
228 padding **** **** 0
229 padding **** **** 0
230 padding **** **** 0
231 padding **** **** 0
232 padding **** **** 0
233 padding **** **** 0
234 padding **** **** 0
235 padding **** **** 0
236 padding **** **** 0
237 padding **** **** 0
238 padding **** **** 0
239 padding **** **** 0
240 padding **** **** 0
241 padding **** **** 0
242 padding **** **** 0
243 padding **** **** 0
244 padding **** **** 0
245 padding **** **** 0
246 padding **** **** 0
247 padding **** **** 0
248 padding **** **** 0
249 padding **** **** 0
250 padding **** **** 0
251 padding **** **** 0
252 padding **** **** 0
253 padding **** **** 0
254 padding **** **** 0
255 padding **** **** 0
256 padding **** **** 0
257 padding **** **** 0
258 padding **** **** 0
259 padding **** **** 0
260 padding **** **** 0
261 padding **** **** 0
262 padding **** **** 0
263 padding **** **** 0
264 padding **** **** 0
265 padding **** **** 0
266 padding **** **** 0
267 padding **** **** 0
268 padding **** **** 0
269 padding **** **** 0
270 padding **** **** 0
271 padding **** **** 0
272 padding **** **** 0
273 padding **** **** 0
274 padding **** **** 0
275 padding **** **** 0
276 padding **** **** 0
277 padding **** **** 0
278 padding **** **** 0
279 padding **** **** 0
280 padding **** **** 0
281 padding **** **** 0
282 padding **** **** 0
283 padding **** **** 0
284 padding **** **** 0

I don’t want to test the old version since the new one is ready to release tomorrow, I suppose. I haven’t changed those functions for ages though; and, perhaps unfortunately, there is no ‘cached’ table that’s operating behind what you actually see on the grid. The save function takes the values from the variables as you see them on the grid and writes them directly to a file.

The rowhead is excluded, but note that the rowhead is not the ID.

i’ll think about it … behavior in the new version (i can’t remember when I changed it) is that stars will be selected like you’re suggesting, otherwise the caret appears at the end of the text

all i really know atm is that when using other programs that force the entire text selected, i don’t like it. Perhaps i’ll put an option in Settings.Cfg (and default to select-all).

The search and goto fields, otoh, i’d probly like to be select-all …