# -*- coding: utf-8 -*-
import urllib, tempfile
from PyQt4 import QtCore, QtGui
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class QCustomTextBrowser(QTextBrowser):
  def setup(self, parent=None):
    self.parent = parent

  def loadResource(self, type, name):
    url = str(name.toString())
    ret = QVariant()
    if url.startswith('http://'):
      tmpFile = tempfile.mkstemp()
      tmpFile = str(tmpFile[1])
      urllib.urlretrieve(url, tmpFile)
      ret = QTextBrowser.loadResource(self, type, QUrl(tmpFile))
    else:
      ret = QTextBrowser.loadResource(self, type, name)
    return ret

  def contextMenuEvent(self, e):
    cmenu = QMenu()
    cutAction = cmenu.addAction(_("Cut"))
    copyAction = cmenu.addAction(_("Copy"))
    pasteAction = cmenu.addAction(_("Paste"))
    action = cmenu.exec_(self.mapToGlobal(e.pos()))
    cursor = QTextCursor(self.document())
    if action == cutAction:
      self.cmcut()
    elif action == copyAction:
      self.cmcopy()
    elif action == pasteAction:
      self.cmpaste()

  def cmcut(self):
    cursor = self.textCursor()
    selection = cursor.selectedText()
    if not cursor.movePosition(QTextCursor.Down):
      QApplication.clipboard().setText(selection)
      cursor.removeSelectedText()
    else:
      cursor.movePosition(QTextCursor.Up)

  def cmcopy(self):
    QApplication.clipboard().setText(self.textCursor().selectedText())

  def cmpaste(self):
    self.parent.printString(QApplication.clipboard().text(), False, False)
