Skip to content

Commit cc0e8f1

Browse files
committed
Merge pull request #3 from yoyokenny/patch-1
Update JSONDialog.cpp
2 parents e912359 + a5783ea commit cc0e8f1

File tree

1 file changed

+70
-2
lines changed

1 file changed

+70
-2
lines changed

NppJSONViewer/JSONDialog.cpp

Lines changed: 70 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,10 +156,78 @@ void JSONDialog::populateTree (HWND hWndDlg, HTREEITEM tree_root, json_t * json_
156156
newItem=insertToTree(hWndDlg,tree_root,"Array");
157157
break;
158158
case JSON_TRUE:
159-
newItem=insertToTree(hWndDlg,tree_root,"True");
159+
/*
160+
insert the value with its key in a form "key":"value"
161+
*/
162+
if(json_root->child==NULL && json_root->parent->type!=JSON_ARRAY)
163+
{
164+
TVITEM t;
165+
t.hItem=tree_root;
166+
t.mask=TVIF_HANDLE;
167+
if(SendDlgItemMessage(hWndDlg,IDC_TREE1,TVM_GETITEM,0,(LPARAM)&t))
168+
{
169+
int len=strlen(json_root->parent->text)+3+strlen(json_root->text)+1;
170+
char *txt=new char[len];
171+
memset(txt, 0, len);
172+
char *unesc_text=json_unescape("True");
173+
char *unesc_parent_text=json_unescape(json_root->parent->text);
174+
sprintf(txt,"%s : %s",unesc_parent_text,unesc_text);
175+
free(unesc_text);
176+
free(unesc_parent_text);
177+
178+
len = strlen(txt) + 1;
179+
wchar_t *w_txt = new wchar_t[len];
180+
memset(w_txt, 0, len);
181+
MultiByteToWideChar(CP_UTF8, NULL, txt, -1, w_txt, len);
182+
183+
t.pszText=w_txt;
184+
t.mask=TVIF_TEXT;
185+
::SendDlgItemMessage(hWndDlg,IDC_TREE1,TVM_SETITEM,0,(LPARAM)&t);
186+
}
187+
}else
188+
{
189+
// it is an array element, insert directly
190+
char *unesc_elem=json_unescape(json_root->text);
191+
newItem=insertToTree(hWndDlg,tree_root,unesc_elem);
192+
free(unesc_elem);
193+
}
160194
break;
161195
case JSON_FALSE:
162-
newItem=insertToTree(hWndDlg,tree_root,"False");
196+
/*
197+
insert the value with its key in a form "key":"value"
198+
*/
199+
if(json_root->child==NULL && json_root->parent->type!=JSON_ARRAY)
200+
{
201+
TVITEM t;
202+
t.hItem=tree_root;
203+
t.mask=TVIF_HANDLE;
204+
if(SendDlgItemMessage(hWndDlg,IDC_TREE1,TVM_GETITEM,0,(LPARAM)&t))
205+
{
206+
int len=strlen(json_root->parent->text)+3+strlen(json_root->text)+1;
207+
char *txt=new char[len];
208+
memset(txt, 0, len);
209+
char *unesc_text=json_unescape("False");
210+
char *unesc_parent_text=json_unescape(json_root->parent->text);
211+
sprintf(txt,"%s : %s",unesc_parent_text,unesc_text);
212+
free(unesc_text);
213+
free(unesc_parent_text);
214+
215+
len = strlen(txt) + 1;
216+
wchar_t *w_txt = new wchar_t[len];
217+
memset(w_txt, 0, len);
218+
MultiByteToWideChar(CP_UTF8, NULL, txt, -1, w_txt, len);
219+
220+
t.pszText=w_txt;
221+
t.mask=TVIF_TEXT;
222+
::SendDlgItemMessage(hWndDlg,IDC_TREE1,TVM_SETITEM,0,(LPARAM)&t);
223+
}
224+
}else
225+
{
226+
// it is an array element, insert directly
227+
char *unesc_elem=json_unescape(json_root->text);
228+
newItem=insertToTree(hWndDlg,tree_root,unesc_elem);
229+
free(unesc_elem);
230+
}
163231
break;
164232
case JSON_NULL:
165233
newItem=insertToTree(hWndDlg,tree_root,"null");

0 commit comments

Comments
 (0)