Kyoto: Nachtrag

Ich habe es nun endlich – nach fast anderhalb Jahren – geschafft, meinen Artikel über unsere Reise nach Kyoto fertig zu stellen. Unbedingt lesen! :-)

Mausklicks in GtkLabel

Entgegen der landläufigen Behauptung ist es durchaus möglich, Mausklicks auf GtkLabel-Instanzen zu verarbeiten. Der Schlüssel liegt darin, GTK anzuweisen, dass das jeweilige Label ein GdkWindow haben soll. Aufmerksam gemacht wurde ich hierauf durch diesen Beitrag von Tadej Borovšak. Hier ein Beispiel:

#! /usr/bin/env python
 
import gtk
 
window = gtk.Window()
window.set_title('Label Button Press Test')
window.set_size_request(400, 300)
window.connect('destroy', lambda w: gtk.main_quit())
 
box = gtk.VBox(spacing=6)
window.add(box)
 
class ClickableLabel(gtk.Label):
    __gsignals__ = {'button-press-event': 'override'}
 
    def __init__(self, *args):
        gtk.Label.__init__(self, *args)
        # This is the important line to enable more signals
        self.set_has_window(True)
        self.add_events(gtk.gdk.BUTTON_PRESS_MASK)
 
    def do_button_press_event(self, event):
        print 'Clickable: %s' % event.type
 
clickable_label = ClickableLabel()
clickable_label.set_markup('<span size="25000">Clickable label</span>')
box.pack_start(clickable_label, False)
 
def on_button_press_event(widget, event):
    print 'Regular: %s' % event.type
 
label = gtk.Label()
label.set_markup('<span size="25000">Regular label</span>')
# Does not work and renders the label invisible
label.set_has_window(True)
label.add_events(gtk.gdk.BUTTON_PRESS_MASK)
label.connect('button-press-event', on_button_press_event)
box.pack_start(label, False)
 
window.show_all()
gtk.main()

Wie zu sehen ist, lassen sich unter Nutzung einer einzelnen Zeile weitere Signale für ein GtkLabel „freischalten“. Jedoch nur für abgeleitete Typen, nicht für die Standard-GtkLabels, wie am zweiten Label zu erkennen ist. Warum dies so ist ist mir trotz Blick auf gtkwidget.c noch nicht ersichtlich. Erklärungen zur Methode set_has_window() erwähnen, dass diese nur in der Initialisierung eines Widgets aufgerufen werden sollte. Intern wird hier nur das GTK_NO_WINDOW-Flag gesetzt oder gelöscht und infolge dessen unter anderem das Zeichnen von Widgets anders gehandhabt. Aus diesem Grund hat ein GtkLabel bspw. auch keinen Hintergrund welchen man ändern könnte.

Favoriten beim Eurovision Song Contest

Durch ihren Auftritt bei „Schlag den Raab“ rechnete ich bei Lenas Auftritt beim Eurovision Song Contest schon mit dem schlimmsten, sie konnte da allerdings mit einem makellosen Auftritt wieder sprichwörtlich punkten. Und wie sie gepunktet hat; 246 Punkte und damit ein meilenweiter Abstand zu den Folgeplatzierten. Somit hat es also 28 Jahre gedauert, bis Deutschland es wieder schaffen konnte, die musikalische Nummer 1 in Europa zu sein. Und auch wenn ich nach wie vor nicht vom musikalischen Talent Lenas überzeugt bin, so gönne ich ihr doch den Sieg.

Nichtsdestotrotz sind mir vom Verlauf des Contest jedoch zwei andere Beiträge ganz besonders in Erinnerung geblieben:

SunStroke Project & Olia Tira – Run Away (Moldavien)

Die Kombination aus Violine (immer gut) und treibenden elektronischen Beats liegt gänzlich auf meiner Wellenlänge. Die Abrundung durch das kleine aber markante Saxophon-Solo ist gänzlich gelungen und dass Olia Tira auch noch etwas fürs Auge ist tut dem ganzen keinen Abbruch. Lediglich den Beitrag des Sängers vom SunStroke Project hätte man sich meiner Meinung nach sparen können.

maNga – We Could Be The Same (Türkei)

Einfach nur bombastisch und überzeugend vom allerersten Ton. Interessanterweise zählt auch hier eine Violine zum Ensemble. In typischer New-Metal-Fasson gibt es hier kräftige E-Gitarren und Drums zur Genüge nebst eingängigem Gesang. Und mit dem Bandnamen kann man bei mir eigentlich fast gar nichts falsch machen.

Dass ich mir diese Videos hin und wieder erneut anschaue ist deutlicher Beleg dafür, dass sie mir für immer in Erinnerung bleiben werden. Ich weiß nicht, ob ich das von „Satellite“ auch behaupten kann.

Iteration durch gtk.TreeModel

Zur Verarbeitung von Einträgen in einem gtk.TreeModel bedient man sich in Python üblicherweise der Iteration. Hierbei bietet gtk.TreeModel einige Methoden zur Arbeit damit. Ein übliches Konstrukt sieht damit so aus:

iter = model.get_iter_first()
while True:
    value = model.get_value(iter, 0)
    # Do something with value
    iter = model.iter_next(iter)
    if iter is None:
        break

Ziemlich umständlich und daher oft auch in dieser etwas vereinfachten Version vorzufinden:

iter = model.get_iter_first()
while iter:
    value = model.get_value(iter, 0)
    # Do something with value
    iter = model.iter_next(iter)

Doch wie so oft in Python gibt es eine viel intuitivere und simplere Lösung; gtk.TreeModel implementiert __iter__ und __next__, womit sich das obige Konstrukt auf folgenden Zweizeiler reduzieren lässt.

for row in model:
    value = row[0]

Bei row handelt es sich um eine gtk.TreeModelRow, welche intuitiven Zugriff auf die Daten der jeweiligen Spalten ermöglicht.

Operatoren-Verkettung in Python

Eher durch Zufall bin ich heute auf etwas gestoßen, was ich mir seit jeher in einer vernünftigen Programmiersprache gewünscht aber bis jetzt nie vorgefunden habe:

if a < b < c
    # …

Ein völlig intuitives und sehr gut lesbares Konstrukt zum einfachen Vergleich dreier oder mehr Operanden. In praktisch jeder Sprache muss man sich jedoch mit diesem Konstrukt behelfen:

if a < b and b < c
    # …

Nicht so jedoch in Python. Dort ist genau obiges möglich. Hierbei können offenbar beliebig viele Operanden verkettet werden. Eine feine Sache.

凸凹

Dass viele dem Chinesischen entstammenden Kanji oft optisch sehr ihrer Bedeutung entsprechen ist nichts Neues. Aber heute bin ich auf eine Kombination zweier Kanji gestoßen, die einfach Herz allerliebst ist.

Die beiden betreffenden Kanji sind 凸 und 凹. Diese beiden sind aus meiner Sicht herausragend, da sie über deutlich ihre Bedeutung versinnbildlichen: 凸 bedeutet konvex, 凹 dagegen konkav. Kann man diese beiden Begriffe noch offensichtlicher darstellen?

Und als ob dies nun noch nicht genug wäre ergibt sich durch die Kombination dieser beiden Kanji das Wort 凸凹, was Unebenheiten beschreibt. Wenn doch nur alle Kanji so intuitiv wären. ;-)

USK: doof

Nachdem ich mir nun nach langer Zeit einmal wieder ein neues DS-Spiel gegönnt hatte, musste ich feststellen, wie kreativ und rücksichtsvoll hier offenbar die Alterseinstufung seit einiger Zeit von Statten geht:

Deutsches Cover von Dragon Ball Origins mit riesiger USK-Markierung

Die USK-Markierung nimmt ¼ des gesamten Covers ein … Im Vergleich hierzu die europäische Variante:

Und auch einmal die amerikanische:

Beides weitaus humaner und in keiner Weise so enorm entstellend wie die deutsche Fassung. Und im Gegensatz zu dieser ist die einzig wichtige Information („12+“ und „T“) sofort auf einen Blick zu sehen, da prominent dargestellt. In der deutschen Variante nimmt die Information nicht einmal die Hälfte der Markierung ein. Wen interessiert der Text auf der Markierung? Wen interessiert, auf welches Gesetz dies fußt? Würde man die Markierung auf die einzig wichtige Information (hier: „16“) beschränken, gäbe es auch keinen Grund, diese so monumental darzustellen. Sehr passend zu diesem Thema ist auch dieser Vergleich mit Verkehrsschildern.

Und dass nicht nur Käufer sondern auch Entwickler nicht sonder
lich von der Kennzeichnungspflicht in diesem Umfang angetan sind, lässt sich an der kreativen Variante des Spiels Mäh-Jongg erkennen: „Großes Label: doof“ – Amen.

Viktor und Dietrich

Es bahnt sich ein Medienspektakel an, dass seinesgleichen sucht. Produziert von einigen meiner Kommilitonen zeigt sich wieder mal gekonnter Witz im Gewand einer einwandfreien Produktion. Der Trailer spricht für sich:

fripSide – only my railgun

Ich musste schmunzeln …

Ich blickte ungläubig drein …

Ich vergoss eine Träne des Glücks …

Bestes OP & PV diese Saison!

Die volle Fassung:

Bereits jetzt macht sich hier bei mir das gleiche Gefühl wie bei den OPs zu Shakugan no Shana und To Aru Majutsu no Index breit. Egal wann ich dieses Lied also in Zukunft hören werde, Gänsehaut ist garantiert.

赤ずきんと健康

Endlich wird eine Frage beantwortet die uns alle sicher seit unserer Kindheit beschäftigt: was geschah mit Rotkäppchen, während sie sich im Bauch des Wolfes befand?