americanenglish / pso2chatparser Goto Github PK
View Code? Open in Web Editor NEWA Chat Log Parser that gives you control over log searches, chat type based highlighting, and fast searching of logs.
A Chat Log Parser that gives you control over log searches, chat type based highlighting, and fast searching of logs.
It's good to see that this project is active again. However, this project has proved difficult to compile, and there hasn't been a new release after the changes made 9 days ago. Would you consider automating the compiling with Github Actions?
Currently a point to all widgets are stored in a QMap. This works because all windows are subclassed from the same super class. The problem is that you cannot iterate through the map and call the liquidate method because the superclass does not posses such a method. It would therefore be easier to make all widgets subclass from a new window class called ParserWidgets which contains a virtual method "liquidate" and then use make the QMap a QMap of ParserWidgets. This would allow iteration through the map AND allow a uniform call of the liquidate method.
On linux the code opens a corrupt database file.
total 48
drwxr-xr-x 6 barajasc barajasc 4096 Aug 14 19:51 ./
drwxr-xr-x 3 barajasc barajasc 4096 Aug 14 18:24 ../
drwxr-xr-x 8 barajasc barajasc 4096 Aug 14 19:47 .git/
-rw-r--r-- 1 barajasc barajasc 158 Aug 14 19:34 .gitignore
-rw-r--r-- 1 barajasc barajasc 1464 Aug 14 19:31 CMakeLists.txt
-rw-r--r-- 1 barajasc barajasc 2033 Aug 14 19:47 README.md
drwxr-xr-x 4 barajasc barajasc 4096 Aug 14 19:51 build/
-rw-r--r-- 1 barajasc barajasc 12288 Aug 14 19:51 'build\parserData.db'
drwxr-xr-x 3 barajasc barajasc 4096 Aug 14 18:24 cpp/
drwxr-xr-x 3 barajasc barajasc 4096 Aug 14 18:24 headers/
Once a log is loaded into the window. Reader should have a search bar that allows the user to filter a log down such that only message which contain the words in search are shown.
The programs should be able to automatically update itself once a new release is published. Solution pending.
When you click a subItem in treeModel->topItem it should, open the chatlog in the QTableWidget, then scroll the table such that the double-clicked subItem is the top most line.
By enabling the sub-classed SimpleTableView, QTableView no longer has any key press events. Simply allow all key events which are not Ctrl+C to be passed to the super-class.
This is an expected crash sadly. If OpenMP takes too long the GUI becomes unresponsive. This is entirely due to the fact that OpenMP is being called inside the main thread with window. Really it should should be called via QThread. Read here for more information:
https://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/
This should stop the program from being killed by the OS. Of course some other window would need to be added while the main program updates and patiently waits for the thread to finish.
The code passes a lot of data back and forth. It uses OpenMP to read the files and then a bunch of Qt magic to maintain the "relevant" information. It would probably be easier and smarter to make a special File like object that does all of the heavy lifting. Then OpenMP should simply call the object search methods in parallel.
This will also help with the struggle of displaying user requested data as it will be stored in the File like object.
This is really two issues that are closely related and therefore folded into one. If the user selects the wrong log folder that need a way to change it via the unimplemented settings window. Implementing a "Settings" window and allowing the user to change their default path would be the best option.
Currently you can search with more than one SID/PID by using commas but it becomes inconvenient. It would better to only allow one name in this area and then a button for "add another user".
This title is descriptive enough. Keyword searches do not work. In the cases of just trying to search simple phrases even for words like "the" or "i" nothing is found. This is a definite result of the poorly written keyword matcher in search.cpp . A much more intelligent way to do the search is also the simpler way; rather than doing loops and just do use make a regular expression string for searching. Something simple like:
Find Relative: "my name is jack"
RE: "my|name|is|jack"
Find Absolute: "my name is jack"
"(?=.*my)(?=.name)."
This should make matching more effective.
If the first "Select log folder" is closed and doesn't return the correct file path the program and always return empty results. The user shouldn't be able to progress to other parts of the program without selecting a folder. The program should just say "Must have default folder" and then close.
Currently if the user wants to look at certain dates the program will search every single file and search each line to make sure it's on the correct date. However this is not what most users think of when they search by date. Normally they would think this should mean that the parser only searches logs with that correct date values.
This means that date comparisons should be moved from the searchOBJ to the file gatherer instead. Since regular expression aren't very good at this the best possible option is to gather all files which match the filename format in a "preprocessing" step where files whose dates do not file are not search at all. This can either be done by the main window OR in the searchFiles loop within the searchOBJ.
If the user searches something overly specific it will return no results. Makes sense. However the program immediately crashes after attempting to open a folder as a file.
Running a search with no fields should produce the edge case of ALL files matching the search. However NO files match the search and the application crashes by attempting to open a folder instead of a text file.
It would be beneficial to have some sort of crash handler. When the program dies it would be great if it automatically popped up and said something to the a effect of "Looks like it crashed!" and then there should be some sort of debug log that just exists constantly and is written to with qDebug() statements that are already in the program. This will allow all the important debug messages to stick around but without the need to constantly have a CMD window present.
See the following:
https://stackoverflow.com/questions/4954140/how-to-redirect-qdebug-qwarning-qcritical-etc-output
The program does not have any icons of any sort. Anyone willing to design an icon for the various windows, buttons, and application icon set would be much appreciated.
Update the code to use CMake instead of QMake.
At this point all PID searches should be relative matches BUT they are actually absolute matches only! Turning on absolute matching just causes strange non related lines to match and the "suspectLines" are butchered by having no PIDs!?
One should be able to highlight a row(s) in the QTableView and be able to copy it to their clipboard so that it can be pasted in a pretty format later. This format should be:
[Date] Username (SID): Message
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.