This is an experimental feature for now, since I don't know how well it'll work yet. The user should always have the option to disable this feature, even when it works its way out of experimental.
66 lines
2.0 KiB
Python
66 lines
2.0 KiB
Python
# Bryan Schumaker (8/13/2010)
|
|
|
|
import gtk
|
|
import ocarina
|
|
import libsaria
|
|
import body
|
|
import shortcuts
|
|
from libsaria.path import files
|
|
|
|
TARGET_TYPE_URI_LIST = 80
|
|
DND_MASK = gtk.DEST_DEFAULT_MOTION | gtk.DEST_DEFAULT_HIGHLIGHT | gtk.DEST_DEFAULT_DROP
|
|
DND_LIST = [("text/uri-list", 0, TARGET_TYPE_URI_LIST)]
|
|
|
|
width = libsaria.prefs.init("ocarina.window.width", 800)
|
|
height = libsaria.prefs.init("ocarina.window.height", 600)
|
|
|
|
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
|
window.resize(width, height)
|
|
window.connect("delete-event", ocarina.quit)
|
|
window.connect("key-press-event", shortcuts.key_pressed)
|
|
window.add(body.body)
|
|
window.show()
|
|
|
|
def grab_focus():
|
|
window.set_focus(None)
|
|
shortcuts.register_shortcut("Escape", grab_focus, True)
|
|
|
|
def set_title(new_title = None):
|
|
if new_title == None:
|
|
new_title = ocarina.__vers__
|
|
window.set_title(new_title)
|
|
set_title()
|
|
|
|
def get_art_icon_state():
|
|
return libsaria.prefs.get("ocarina.window.articon")
|
|
|
|
def toggle_art_icon(newval):
|
|
libsaria.prefs.set("ocarina.window.articon", newval)
|
|
icon = "images/ocarina.png"
|
|
if newval == True:
|
|
icon = libsaria.sources.all_attrs()["art"]
|
|
set_icon(icon)
|
|
libsaria.prefs.init("ocarina.window.articon", False)
|
|
|
|
def set_icon(icon = "images/ocarina.png"):
|
|
if (icon != "images/ocarina.png") and (get_art_icon_state() == False):
|
|
icon = "images/ocarina.png"
|
|
window.set_icon_from_file(icon)
|
|
set_icon()
|
|
|
|
def resized(widget, geom):
|
|
if libsaria.prefs.get("ocarina.window.width") != geom.width:
|
|
libsaria.prefs.set("ocarina.window.width", geom.width)
|
|
if libsaria.prefs.get("ocarina.window.height") != geom.height:
|
|
libsaria.prefs.set("ocarina.window.height", geom.height)
|
|
window.connect("size-allocate", resized)
|
|
|
|
def dnd_receive(widget, context, x, y, selection, type, time):
|
|
if type == TARGET_TYPE_URI_LIST:
|
|
uri = selection.data.strip('\r\n\x00')
|
|
for file in uri.split():
|
|
file = file[7:]
|
|
files.universal_open(file)
|
|
window.connect("drag-data-received", dnd_receive)
|
|
window.drag_dest_set(DND_MASK, DND_LIST, gtk.gdk.ACTION_COPY)
|