#  PMail - GNOME/GTK/Python email client
#  Copyright (C) 2000 Scott Bender <sbender@harmony-ds.com>

#  This file is part of PMail.

#  PMail is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2, or (at your option)
#  any later version.

#  PMail is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.

#  You should have received a copy of the GNU General Public License
#  along with GNU Emacs; see the file COPYING.  If not, write to
#  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
#  Boston, MA 02111-1307, USA.  

from gtk import *
import GtkExtra
import urllib
import tempfile
import os
import string

import MsgWindow
import Base
import config
import mail

class Window(MsgWindow.Window):
  def __init__(self, mainWindow):
    MsgWindow.Window.__init__(self, mainWindow)
    #self._debug = 1

    self.set_tab_pos(POS_TOP)    

    self._tracking = 0
    self._temp_files = []
    self._displayed_message = None
    self._opener = urllib.URLopener()

    sw = GtkScrolledWindow()
    self._text = GtkText()
    self._text.set_editable(0)
    self._text.set_word_wrap(1)
    sw.add(self._text)
    self._text.show()
    self._part_data = None

    label = GtkLabel('Body')
    self.append_page(sw, label)
    sw.show()

    #self._text.connect("move_cursor", self.move_cursor)
    #self._html.connect("html_event", self.event)


  def get_image_file_name(self, url):
    if url[:4] == 'cid:':
      part = self._displayed_message.get_parts();
      pid = '<%s>' % url[4:]
      part = part.find_part_with_id(pid)
      if part:
        newfile = self._displayed_message.make_temp_file(part)
        return newfile
    elif url[:5] == 'http:':
      h = self._opener.open(url)
      headers = h.info()
      mime = headers.getheader('Content-type')
      filename = tempfile.mktemp()
      self._temp_files.append(filename)
      f = open(filename, "w")      
      f.write(h.read())
      f.close()
      h.close()
      self.debug('saved image to: %s' % filename)
      return filename
      
    return url

  def remove_temp_files(self):
    if self._displayed_message:
      self._displayed_message.clean_up_temp_files()
    for file in self._temp_files:
      os.remove(file)
    self._temp_files = []

  def name(self):
    return 'GtkMessageWindow'

  def link(self, html, info):
    self.debug('link: %s' % info)

  def event(self, html, info):
    self.debug('event: %s' % info)

  def activate_link(self, html, info):
    self.debug('activate_link: %s' % info.href)

  def track_anchor(self, html, info):
    self.debug('track: %s' % info.href)
    if self._tracking:
      self._mainWindow.pop_status(self.name())
    if info.href:
      self._tracking = 1
      self._mainWindow.show_status(self.name(), info.href)
    else:
      self._tracking = 0

  def set_text(self, text):
    self._text.freeze()
    self._text.delete_text(0, -1)

    fname = config.getParam(None, 'Display', 'messageFont')
    if self._font_name != fname:
      self._font_name = fname
      self._font = load_font(fname)

    if self._font:
      self._text.insert(self._font, None, None, text)
    else:
      self._text.insert_defaults(text)
    self._text.thaw()

  def display_message(self, message):
    part = message.get_parts()
    self.remove_temp_files()
    self._temp_files = []

    txt = ''
    if part:
      self._part_data =  part.partsDictionary()
      self._displayed_message = message
      txt, self._attachments = message.get_text(0)
    #self.debug(txt)
    self.set_text(txt)
    self.update_notebook()
    

    
    
