Giter Site home page Giter Site logo

themera's Introduction

Themera

Latest Version: v2.1.1

Themera is currently available in compiled form for:

Windows

Linux

A Linux version (AppImage) is available here, thanks to blabla_lab.


What's Themera?

Themera is a theme code generator for PySimpleGUI.

It enables you to create themes based on any of the existing themes that comes built in with PySimpleGUI, edit any custom existing theme based on the dictionary containing its colors, or create a theme from an image.

After editing, simply copy your theme code, ready to use in your project without need for alteration.

It is – of course – built with PySimpleGUI, free and open source under the LGPL v3 license, and comes with a wide range of features from batch color manipulation, to 13 filters that simulate color blindness, auto-contrast, automatic dark and light modes for themes and more.

All themes generated with Themera are free to be used as you choose; the LGPL license applies only to Themera itself. Same goes for the Sample Themes theme code too.


Timeline

  • Development began on 29/11/2019, bare minimum (v1.2) got completed on 1/12/2019.

  • The project got renamed from LookyFeely to Themera on 5/1/2021

  • Development of Version 2 began 19/11/2022 completed on 12/04/2023.


Screenshot Showcase:

Launcher Light Mode Screenshot

Launcher Dark Mode Screenshot

Editor Light Mode Screenshot

Editor Dark Mode Screenshot

themera's People

Contributors

definite-d avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

themera's Issues

[ Enhancement ] Ability to shuffle how colors are assigned to elements.

OK, this is asking a lot. Then again, I get asked for features all the time that are kinda hard or take a long time.

You already have seen my struggle to some up with decent color schemes. Unlike in the 80s when I started trying, now there are sites devoted to this stuff.

Adobe has one that has tons of palettes, some made from photos too.

https://color.adobe.com/trends

I'm experimenting with capturing their color palette visual as an image and then running it through your program.

I have a ton of color helper sites bookmarked and I'm going through them again. I'm trying to find the ones where users upload color palette suggestions.

It would be interesting, and may not be possible or useful, to integrate with one of these sites. Maybe you would be able to download a palette image, run it through your image processing tool and then generate the PySimpleGUI theme. You've got all the component parts. It's a matter in this case of a front-end to select some palettes found via the website and then running that through what you've already got listed.

I don't know if one or more sites have something you could scrape to just give you a list of palettes you can show. Then when one is clicked you do your magic.

When I search for green on adobe's site it returns this

image

If I were to have a choice of any interface I would ever want, it would be to see a list of color palettes as little color bars like this:

image

shown in a list where one can be selected. When selected, your magic happens.


Idea 2 - scramble button.

Maybe you already have this so I'm sorry if I've not played with it enough yet before commenting. I have more to learn about using your program! (and remembering how to add themes).

The idea is to be able to see a preview, and then press a button that will move the colors around randomly. What was a button text color becomes the background. Make it part of the theme preview itself. Maybe one of the demo buttons in your preview says "scramble". When pressed, the theme is closed, the colors moved around, and a new theme is shown. I could see hitting the scramble button over and over until a theme I like shows up.

As I said, I'm TERRIBLE at this color thing. I know when I see a combination that I like, I just don't know how to take a group of 5 colors and assign them to the elements in a way that works / looks good. But I do know a nice looking one when I see it. So, pushing a button until I get one I see that looks great, then that's a win for me!


You've got some really powerful base capabilities

There are some things like scramble that can multiply your capabilities without too much work?? I dunno... I'm excited about what you have. It makes me want to add more to it. Assemble the pieces you have in different configurations. I've gotten spoiled using PySimpleGUI because I can write tools that are exactly what I want... or add to them as something new has popped into my head.


Congrats on the courage to rework.

It takes effort to rewrite portions or change something or fix it up. I constantly battle this myself. I'm not as good at it as I should. It takes courage to re-do something you've already done. It's something to admire when done. Makes others want to do the same. Sets a great example for the community too. Nice job on what you're doing here.

[ Suggestion ] Choose a theme

You've built a beautiful program, capable of creating beautiful themes.

While I appreciate that a random theme is sometimes fun and sometimes interesting, they often not very good however. You use a lot of elements, have complex windows. It's an extensive GUI with a lot of work put in. I think it would really benefit from its own look. Rather than risk a bright purple and pink combination that may be right in some particular kind of application that's silly, when applied to your serious utility, it looks cheap and "gaudy". It does disservice to your work and becomes a distraction.

I hit a bug that I still need to track down that failed to restore the theme from the previews back to the normal program's theme. I was left using a generated theme for the remainder of the program and the particular theme was nearly unable due to bad color combinations.

I've been including a settings file lately with my "widget" type of programs such as my COVID19 graphs and my weather widget. I never seem to change them once I find a combination I like. For my weather widget I kinda like this green one.

image

For the COVID19 stuff, it's this blue with yellow:

SNAG-0786

The Reddit search is Red (sorta matches Reddit)

image

The only one of these that TRULY matters however is the Weather widget. That is because it remains running my desktop call day. It needs to match the other widgets I have running and it need to match the windows theme I'm running. Once set, I don't change it.

I think for these standalone utilities, like the COVID utility and the Reddit searcher, it's not so important that the user be able to manage those colors. It's nice, but reality is that 99% of the people simply want a program that looks nice. They don't want the "trouble" of choosing / changing.

I've been stunned at the fact there have been ZERO,and I mean truly ZERO complaints about the default, blue-ish-gray color theme of PySimpleGUI. Very few people change it. I can spot a PySimpleGUI program a mile away as a result. It's a single line of code for a developer to change it and most don't.

There are a few that do however. Sometimes I wonder if those are simply copying a color that was set in a cookbook entry. This newly released one uses DarkAmber, a color found in the demo design patterns:

https://github.com/zargogo/LiveTSX

I don't know if he simply copied it from the pattern because he liked it or didn't know any better.

OK, so, back around to the point. As a graphic designer, you most certainly appreciate the importance of colors in GUI designs. And you're highly skilled at determining color schemes that work. I, on the other hand, SUCK so badly at it that I require tools like what you've made here.

I would love to see what you believe is a good representative theme for your program and have that set as the default. Maybe it's changeable or maybe there's an option for users to enable the random choice like now. I dunno the right answer, but I'm sure I would enjoy using the program more if 1/2 the time the color scheme wasn't one that my eyes sees as ugly when applied to your awesome creation.

How to use the image tool....

You mentioned a tool that samples images to get color palettes. Is that part of 2.2.2? I didn't find a way to do that through the interface.

♥ the new name!

Very nice you're keeping the project moving forward, always improving, building, changing, .... it's great stuff to see! It's inspirational to watch other inspired people.

I like the logo!

Question for you on this screenshot, of course:

image

What technique did you use to get the background image / colors? Always on the hunt for new methods for doing things in GUIs.

Keep moving! It's awesome to see!

Newest version of "Theme_Maker" released

I can't help but notice the description of this project matching somewhat the Theme Maker program that was used to make the last large addition of "look and feel" themes for PySimpleGUI.

Take a look at this folder:
https://github.com/PySimpleGUI/PySimpleGUI/tree/master/ThemeMaker

You'll find a file with a LOT of color themes that were downloaded. There is also a Theme_Maker.py file. This program presents the user with 4 different "candidate themes" per palette. A palette is a single group of 4 or more colors that were downloaded. The candidate themes are 2 light colored and 2 dark colored.

The program enables the user to visually choose several options per candidate theme. Here's a screenshot showing 5 palettes, each with 4 candidate themes.

image

As explained in the program's comments, the user can choose several options per candidate theme. Those that are checked with the checkbox are used to create a look and feel dictionary entry that is output to a window as well as an output file.

I'm working on the readme to finish it out.

I'm forever looking for good color themes for users. Gray windows suck 😊

I'm curious what features you had in mind for your project.

Screenshots in your readme!

I just noticed that you don't have screenshots in your readme. I'm not sure hope I managed to miss this all this time. I'm sure adding some shots to your readme will get you a bit more attention. You've already got a folder full of them.











[Suggestion] Swap locations for "Confirm" and "Cancel" buttons + defaults

Disclaimer / apology

It drives me crazy when people send me code changes. It just does. I don't take pull requests. I personally don't want code sent to me. 🙄 So, I apologize for hacking at your code and sending you the changes. Maybe you've got a different attitude about these things. 😀

The industry standard for GUIs seems to be that when 2 buttons are shown, the left one is the "positive" or "Yes" choice and the right is the "negative" or "No" or "Cancel" choice.

This window has the locations swapped and I find myself getting confused as a result or cancelling because I assume the normal order applies.

The result after my hack looks like this:
image

You may also want to bind the return key to the confirm button so that the user can simply press the return key rather than clicking confirm.

The line of code I changed is this:

  [sg.Button('Confirm', key='Confirm', tooltip='Let\'s begin.', bind_return_key=True), sg.Button('Cancel', key='Cancel', tooltip='Have it your way.')]

Now I can choose one and press return. Because I'm so obsessed with your groundbreaking colors from image feature, I've also made that the default radio button. The default currently is that none of them are selected. By defaulting, I don't have to click anything, I simply press return when I get to that window (I'm super lazy)

The code change that set the default was:

                        [sg.Radio('Get colors from an image.', default=True, key='Image', tooltip='Introducing... ImagePalette!', group_id='unspec_opts_choices')]

❤ your work!

image

Love the work you've done on this project since 2019. It takes a tremendous amount of dedication and energy to build, extend, maintain, and support the kind of utility you've built. It's inspiring to see other developers like yourself that have passion driving their work. image Very nicely done!

New PySimpleGUI theme capability....

I've added a new function that will help you out in making themes. Or it'll help users.

I don't like the hack that I made in allowing users to add to the dictionary of themes, so I thought it's time to add the capability.

In the tkinter port, there's a new function theme_add_new. It's on GitHub in version 4.20.0.1

It needs to be ported across the other 3 ports and then released to PyPI yet. I'll open an enhancement so that people know it's coming.

theme_dict = {'BACKGROUND': '#2B475D',
                'TEXT': '#FFFFFF',
                'INPUT': '#F2EFE8',
                'TEXT_INPUT': '#000000',
                'SCROLL': '#F2EFE8',
                'BUTTON': ('#000000', '#C2D4D8'),
                'PROGRESS': ('#FFFFFF', '#C7D5E0'),
                'BORDER': 1,'SLIDER_DEPTH': 0, 'PROGRESS_DEPTH': 0}

sg.theme_add_new('Dashboard', theme_dict)

sg.theme('Dashboard')

[Suggestion] Custom layout preview

Hello @definite-d !
I have a suggestion for themera.
I usually prefer to use my program layout as a preview for the theme being built by themera, so would you kindly allow for custom layout used for preview.

[Crash] AttributeError("'int' object has no attribute 'startswith'")

Error message:

Traceback (most recent call last):
  File "themera.py", line 1029, in main
  File "themera.py", line 472, in __call__
  File "themera.py", line 762, in read
  File "palette_preview.py", line 50, in palette_preview
  File "palette_preview.py", line 50, in <lambda>
  File "colour.py", line 988, in __init__
  File "colour.py", line 1006, in __setattr__
  File "colour.py", line 1084, in set_web
  File "colour.py", line 664, in web2hex
AttributeError: 'int' object has no attribute 'startswith'

User Report/Messages:

Full preview palate

Time of Crash:

2023-09-22 16:04:04.806934

Platform info:

Linux-5.15.0-84-generic-x86_64-with-glibc2.35

Processor:

x86_64

Versions:

Themera Version:

2.1.0

PySimpleGUI Version:

4.60.5

Reskinner Version:

2.3.8

Python Version:

3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0]

Updates on Making Themera better.

I have 2 very long issues that hold ALL of my images. I don't upload them to files for readme's. Instead I copy and paste or drag and drop into my "screenshots" issue.

Like this shot is a simple "screen copy" that's on my clipboard. I pasted here:
image

You will notice when you're editing the issue that when you drag and drop or copy and paste, a line like this is added:

![image](https://user-images.githubusercontent.com/46163555/70379106-a22b7580-18f6-11ea-9756-44d0f9528bcd.png)

You can then take that URL with the .jpg or .png file and use it directly in your readme.

Done... no fuss, no uploading stuff to github folders. The Issue can even be closed where people don't see it. Like this one in my GitHub:

PySimpleGUI/PySimpleGUI#1897

Doing this is using GitHub as an image file server. I use it for Reddit posts. All kinds of shit. It's easier than Imagr and other services. Drop, drop, copy the link it makes and paste into your Reddit post and off you go.

This is how I make stuff like readme's, cookbooks, etc, with great speed.

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.