Code Monkey home page Code Monkey logo

genshin-stopwatch's Introduction

Blob Cat :3 Reversed Blob Cat >:3


Apsired programmer designing mods and apps for their favorite videogames

Anyone wanna make a repo together?

Game genres I can't get enough of: dark fantasy, arena shooters, team-based co-op, survival horror, indie



genshin-stopwatch's People

Contributors

ctrleo avatar danielxing1103 avatar jayvesmir avatar squireaa avatar trivoz avatar wolfmyths avatar y9rabbito avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

genshin-stopwatch's Issues

QtStylesheet consistency

There are too many style sheets bloating the program. This will make it hard to change the UI design in a later update.

I've had issues with stylesheets like things not applying correctly so I had to write duplicate stylesheets in other classes instead of there being one in the main window class.

Save and load data function rewrite

saveData() and loadData() Are very messy and I feel like they can be written better.

I would like to stick with the .txt format but other approaches are welcome. I just don't want to lose the readability of how it is currently.

Peer review on guide.html

I just want to make sure the information on there is accurate and easy to understand.

If anyone has some extra information that might be useful don't hesitate to contribute.

App icon not showing up in Linux & MacOS

In the linux app, the icon is missing from the app, when ran in the debug terminal, the output is this:
(main:240934): Gtk-WARNING **: 21:02:47.641: Theme parsing error: gtk.css:2052:32: Expected ',' in color definition
QSystemTrayIcon::setVisible: No Icon set
I'll probably take a look at this later, but adding here just in case
:p

github.workflow/: Need to implement test cases

There have been too many cases of me release a new version only for it to break once converted into a executable.

We should make test cases using PyTest testing almost every function

Implement logging

In the case of a crash or something else going wrong, logging will make testing and troubleshooting bugs make the development process faster

I want Python's built-in logging module to be used

Linux and MacOS Support

I want Genshin Stopwatch to be able to run on all desktop platforms. However, I do not know how to change .py files into an executable for Linux and MacOS systems. If someone can comment down below on how to achieve this that'd be great.

Genshin Stopwatch is running off of the PyQt5 framework which is cross platform and should work be able to work on MacOS and Linux. But I cannot test to see if Genshin Stopwatch works on either platforms since I only own a windows machine.

Issue #2 needs to be fixed before this issue can close because it uses a module exclusive to windows called win10toast

Bundling guide.html using main.spec (PyInstaller)

I want to bundle guide.html into the executable so that when there are updates to it, the program will update with it and the user will only have to replace the executable instead of the executable AND the html file.

If anyone knows how to do this please don't be afraid to contribute.

Separate main.py into multiple files

main.py is super cluttered and it's hard to develop changes without something else breaking or getting lost.

Thankfully most of the program is separated in classes already.

What I want to know is how to deal with variables and ConfigParser classes that are used throughout multiple classes.

We could make singleton classes. And a constants.py to keep things consistent.

If there are better ways to handle this please let me know

Better notifications

I want to use a better notification module that gives the notification buttons so the user can restart the timer when they click it.

I've tried to add this myself but I'm not skilled enough at threading with PyQt5.

style.py needs some cleanup

There are lines of code in style.py that need to be shorted or formatted differently.

For example:
self.stopwatchStyleSheet_formatted = self.stopwatchStyleSheet.format(self.colorPallets[self.selectedColorPallet][0], self.colorPallets[self.selectedColorPallet][1], self.colorPallets[self.selectedColorPallet][2], self.colorPallets[self.selectedColorPallet][3], self.colorPallets[self.selectedColorPallet][4], self.stopwatchBorderColor)

Yes. this is a single line of code lol.

No app icon on linux

Unlike windows, linux executables dont store icons, which means the app won't have an icon :(

Since linux uses desktop entries to get icons, I'll implement a small python function with will make a desktop entry for the app which the OS will detect and display the icon. Additionally, this would allow the app to be opened from the start menu without an install.

Auto installer instead of providing a link

When Genshin Stopwatch detects a new update, it will prompt a link to the latest release page.

I was wondering if there was a way to download the release, unzip, replace it with the current executable, and then delete what's left of the .zip since that's all that's needed in order to update.

We also need to take account the platform the user is using, as there are MacOS/Linux versions as well

Stylesheet system needs to be updated

A new stylesheet rework was just put into place. We need more color palette options (Color palette for each element in Genshin Impact) which can easily be done through an addition to a dictionary in style.py -> __init__() -> self.colorPallets there are some comments there to help.

My color theory isn't great so I was hoping someone could help me out with choosing the colors. If you have good suggestions for color pallets please say so in this thread.

One more thing I need done is that not every stylesheet was implemented into style.py like countdown in addStopWatch(). Because of this their stylesheets won't update correctly.

MacOS & Linux QA Testing

I have Mac and Linux versions of Genshin Stopwatch but I don't own Mac or Linux systems so I don't know what works or what doesn't.

Please see the latest pre-release and give it a shot. If you encounter any issues comment here or DM me on my socials.

Reducing file size (PyInstaller)

The new notification module imports a lot of hidden imports that are not needed. There are probably other hidden imports from other modules that aren't needed either.

I have a main.spec file in the repo that can be worked on.

The only hidden imports that are needed for the notification module are the desktop notifications ones for Windows, MacOS and Linux.

Here is an example of the uneeded hidden imports, as seen through PyInstaller packaging Genshin Stopwatch into an exe

image

If anyone knows a lot about PyInstaller please take a look.

Documentation

If anyone wants to take the mantle and help document my program with comments go ahead.

If you have any questions on how or why something works in my code please ask in this thread.

Notifications have a chance to bring users out of fullscreen

I thought I prevented this from happening but it happened to me today.

I think it has to do something with this located in NotificationPanel():

self.setWindowFlags(Qt.WindowType.FramelessWindowHint | Qt.WindowType.WindowDoesNotAcceptFocus)

I can't find much documentation but here are a couple sources:

If you have any questions about this issue or navigating through the project please let me know.

github./Workflow: Simplify main.yml

I feel like there are unnecessary steps in main.yml and it just causes confusion and doesn't have maintainability.

Here is what is what actions does.

  1. By using Windows, MacOS, and Linux, make Genshin Stopwatch into an executable through pyinstaller
  2. Move the necessary files into the correct directory along with the executable (config.ini, save.txt, etc)
  3. Zip the files
  4. Upload to the latest release assets

Notification widget size does not scale to screen resolution

The line of code that sets the size of the notification is as follows:

self.setFixedSize(400, 100)

Please adjust the self.setFixedSize parameters to scale with the user's screen resolution.

The line of code is within main.py inside the NotificationPanel's __init__ method.

To grab the user screen resolution, you'll need to use PyQt5's QDesktopWidget().screenGeometry() and QDesktopWidget().availableGeometry() methods.

Here is the documentation.

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.