# DDE support for Pythonwin
#
# Seems to work fine (in the context that IE4 seems to have broken
# DDE on _all_ NT4 machines I have tried, but only when a "Command Prompt" window
# is open.  Strange, but true.  If you have problems with this, close all Command Prompts!


import win32ui
import win32api, win32con
from pywin.mfc import object
from dde import *
import sys, traceback

class DDESystemTopic(object.Object):
	def __init__(self, app):
		self.app = app
		object.Object.__init__(self, CreateServerSystemTopic())
	def Exec(self, data):
		try:
#			print "Executing", cmd
			self.app.OnDDECommand(data)
		except:
			t,v,tb = sys.exc_info()
			# The DDE Execution failed.
			print("Error executing DDE command.")
			traceback.print_exception(t,v,tb)
			return 0

class DDEServer(object.Object):
	def __init__(self, app):
		self.app = app
		object.Object.__init__(self, CreateServer())
		self.topic = self.item = None
		
	def CreateSystemTopic(self):
		return DDESystemTopic(self.app)

	def Shutdown(self):
		self._obj_.Shutdown()
		self._obj_.Destroy()
		if self.topic is not None:
			self.topic.Destroy()
			self.topic = None
		if self.item is not None:
			self.item.Destroy()
			self.item = None
		
	def OnCreate(self):
		return 1
		
	def Status(self, msg):
		try:
			win32ui.SetStatusText(msg)
		except win32ui.error:
			pass