#!/usr/bin/env python
#-*- coding: utf-8 -*-

# Show Transparent PNG (透過PNGを表示する)

import os
import math
import cairo
import gtk
import gobject
import sys

class FaceWindow(gtk.Window):
  def __init__(self):
    gtk.Window.__init__(self)

    print '[FW:__init__]: sys.argv[1] = ', sys.argv[1]

    #self.face = 'smk.png'
    self.face = sys.argv[1]

    ebox = gtk.EventBox()
    self.add(ebox)

    self.img = gtk.Image()
    ebox.add(self.img)

    #print "[FW:__init__]:img size = (", self.face_width, ",", self.face_height, ")"


    # Windowウィジェットに対する設定
    self.set_decorated(False)
    self.set_resizable(False)
    self.connect('delete-event', self.on_delete_event)
    self.connect("button_release_event", self.on_button_release_event)
    
    self.connect("key-release-event", self.on_key_release_event)

    self.set_img(self)

    # Keep on top
    #self.set_keep_above(True)

  def set_img(self, widget, data=None):
    self.img.set_from_file(self.face)
    buff = self.img.get_pixbuf()

    #self.face_width, self.face_height = buff.get_width(), buff.get_height()

    self.bitmap = gtk.gdk.Pixmap(None, buff.get_width(), buff.get_height(), 1)
    ca = self.bitmap.cairo_create()

    ca.set_source_rgb(0, 0, 0)
    ca.set_operator(cairo.OPERATOR_DEST_OUT)
    ca.paint()

    caimg = cairo.ImageSurface.create_from_png(self.face)
    ca.set_source_surface(caimg)
    ca.set_operator(cairo.OPERATOR_OVER)
    ca.paint()

    self.shape_combine_mask(self.bitmap, 0, 0)

  def on_delete_event(self, widget, event=None):
    print '[FW:on_delete_event]: -- quit --'
    gtk.main_quit()

  def on_button_release_event(self, widget, event):
    print "[FW:on_button_release_event]: (event.x , event.y) = (", event.x, ",", event.y, ")"
    # 左クリック時
    if (event.state & gtk.gdk.BUTTON1_MASK):
      print "[FW:on_button_release_event]: Left button clicked."

    # 右クリック時
    elif (event.state & gtk.gdk.BUTTON3_MASK):
      print "[FW:on_button_release_event]: Right button clicked."
      print '[FW:on_button_release_event]: -- quit --'
      gtk.main_quit()
    else:
      print "[FW:on_button_release_event]: event.state = ", event.state

  def on_key_release_event(self, widget, event):
    print "[FW:on_key_release_event]: event.keyval = ", event.keyval
    if (event.keyval == 65307):
      print '[FW:on_key_release_event]: -- quit --'
      gtk.main_quit()
    # else:
    #   tx, ty = self.get_position()[0], self.get_position()[1]
    #   print '[FW:on_key_release_event]: self.get_position() = (', tx, ',', ty, ')'
    #   self.move(tx, ty-1)

if __name__ == '__main__':
  win = FaceWindow()
  win.show_all()

  gtk.main()
