Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: XPS Led Changer  (gelezen 2114 keer)

Offline Nunslaughter

  • Lid
    • timovwb
  • Steunpunt: Nee
XPS Led Changer
« Gepost op: 2007/11/20, 19:04:57 »
Voor de mensen met een Dell XPS m1710 die Ubuntu 7.10 of 7.04 draaien.
Een simpele GUI om de leds rondom de laptop met een muisklik van kleur te veranderen.

  To run, unpack it in your home directory, then open a terminal and type

    cd xpsledchanger0.3/

  then type

    sudo ./xpslc.py


Deze versie 0.3 werkt met Gutsy en zou ook moeten werken in Feisty, ik heb alleen geen Feisty geinstalleerd voor het moment, dus ik kan niet testen.

Deze 3 pakketten moeten wel geinstalleerd zijn:
  libsmbios1
  libsmbios-bin
  libsmbios-dev

in Gutsy kan dit via Synaptic, in Feisty moet libsmbios zelf gedownload en gecompileerd worden.
http://linux.dell.com/libsmbios/download/libsmbios/libsmbios-0.13.10/

Voor suggesties of fouten, laat mij iets weten!


XPSLedChanger_0.3.tar.bz2

Offline Rulus

  • Lid
  • Steunpunt: Nee
XPS Led Changer
« Reactie #1 Gepost op: 2007/11/20, 19:52:18 »
Ik heb eens naar je code gekeken, niet naar de uitwerking, want ik heb geen Dell XPS. Ik heb een paar suggesties:

* In de interface staan knoppen voor zowel Feisty als Gusty. Dat is verwarrend, je kan deze vervangen door 1x 3 knoppen en het programma zelf laten uitmaken of het besturingsysteem Feisty of Gutsy is (door bijvoorbeeld het bestand /etc/lsb-release uit te lezen).

* In je code staat heel erg veel dubbel, dat is een teken van 'slecht programmeren'. In feite moet je er proberen voor te zorgen dat er niets dubbel staat, dubbele code leidt immers tot dubbele fouten en dubbel werk. Je hebt bijvoorbeeld twee nagenoeg identieke methoden: eentje voor Feisty en eentje voor Gutsy. Je zou deze kunnen vervangen door 1 methode met als parameter de locatie van dellLEDCtl. Zo zou je je code nog verder kunnen inkorten door een methode te maken die het uitvoeren van het commando en het printen van een lijntje output combineert. Ik denk dat het in dit geval ook zou helpen om gebruik te maken van lijsten en/of dictionaries.

* De knop 'modprobe dcdbas' staat wat op een ongelukkige plaats. Ik zou Quit vervangen door Cancel, en die modprobe knop mee onderaan zetten als Save.

Ik hoop dat je iets hebt aan de suggesties :)

Offline Nunslaughter

  • Lid
    • timovwb
  • Steunpunt: Nee
XPS Led Changer
« Reactie #2 Gepost op: 2007/11/20, 20:35:39 »
hier ben ik zeker iets mee!

ik ben nog maar net begonnen met python, dus dit was misschien iets te voorbarig, maar het programma werkt, dus wou het wel delen met anderen...

ik ben hier nog elke dag mee bezig, en heb nog heel wat uit te zoeken...dus zal mij wat bezig houden met uw suggesties...
die door de file /etc/lsb-release in te lezen lijkt me wel zeer handig! ook naar tip 2 ga ik eens wat zoeken...
voor puntje 3: modprobe dcdbas is niet om te saven, deze driver moet gewoon geladen om de kleuren te wisselen...daarom dat ik ook geen ok en annuleren knop heb, omdat als ge de kleur wisselt in de combobox, deze ook direct word doorgevoerd...

Offline Rulus

  • Lid
  • Steunpunt: Nee
XPS Led Changer
« Reactie #3 Gepost op: 2007/11/20, 20:58:29 »
Zeker verder werken, je zal zien dat hoe meer je verder leest/leert het altijd maar gemakkelijker wordt. Punt 3 had ik dan verkeerd begrepen denk ik.

In dit geval zou ik de gebruiker niet lastig vallen met het al dat niet modproben van de driver. Ik zou een methode schrijven die de driver laadt; die bijvoorbeeld aan de hand van de output van 'lsmod' uitmaakt of hij al dan niet geladen is en hem zo nodig laadt. Als je die methode dan laat uitvoeren als je programma start de driver sowieso geladen, en hoeft de gebruiker zich daar niks van een te trekken.

Offline Nunslaughter

  • Lid
    • timovwb
  • Steunpunt: Nee
XPS Led Changer
« Reactie #4 Gepost op: 2007/11/20, 23:06:46 »
Citaat van: Rulus
In dit geval zou ik de gebruiker niet lastig vallen met het al dat niet modproben van de driver. Ik zou een methode schrijven die de driver laadt; die bijvoorbeeld aan de hand van de output van 'lsmod' uitmaakt of hij al dan niet geladen is en hem zo nodig laadt. Als je die methode dan laat uitvoeren als je programma start de driver sowieso geladen, en hoeft de gebruiker zich daar niks van een te trekken.
ok, dit is al in orde gebracht :) ik laat de driver laden telkens als het script word gestart...wel niet aan de hand van lsmod, maar dat is misschien nog iets wat ik in de toekomst zal uitzoeken...


Citaat van: Rulus
Zeker verder werken, je zal zien dat hoe meer je verder leest/leert het altijd maar gemakkelijker wordt
ja dat doe ik zeker, en met plezier...zeker als ge bijleert met een programma wat voor uzelf nuttig is...

Offline Nunslaughter

  • Lid
    • timovwb
  • Steunpunt: Nee
XPS Led Changer
« Reactie #5 Gepost op: 2007/11/22, 21:24:32 »
ik heb ondertussen grote wijzigingen gemaakt in de code...wat suggesties van rulus uitgevoerd en ziet er nu heel wat properder uit...

ik heb ook nog een vraagske aan de kenners, ik vind geen antwoord en kan zelf niet echt een oplossing vinden...zoals ge kunt zien, gebruik ik 3 comboboxes om telkens voor iedere plaats de kleuren te wisselen...nu is het de bedoeling dat ik de kleurintensiteit ook kan wijzigen per kleur, dit word gedaan door het laatste cijfer van de kleurcodes, dus:
 -z2 1 -l 7
betekent eigenlijk, zone 2, kleur 1, intensiteit 7...de intensiteit kan van 0 tot 7 gaan...
nu had ik al gedacht aan een spinbutton per kleur of eventueel als het te moeilijk is, 1 voor alle kleuren samen...maar ik heb geen idee en vind ook niet hoe ik die spinbutton zou kunnen linken met dat laatste cijfer...

dus enige ide├źn zijn welkom!

Offline Rulus

  • Lid
  • Steunpunt: Nee
XPS Led Changer
« Reactie #6 Gepost op: 2007/11/23, 10:55:58 »
Ik ben zo vrij geweest het nog een beetje in te korten :) : xpsledchanger0.3.tar.bz2

Als je de intensiteit mee wil veranderen hoef je nu alleen maar set_color op te roepen met de intensiteit  als laatste parameter.

Ik zou toch opteren voor een Save knop oid., dat beperkt het aantal on_* methodes aanzienlijk tot slechts 1, wat toch wel veel gemakkelijker is (zeker als je ook nog spinbuttons gaat toevoegen). Je hebt dan gewoon 1 methode die wordt uitgevoerd als je op Save drukt; deze methode leest dan alle widgets uit en voert 3x de overeenkomstige set_color uit.

Offline Nunslaughter

  • Lid
    • timovwb
  • Steunpunt: Nee
XPS Led Changer
« Reactie #7 Gepost op: 2007/11/23, 14:16:07 »
heel erg bedankt hiervoor...het is te zien dat ik pas begonnen ben :) maar alles lijkt mij toch duidelijk...

vind ge het erg als ik op uw versie verder ga? of liever niet?
dan ga ik ook eens op deze manier wat uitproberen voor intensiteit...

het is nu ook zo dat als ge de laptop herstart, de kleuren terug in de oorspronkelijke staat zijn, daarom wou ik aan de save button koppelen dat de kleuren onthouden worden...dus nu kunt ge voor deze sessie de kleuren kiezen (bijv uit omdat ge op batterij werkt, maar bij de volgende herstart zijn ze gewoon terug aan), en als ge op de save knop drukt, blijven ze gewoon de kleur die ge gekozen hebt...
ik denk dat dit zelfs gewoon werkt door de -b parameter toe te voegen achter de kleurencode...

Offline Rulus

  • Lid
  • Steunpunt: Nee
XPS Led Changer
« Reactie #8 Gepost op: 2007/11/23, 14:56:18 »
Nee hoor, je mag gerust verder gaan met mijn versie, geen probleem :)