ab0fb9c77039899666ad4979a6a9c8172debe977
2 // FilesrcListWin.cpp - List all source code filenames
6 // JPM = Jean-Paul Mari <djipi.mari@gmail.com>
9 // --- ---------- -----------------------------------------------------------
10 // JPM 09/23/2018 Created this file
14 // Remove the 1st information, named '1', at the top
15 // To allow source code file opening / viewing
18 #include "debugger/FilesrcListWin.h"
20 #include "debugger/DBGManager.h"
24 FilesrcListWindow::FilesrcListWindow(QWidget
* parent
/*= 0*/) : QWidget(parent
, Qt::Dialog
),
25 layout(new QVBoxLayout
),
26 treeView(new QTreeView
),
27 standardModel(new QStandardItemModel
),
28 rootNode(new QStandardItem
),
30 statusbar(new QStatusBar
),
34 rootNode
= standardModel
->invisibleRootItem();
36 treeView
->setModel(standardModel
);
37 treeView
->expandAll();
38 layout
->addWidget(treeView
);
41 layout
->addWidget(statusbar
);
47 FilesrcListWindow::~FilesrcListWindow(void)
53 void FilesrcListWindow::Reset(void)
55 standardModel
->setRowCount(0);
63 void FilesrcListWindow::RefreshContents(void)
70 if ((Nbr
= UpdateInfos()))
72 sprintf(msg
, "%i files found", Nbr
);
77 sprintf(msg
, "No files found");
78 Error
= FSL_NOFILESRCLIST
;
84 if ((Error
& FSL_WARNING
))
86 statusbar
->setStyleSheet("background-color: lightyellow; font: bold");
90 statusbar
->setStyleSheet("background-color: tomato; font: bold");
95 statusbar
->setStyleSheet("background-color: lightgreen; font: bold");
97 statusbar
->showMessage(QString(msg
));
103 size_t FilesrcListWindow::UpdateInfos(void)
107 Nbr
= DBGManager_GetNbFullSourceFilename();
109 for (i
= 0; i
< Nbr
; i
++)
111 AddFilename(DBGManager_GetNumFullSourceFilename(i
), rootNode
, 0);
118 // Add source code filename in the list
119 void FilesrcListWindow::AddFilename(char *FileName
, QStandardItem
*root
, size_t ItemPos
)
121 char *Ptr
= FileName
;
122 Sfilesrcitem
*PtrNewFilesrc
;
127 while ((a
= *Ptr
++) && (a
!= '\\'));
129 while ((a
= *Ptr
++) && (a
!= '/'));
133 strncpy(Buffer
, FileName
, (Ptr
- FileName
- 1));
134 Buffer
[(Ptr
- FileName
- 1)] = 0;
138 strcpy(Buffer
, FileName
);
140 PtrNewFilesrc
= (Sfilesrcitem
*)AddItem(Buffer
, ItemPos
);
141 if (!PtrNewFilesrc
->PreviousItem
)
143 PtrNewFilesrc
->PreviousItem
= root
;
144 root
->appendRow(PtrNewFilesrc
->Item
);
145 PtrNewFilesrc
->Item
->setEditable(false);
150 return (AddFilename(Ptr
, PtrNewFilesrc
->Item
, (ItemPos
+ 1)));
155 // Add item to the list
156 // Return void * on new item or already existing one
157 void *FilesrcListWindow::AddItem(char *ItemName
, size_t ItemPos
)
159 Sfilesrcitem
*Ptr
= filesrcItems
;
161 // Look for already existing item
162 for (size_t i
= 0; i
< nbItem
; i
++)
164 if ((Ptr
->column
== ItemPos
) && !strcmp(Ptr
->Item
->text().toLocal8Bit().constData(), ItemName
))
174 // Add item in the list
175 filesrcItems
= (Sfilesrcitem
*)realloc(filesrcItems
, (sizeof(Sfilesrcitem
) * ++nbItem
));
176 (filesrcItems
+ (nbItem
- 1))->column
= ItemPos
;
177 (filesrcItems
+ (nbItem
- 1))->PreviousItem
= NULL
;
178 (filesrcItems
+ (nbItem
- 1))->Item
= new QStandardItem(ItemName
);
179 return (filesrcItems
+ (nbItem
- 1));