Semyazas.de

Like a phoenix from the ashes

by Michael Hapke on Jan.18, 2010, under Solar Flare

Eins der Probleme bei WPF Anwendungen, gerade im Bereich GUI, scheint zu sein, dass bei Reaktivierung aus dem Standby-Modus die Anwendung lange Zeit hängt und, was gerade bei größeren “Transparent/Borderless” Windows ein Problem ist, sie ausgraut.

Bei mir hat folgendes geholfen:

Im Konstruktor der Klasse wurde folgende Zeile eingefügt:

SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(this.OnPowerModeChanged);

Zusätzlich wird die Funktion innerhalb der Window Klasse deklariert:

private void OnPowerModeChanged(object sender, PowerModeChangedEventArgs e)
{

if (e.Mode == PowerModes.Resume)
{
myRectangle.Visibility = Visibility.Visible;
InvalidateArrange();
Thread.Sleep(5000);
myRectangle.Visibility = Visibility.Hidden;

}
}

Das mag nicht unbedingt die eleganteste Lösung sein, verhindert aber die Rückmeldung von Windows, dass die Anwendung nicht mehr reagiert.

Leave a Comment more...

Cover me, I’m going in

by Michael Hapke on Jan.17, 2010, under Code-Snippets, Solar Flare

Nachdem die Arbeiten an Solar Flare schon recht gut fortgeschritten sind, habe ich heute endlich eines der Probleme lösen können, die mich am meisten geärgert haben.

Ich wollte das Programm im Ganzen nutzen können wie ein Gadget/Widget, deshalb musste es unbedingt auf den Desktop “geklebt werden” und sollte auch bei eventuellen Clicks auf die Oberfläche nicht in den Vordergrund gebracht werden. Das das mit WPF gar nicht so einfach ist, musste ich schon vor einer Weile feststellen und so habe ich dem einfach keine hohe Priorität zugewiesen. Heute bin ich aber, mehr durch Zufall als durch Recherche, auf die Lösung gestoßen.

C# aktiviert ein Fenster nach dem Konstruktor, also muss für den EventHandler Window1.activate eine neue Methode hinzugefügt werden, die meine Bottommost Funktion aufruft. War eigentlich gar nicht so schwer, aber man muss da erstmal drauf kommen…

Das sieht dann wie folgt aus:

Wir brauchen die user32.dll um aus ihr die Funktion SetWindowPos zu nutzen, dazu kommt folgender Code in unsere Klasse Window1

[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);

const UInt32 SWP_NOSIZE = 0×0001;
const UInt32 SWP_NOMOVE = 0×0002;
const UInt32 SWP_NOACTIVATE = 0×0010;

static readonly IntPtr HWND_BOTTOM = new IntPtr(1);

Danach wird folgendes in den Konstruktor eingefügt:

this.Activated += new EventHandler(OnActivate);

Und zum Schluss noch die Funktion OnActivate:

public void OnActivate(object sender, EventArgs ee)
{
IntPtr hWnd = new WindowInteropHelper(this).Handle;
SetWindowPos(hWnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);

}

Damit hätten wir eine funktionierende Gadget Applikation, die immer unter den anderen Fenstern residiert.

War also doch einfacher als gedacht

Leave a Comment more...

The journey is the reward

by Michael Hapke on Jan.12, 2010, under Solar Flare

Gestern erst die Funktion hinzugefügt, schon fallen mir heute reihenweise Dinge ein, die so eine Schreibfunktion überhaupt erst interessant machen. Textmarker, Annotationen zu bestehenden Dateien, Radierer, etc. pp.

Da kommt also noch einiges an Arbeit auf uns zu. Natürlich will ich keine Konkurrenz zu irgendwelchen Zeichenprogrammen erschaffen, deswegen werden sich die Veränderungsfunktionen auf ein Minimum beschränken, aber was mir wichtig ist, sind schnelle Notizen. Hier mal ein aktuellerer Screenshot:

Leave a Comment more...

One for good measure

by Michael Hapke on Jan.12, 2010, under Solar Flare

Nachdem ich heute ganz gut vorangekommen bin, habe ich beschlossen, dem Programm endlich eine seiner wichtigsten Funktionen hinzuzufügen, ein InkCanvas. Jetzt lässt sich durch einfaches klicken eine Oberfläche für die Aufnahme von Stylus-Eingaben aufrufen, die sich mit dem Newsreader und der Ordneransicht abwechselt.

Das ganze sieht folgendermaßen aus:

Derzeit fehlt noch die Radiergummi-Funktion, aber was nicht ist, kann ja noch werden.

Leave a Comment more...

Practice makes perfect

by Michael Hapke on Jan.11, 2010, under Solar Flare

Der nächste Schritt zu einer schicken Oberfläche für meinen TX2 ist getan, ich habe den Newsticker erweitert. Ab jetzt wird bei einem Linksklick darauf ein größerer Newsreader geöffnet, der (derzeit noch fest integrierte 3) weitere Newsfeeds aufbereitet.

Am Anfang habe ich nur den einen Feed, der auch unten in der Taskbar durchläuft, in dem Newsreader abgebildet, aber habe feststellen müssen, dass ich die News sowieso nicht alle auf einer Seite gleichzeitig anzeigen kann, also eine Control für das “Blättern” mit einbauen musste. Und wo ich einmal dabei war, habe ich die gleiche Control kopiert und noch dazu genutzt, durch verschiedene Feeds zu blättern, das sieht jetzt so aus:

Solar Flare in der Newsreader Ansicht

Ich persönlich find’s ganz schick

Leave a Comment more...

Once the ball is set to rolling…

by Michael Hapke on Dec.27, 2009, under Digital Life

Weihnachten und die damit verbundene alljährliche Völlerei ist überstanden und wir können uns wieder Projekten widmen. Neben der Weiterentwicklung von Solar Flare habe ich angefangen eine Liste mit Hardware zusammenzustellen aus der ich einen Server aufbauen will. Der Server soll möglichst 24/7 laufen und dabei gleichzeitig meinen HTPC ersetzen. Das ist im Moment noch ein älteres Notebook, das zwar wunderbar ausreicht um Musik abzuspielen und DVDs oder SD Filme anzuzeigen, aber bei HD leider in die Knie geht :/

Geplant habe ich eine recht hoch dimensionierte Hardware, da ich den Server für mehrere Aufgaben per Virtualisierung vorgesehen habe. Unter anderem soll er auch als 9+ TB Fileserver/VPN-Gateway/Terminalserver usw. dienen. Das einzige Problem an der Sache sind natürlich die Anschaffungskosten, die etwas höher ausfallen als mein Budget es zulässt. Ab jetzt heisst es eisern sparen, jeden Cent mitnehmen, der irgendwo verdient werden kann und hoffen, dass ich möglichst schnell das Geld zusammenbekomme.

Wer sich übrigens (was ich mir unmöglich vorstellen kann…) in irgendeiner Form nicht zurückhalten kann zu sagen: Das ist ne tolle Idee, das unterstütze ich, dem kann ich folgenden Spendenlink empfehlen:

https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=10763997

Leave a Comment more...

It’s been a while…

by Michael Hapke on Dec.19, 2009, under Solar Flare, Zwischenspiel

Hat ja ne ganze Weile gedauert, aber hier bin ich wieder mit ein paar neuen Worten. Solar Flare wächst und gedeiht, auch wenn ich neben der FH einfach nicht jeden Tag die Zeit finde daran weiter zu arbeiten. Ich habe dem Blog eine Gallery hinzugefügt indem die ersten Screenshots der Oberfläche zu sehen sind. Viel Spaß damit!

Leave a Comment more...

Man, has it been a ride

by Michael Hapke on Dec.01, 2009, under Solar Flare

Nachdem wir vor ner Weile ja angefangen haben an Solar Flare zu arbeiten, kommen wir inzwischen ganz gut voran.

Ein Newsreader, Emailstatus, anstehende Termine, touchfreundlicher Zugriff auf Programme und Ordner, Festplattenbelegung, CPU- und RAM-Auslastung sind drin. Weiterhin geplant ist ein Zugriffsmenü für die Festplatten, ausgehend von der Belegungsanzeige, ein FullscreenInkOverlay, um Styluseingaben aufzunehmen, ohne den normalen Touchbetrieb zu behindern, sowie weitere Kleinigkeiten, die hier und da die Übersicht und die Fingerfreundlichkeit verbessern. Ein paar Tage noch, dann sollte auch das Application-Startdock soweit sein und dann gibt’s auch die ersten Screenshots ;)

Leave a Comment more...

Can’t touch this!

by Michael Hapke on Nov.25, 2009, under Solar Flare

Nachdem ich jetzt eine ganze Weile mit meinem neuen HP TX2 rumspielen konnte, bin ich mehr und mehr unzufrieden mit der Umsetzung der Touch-Unterstützung in Windows 7.

Die SuperBar ist toll, Firefox ist nach ein paar Tweaks auch ganz gut zu gebrauchen, auch im Explorer mit entsprechend großen Datei- und Ordnersymbolen geht alles. Aber hat schonmal jemand versucht, während er nur halb auf den Bildschirm schielt einen Unterpunkt von Start > Alle Programme mit dem Finger zu treffen? Das ist wie Ameisen mit Dartpfeilen erdolchen…machbar, aber eher Zufall. Also kam mir der Gedanke alles etwas touchfreundlicher zu gestalten, ein Launcher sollte her.

Nun war es bei mir aber mit einem Launcher noch nicht getan. Man ist schliesslich nicht glücklich, wenn man nur ein Minimum an Funktionalität hat. Deswegen sollten nebenbei auch noch ein paar zusätzliche Anzeigen wie: Outlook-Termine und -Tasks, Datum und Uhrzeit in groß (HUD anyone?) und und und dazu. Also landete ich bei Rainmeter. Ganz nette Sache, kannte ich schon von ein paar Experimenten mit meinem eeePC. Aber irgendwie wollte mir keins der verfügbaren Themes so recht zusagen.

Also entschloss ich mich einfach selbst was zu machen. Ich war aber nicht unbedingt glücklich darüber, dass ich auf fertig programmierte Schnittstellen einer Software angewiesen war, die meinen ohnehin begrenzten Spielraum noch mehr einschränken würden…

Langer Rede kurzer Sinn: C# und ne eigene GUI, das soll’s werden. Nachdem ich dann dem guten Sethur, der ja auch einen TX2 hat, von meinem Plan berichtet habe ging’s also gestern abend gleich ans Werk. Die ersten Schritte sind gemacht, die ersten Funktionen integriert und lauffähig. Wir sind also mitten im Projekt “Custom Touchscreen GUI für HP TX2″, oder wie es ab heute heissen wird: “Solar Flare”

Leave a Comment more...

Home is where one starts from

by Michael Hapke on Nov.16, 2009, under Digital Life

Heute habe ich mich zum ersten Mal mit WPF und C# beschäftigt und ich muss sagen, ich bin beeindruckt, wie schnell da Fortschritte zu verbuchen sind. Natürlich ist das Programm an dem ich gebastelt habe weder eine Schönheit, noch der Wahnsinn was die Funktionalität angeht, aber zumindest hab ich mich schonmal mit der Art und Weise auseinandersetzen können, wie das Zusammenspiel zwischen XAML und C# funktioniert.

Als erstes habe ich ein kleines Applet geschrieben, mit dem sich die in Windows 7 integrierte Virtual-WiFi Funktion nutzen lässt. Zwar derzeit noch über Konsolenaufrufe, da ich mich noch nicht in die API eingearbeitet habe, aber das ist ja auch nur der erste Schritt.

Leave a Comment more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...

Archives

All entries, chronologically...