Giter Site home page Giter Site logo

americanenglish / pso2chatparser Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 190 KB

A Chat Log Parser that gives you control over log searches, chat type based highlighting, and fast searching of logs.

C++ 96.77% CMake 2.05% C 1.18%
pso2 text parser log chat chatlogs

pso2chatparser's People

Stargazers

 avatar

Watchers

 avatar  avatar

pso2chatparser's Issues

Crash handling

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

If user doesn't select folder causes program to misbehave

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.

Original QTableView KeyEvents lost

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.

Enhanced Date Searching

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.

Settings needs to be implemented!

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.

Automatic Updating

The programs should be able to automatically update itself once a new release is published. Solution pending.

Allow searching using Reader

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.

All custom widgets should be subclassed from empty superclass for eased QMap usage.

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.

Allow Ctrl-C from Reader Table

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

File handling streamlined via object methods

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.

Github Actions compiler

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?

Linux problems

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/

Absolute Matching does not work

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!?

Icons!

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.

Gui crashes if OpenMP takes too long

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.

Keyword search do not work.

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.