helloSystem / Utilities

Utilities written in PyQt5, meant for use with helloSystem
BSD 2-Clause "Simplified" License
28 stars 29 forks source link

Redesign some preferences #172

Open louies0623 opened 1 year ago

louies0623 commented 1 year ago

some design sketches

20230624_174428

20230624_174435

louies0623 commented 1 year ago

imageIf this is the case, then the side is more curved.

image

Hierosme commented 1 year ago

Curved and strange human rules.

You can see the Screen of OsXx you have provide. Look at the form of the Zone !!!!

That is a pre presession task

louies0623 commented 1 year ago

image I don't think so because where I live is not in the middle of the map.

image

louies0623 commented 1 year ago

image A better display is this, because there are islands in the Pacific Ocean.

Hierosme commented 1 year ago

I'll Try that:

Import the IANA db it contain strange humain rules (Like island) , and coordinates (with earth round inside coordinat) The import import a special map projection (due to the data) A Big pre processing phase with Gimp for create all textures for get the exat timezone forme it math with the background map. Totaly cancel the idea to have rectangular Time zone representation When the user click on the world map, the widget will make the relation pixel location to closeset city The ComboBox will be update and the user can fine tuning in case.

Normaly that approch should be correct and no so hard to do. I havent lot of knowlege on TimeZone but look really special from computer point of view and so logical for humain ....

Hierosme commented 1 year ago

More simple:

Back end: The widget map will be a viewr and a selector of line contain on IANA db /usr/local/zoneinfo/zone1970.tab By click on the map it will select a line of the db and teh combox list will be update with the entire Time zone

How it work The widget import the default system value with standaard python/Qt libs The widget int care about the default system (only one time at start) The map is update and the default system timezone IANA db is selected The user can change it , then target a new IANA db line, The closest city is pass as default selected item for the combobox The user can fine tune the combobox is the verity for the app. When Apply or Unlock that is the calue slected in Combox it will be impose to the system.

When restart application the have restart to import default system bla bla bla

louies0623 commented 1 year ago

image

I don't like warping maps, unless you are using this map as a selection method, don't warp.

louies0623 commented 1 year ago

Maybe like this... image 20230628_215500

Hierosme commented 1 year ago

It will work like this image

When the user click it click on a grid area and it update the combot box with city contain neach the click

louies0623 commented 1 year ago

In that case, isn't it the same as this picture? It's just that the interface is more messy. 1_vciNKjjjP42in4EvNegrrg

Hierosme commented 1 year ago

Nop exactlly the same as GNOME or other i have test all i can to understand. Everyone use the IANA db and that DB use eu certain type of map.

It type of widget is not a TimeZone calculator, that is just a IANA db selector. And of the top of the DB it is confirme about that is the contain on TZ en vars.

I havent the skill to make a TimeZone calcultor. But a IANA db viewer i can,

The code require is just a Controler/Viewer here the model is impose by the DB.

louies0623 commented 1 year ago

I still hate that grid cross selection, that's lame, why not like opensuse or ubuntu unity. image

https://www.geonames.org/about.html Maybe can use GeoNames.org

Hierosme commented 1 year ago

It work

Here a IANA selector

image

it work only in one direction, but soon the imported TimeZone will be selected in the world map automatically Here the user click in him world area, the Widget creat dynamically a list of city closest.

PS: dont care bout the Form of the timezone area that is a graphic phase.

Hierosme commented 1 year ago

It done by the hard way with a true calculation of pixel coordinat. The widget can change it size everything is elastic... If was finally more esay as i expect.

Hierosme commented 1 year ago

I just have take look on GeoNames.org, that huge DB. The IANA got less of 400 entries compare to million for GeoNames.

The IANA selector widget can be compare as a Region selector, but with a better humain interaction. Like certain pacific island are avialable on France country. It look to be why it type of widget is use.

A other strange thing, TimeZone is a occidental view, certain country are not referenced on TimeZone. Like RU MSK+1 MSK+2, etc ... the Zero is not Greenwich but Moscue. Same for many country.

That the first time a realize that.

then the IANA db is the one use by FreeBSD ans GNU/Linux by default ...

no need to support the entire planet, from my point the IANA db is the bigest timezone db of the world ...

louies0623 commented 1 year ago

no need to support the entire planet, from my point the IANA db is the bigest timezone db of the world ...

I don't think so, because as long as there is land on the earth, there will be human habitation. Emphasis on time localization.

Hierosme commented 1 year ago

only IANA db value is support by TZ env var. Unfortunally that technical limitation is a big no GO. unfrotunally that is what is used by default by the LibC then the entire computer industry (in occident)

Clearly certain country havent wait for the peace on the world for got TimeZone system, and unfortunally i have to repport about they countries are exclude from IANA db.

Really strange...

Hierosme commented 1 year ago

By example: Russian got only fews IANA entry, and have a internal country sub division from capital coordinate. I dont know how they country are support to configure TimeZone

Hierosme commented 1 year ago

https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html

TZ is impose by POSIX standard and inside time.h

In summary UNIX use TZ then IANA db by default. Certainly it should exist other DB, the Framwork permit to load a file, That is TZData (Package it provide IANA db) , i certainly exist variation of TZData or similar ....

louies0623 commented 1 year ago

Is there any other alternative besides TZ?

list https://gist.github.com/alejzeis/ad5827eb14b5c22109ba652a1a267af5

Hierosme commented 1 year ago

The list you send is the same as IANA db...

It add Few timezone but that is not a lot. Take a look of Russia TimeZone. The IANA have a Russia Std Timezone and inside that country they use a subdivision. that is the case of many country.

Look TimeZone look to be a result of polical game ... i was the frist susprise, in fact NO the planet havent any Time Standard ... TimeZone is occidental system ....

Hierosme commented 1 year ago

@louies0623 one think will help me that as a True OpenAPI for TimeZone. That is for the CheckBox for auto configuration of TimeZone.

I have look for it afternoon without big succes

louies0623 commented 1 year ago

https://github.com/srawlins/timezone I'm not sure if this will help you, but TZ I checked and it's timezone by city,So my idea may be to use the existing IANA as a preset first, because mainly the time zone of the computer is correct.

louies0623 commented 1 year ago

After I checked the list, there is not only one list of cities and time zones in Russia, If you carefully check the place names on the list, you will know that major cities have, This is enough for the time zone.

probonopd commented 1 year ago

Maybe it would be easiest to re-use the logic from the Calamares Installer?

https://calamares.io/

image

louies0623 commented 1 year ago

Maybe, you can use the code of Calamares Installer to set the date, and maybe use their code to redesign the installation interface, otherwise I think the installation interface of Fedora or Ubiquity installer is simpler than the Calamares Installer just now. https://github.com/rhinstaller/anaconda

Another problem with Calamares Installer is the reason why we redesigned it, that is, it wastes too much window space, it is wide and has too many blank spaces, and there is no condensed,Maybe it would be better to remove the dark gray column next to it.

Hierosme commented 1 year ago

Sorry i was a bit busy,

I have take a look on you links. Yes the world map widget is close as a Region selector, soon the Application will be open to test, and depends of feedback i'll touch all necessary thing.

For me i got a 100% succes arround the world map widget. It work like expect. The user click a area and the dynamically a list of closest city is generate. (Minimum list is 10 cities, dinamically it grow the searching area for got 10 cities list)

i have take a look on https://github.com/srawlins/timezone share by @louies0623 , that is the correct approch. The project got a unofficial db it 25% of entry inside IANA db. I'm not sure about how TZ env var will work with a custum db. But that clearly fixe what i have repport about IANA db is occitental TimeZone point of view. I let it approch for a next step, we'll determine if we use it later.

Thas is important to have Date and Time it work under a Live CD (no write is allowed), then use date CLI couple with TZ env vars, Yet i prefert not custum the IANA db for be sure to have a minimam system it work.

about clock: image

it have been simplify like that: image

Simplify just mean no need a tonne of code for make it work. Normaly it will creat a flat configuration file, it respect XFG location.

the actual clock should read it file, at startup (or a async process should control config file change)

Hierosme commented 1 year ago

Hooooo year curl -v http://ip-api.com/line?fields=timezone

probonopd commented 1 year ago

Isn't the installer doing something like this already?

https://github.com/helloSystem/Utilities/blob/2dce6938e5d867fc3740c78389c654d1fb699f16/Utilities/Install%20helloSystem.app/Resources/install.py#L1041-L1049

https://github.com/helloSystem/Utilities/blob/2dce6938e5d867fc3740c78389c654d1fb699f16/Utilities/Install%20helloSystem.app/Resources/install.py#L260-L275

https://github.com/helloSystem/Utilities/blob/2dce6938e5d867fc3740c78389c654d1fb699f16/Utilities/Install%20helloSystem.app/Resources/install.py#L240-L258

Hierosme commented 1 year ago

Hooooo i can use it code . And just realize the world map widget i just have create should be really solid in case of use inside the installer.

lol: the only part of the code i contest is the commentary

# TODO: Set language, keyboard,, etc. automatically based on geolocation if user allows 

i'm French but use QWERTY keyboard ....

probonopd commented 1 year ago

i'm French but use QWERTY keyboard ....

It will not hurt your use case (you can still change the keyboard manually later). But it will improve mine where geolocation = keyboard = language, and where "QWERTY" is just wrong because everyone here uses "QWERTZ".

louies0623 commented 1 year ago

There is also a time zone related problem with this system that @probonopd "languages to the corresponding time zone."that's idea.
Both South Africa and New Zealand use English. How do I accurately correspond to the time zone? French and Spanish places also span many time zones. Do we have to add their languages ​​​​and regions one by one? is it on the language list?

probonopd commented 1 year ago

Correct, the time zone should also be possible to be set separately. But as a first guess, when one selects German as the language, then it should default to the German time zone. It is not correct in all cases, but it is more correct than always assuming English, which is almost always wrong.