odoo/addons/outlook/plugin/openerp-outlook-plugin/dialogs/dialog_map.py

1810 lines
80 KiB
Python

# This module is part of the spambayes project, which is Copyright 2003
# The Python Software Foundation and is covered by the Python Software
# Foundation license.
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from processors import *
from opt_processors import *
import os
import addin
from dialogs import ShowDialog, MakePropertyPage
import win32ui
import webbrowser
import commctrl
import win32con
import win32gui
import win32gui_struct
import xmlrpclib
from manager import ustr
try:
enumerate
except NameError: # enumerate new in 2.3
def enumerate(seq):
return [(i, seq[i]) for i in xrange(len(seq))]
BIF_NEWDIALOGSTYLE = 0x00000040
BIF_NONEWFOLDERBUTTON = 0x0000200
CSIDL_COMMONMYPICTURES = 0x00000036
class _WIN32MASKEDSTRUCT:
def __init__(self, **kw):
full_fmt = ""
for name, fmt, default, mask in self._struct_items_:
self.__dict__[name] = None
if fmt == "z":
full_fmt += "pi"
else:
full_fmt += fmt
for name, val in kw.iteritems():
if name not in self.__dict__:
raise ValueError("LVITEM structures do not have an item '%s'" % (name,))
self.__dict__[name] = val
def __setattr__(self, attr, val):
if not attr.startswith("_") and attr not in self.__dict__:
raise AttributeError(attr)
self.__dict__[attr] = val
def toparam(self):
self._buffs = []
full_fmt = ""
vals = []
mask = 0
# calc the mask
for name, fmt, default, this_mask in self._struct_items_:
if this_mask is not None and self.__dict__.get(name) is not None:
mask |= this_mask
self.mask = mask
for name, fmt, default, this_mask in self._struct_items_:
val = self.__dict__[name]
if fmt == "z":
fmt = "Pi"
if val is None:
vals.append(0)
vals.append(0)
else:
# Note this demo still works with byte strings. An
# alternate strategy would be to use unicode natively
# and use the 'W' version of the messages - eg,
# LVM_SETITEMW etc.
val = val + "\0"
if isinstance(val, unicode):
val = val.encode("mbcs")
str_buf = array.array("b", val)
vals.append(str_buf.buffer_info()[0])
vals.append(len(val))
self._buffs.append(str_buf) # keep alive during the call.
else:
if val is None:
val = default
vals.append(val)
full_fmt += fmt
return struct.pack(*(full_fmt,) + tuple(vals))
# NOTE: See the win32gui_struct module for an alternative way of dealing
# with these structures
class LVITEM(_WIN32MASKEDSTRUCT):
_struct_items_ = [
("mask", "I", 0, None),
("iItem", "i", 0, None),
("iSubItem", "i", 0, None),
("state", "I", 0, commctrl.LVIF_STATE),
("stateMask", "I", 0, None),
("text", "z", None, commctrl.LVIF_TEXT),
("iImage", "i", 0, commctrl.LVIF_IMAGE),
("lParam", "i", 0, commctrl.LVIF_PARAM),
("iIdent", "i", 0, None),
("cchTextMax", "i", 0, 255),
("pszText", "i", 0, None),
("flags", "i", 0, None),
]
class LVCOLUMN(_WIN32MASKEDSTRUCT):
_struct_items_ = [
("mask", "I", 0, None),
("fmt", "i", 0, commctrl.LVCF_FMT),
("cx", "i", 0, commctrl.LVCF_WIDTH),
("text", "z", None, commctrl.LVCF_TEXT),
("iSubItem", "i", 0, commctrl.LVCF_SUBITEM),
("iImage", "i", 0, commctrl.LVCF_IMAGE),
("iOrder", "i", 0, commctrl.LVCF_ORDER),
]
global flag_stop
flag_stop=win32con.MB_ICONSTOP
global flag_error
flag_error=win32con.MB_ICONERROR
global flag_info
flag_info=win32con.MB_ICONINFORMATION
global flag_excl
flag_excl=win32con.MB_ICONEXCLAMATION
#global NewConn
NewConn=addin.GetConn()
## Retrieves current registered XMLRPC connection
def GetConn():
return NewConn
global objects_with_match
objects_with_match=[]
global hwndChk_list
hwndChk_list=[]
global search_text
search_text='search_text'
global partner_ref
partner_ref = ''
global name
name=''
global email
email=''
global country_ref
country_ref = ""
global state_ref
state_ref = ""
global new_con_country
new_con_country= ""
global new_con_state
new_con_state= ""
global search_country
search_country = None
def check():
server = NewConn.getitem('_server')
port = NewConn.getitem('_port')
NewConn.GetDBList()
if str(NewConn.getitem('_running')) == 'False':
win32ui.MessageBox("No server running on host "+ server+" at port "+str(port), "OpenERP Connection", flag_excl)
return False
if str(NewConn.getitem('_login')) == 'False':
win32ui.MessageBox("Please login to the database first", "OpenERP Connection", flag_excl)
return False
return True
def resetConnAttribs(window):
config = window.manager.LoadConfig()
NewConn.setitem('_server', config['server'])
NewConn.setitem('_port', config['port'])
NewConn.setitem('protocol', config['protocol'])
NewConn.setitem('_uri', "http://" + config['server'] + ":" + str(config['port']))
NewConn.setitem('_obj_list', config['objects'])
NewConn.setitem('_dbname', config['database'])
NewConn.setitem('_uname', config['uname'])
NewConn.setitem('_pwd', config['pwd'])
NewConn.setitem('_login', str(config['login']))
NewConn.setitem('_webserver',manager.config['webserver'])
NewConn.setitem('_webport',manager.config['webport'])
NewConn.setitem('_webportocol',manager.config['webportocol'])
return
def setConnAttribs(server, port, manager):
protocol = NewConn.getitem('protocol')
if protocol=='XML-RPCS':
protocol='https://'
else:
protocol='http://'
uri = protocol + server + ":" + str(port)
NewConn.setitem('_server',server)
NewConn.setitem('_port',port)
NewConn.setitem('_uri',uri)
NewConn.GetDBList()
manager.config = manager.LoadConfig()
NewConn.setitem('_dbname',manager.config['database'])
NewConn.setitem('_uname', manager.config['uname'])
NewConn.setitem('_pwd', manager.config['pwd'])
NewConn.setitem('_login', str(manager.config['login']))
NewConn.setitem('_obj_list', manager.config['objects'])
NewConn.setitem('_webserver',manager.config['webserver'])
NewConn.setitem('_webport',manager.config['webport'])
NewConn.setitem('_webprotocol',manager.config['webprotocol'])
return
def getConnAttributes(manager):
manager.config['server'] = NewConn.getitem('_server')
manager.config['port'] = NewConn.getitem('_port')
manager.config['protocol'] = NewConn.getitem('protocol')
manager.config['objects'] = eval(NewConn.getitem('_obj_list'))
manager.config['database'] = NewConn.getitem('_dbname')
manager.config['uname'] = NewConn.getitem('_uname')
manager.config['pwd'] = NewConn.getitem('_pwd')
manager.config['login'] = NewConn.getitem('_login')
manager.config['webserver'] = NewConn.getitem('_webserver')
manager.config['webport'] = NewConn.getitem('_webport')
manager.config['webprotocol'] = NewConn.getitem('_webprotocol')
return
def setWebConnAttribs(server, port, manager):
manager.config = manager.LoadConfig()
NewConn.setitem('_webserver',server)
NewConn.setitem('_webport',port)
return
def getMessage(e):
import pywintypes
print "Exception %s: %s"%(type(e),str(e))
msg = str(e)
if type(e) == pywintypes.com_error:
msg=str(e)
elif type(e) == xmlrpclib.Fault:
msg = str(e.faultCode) or e.faultString or e.message or str(e)
else:
if hasattr(e, 'faultCode') and e.faultCode:
msg = str(e.faultCode)
elif hasattr(e, 'faultString') and e.faultString:
msg = e.faultString
elif hasattr(e, 'message') and e.message:
msg = e.message
return msg
class OKButtonProcessor(ButtonProcessor):
def __init__(self, window, control_ids):
self.mngr = window.manager
ControlProcessor.__init__(self, window, control_ids)
def OnClicked(self, id):
server = win32gui.GetDlgItemText(self.window.hwnd, self.other_ids[0])
protocol = win32gui.GetDlgItemText(self.window.hwnd, self.other_ids[3])
if not protocol:
win32ui.MessageBox("Invalid Protocol !\nPlease select Protocol from Connection Protocol List.", "OpenERP Connection", flag_excl)
return
NewConn.setitem('protocol', protocol)
try:
port = int(win32gui.GetDlgItemText(self.window.hwnd, self.other_ids[1]))
except ValueError, e:
win32ui.MessageBox("Port should be an integer", "OpenERP Connection", flag_excl)
return
except Exception,e:
msg = getMessage(e)
win32ui.MessageBox(msg, "OpenERP Connection", flag_excl)
return
setConnAttribs(server, port, self.mngr)
if str(NewConn.getitem('_running')) == 'False':
msg = "No server running on host '%s' at port '%d'. Press ignore to still continue with this configuration?"%(server,port)
r=win32ui.MessageBox(msg, "OpenERP Connection", win32con.MB_ABORTRETRYIGNORE | win32con.MB_ICONQUESTION)
if r==3:
resetConnAttribs(self.window)
return
elif r==4:
self.OnClicked(id)
elif r==5:
setConnAttribs(server, port, self.mngr)
win32gui.EndDialog(self.window.hwnd, id)
class DoneButtonProcessor(ButtonProcessor):
def OnClicked(self, id):
getConnAttributes(self.window.manager)
self.window.manager.SaveConfig()
win32gui.EndDialog(self.window.hwnd, id)
class WEBOKButtonProcessor(ButtonProcessor):
def __init__(self, window, control_ids):
self.mngr = window.manager
ControlProcessor.__init__(self, window, control_ids)
def OnClicked(self, id):
# global web_server
# global web_server_port
server = win32gui.GetDlgItemText(self.window.hwnd, self.other_ids[0])
web_protocol = 'http:\\\\'
hwnd = win32gui.GetDlgItem(self.window.hwnd, self.other_ids[2])
chk = win32gui.SendMessage(hwnd, win32con.BM_GETCHECK)
if chk:
web_protocol = 'https:\\\\'
NewConn.setitem('_webprotocol', web_protocol)
try:
port = int(win32gui.GetDlgItemText(self.window.hwnd, self.other_ids[1]))
except ValueError:
win32ui.MessageBox("Port should be an integer", "OpenERP Connection", flag_excl)
return
if server.strip() == "" or server.strip() == "http:\\\\":
win32ui.MessageBox("Invalid web Server address.", "OpenERP Connection", flag_excl)
return
setWebConnAttribs(server, port, self.mngr)
win32gui.EndDialog(self.window.hwnd, id)
class WEBCHKProcessor(ButtonProcessor):
def __init__(self, window, control_ids):
self.mngr = window.manager
ControlProcessor.__init__(self, window, control_ids)
def OnClicked(self, id):
web_protocol = 'http:\\\\'
hwnd = self.GetControl()
chk = win32gui.SendMessage(hwnd, win32con.BM_GETCHECK)
if chk:
web_protocol = 'https:\\\\'
NewConn.setitem('_webprotocol', web_protocol)
class MessageProcessor(ControlProcessor):
def Init(self):
text = " This Outlook Plugin for OpenERP has been developed by OpenERP s.a.\n\n \
For more information, please visit our website \n\n \
http://www.openerp.com \n\n\n \
Copyright @ 2005-Today. All rights reserved.\n\n\
OpenERP is a trademark of OpenERP s.a. The software is released under AGPL."
win32gui.SendMessage(self.GetControl(), win32con.WM_SETTEXT, 0, text)
def GetPopupHelpText(self, cid):
return "Displays details on this plugin"
class TabProcessor(ControlProcessor):
def __init__(self, window, control_ids, page_ids):
ControlProcessor.__init__(self, window, control_ids)
self.page_ids = page_ids.split()
def Init(self):
self.pages = {}
self.currentPage = None
self.currentPageIndex = -1
self.currentPageHwnd = None
for index, page_id in enumerate(self.page_ids):
template = self.window.manager.dialog_parser.dialogs[page_id]
self.addPage(index, page_id, template[0][0])
server = self.window.manager.config['server']
port = self.window.manager.config['port']
setConnAttribs(server, port, self.window.manager)
self.switchToPage(0)
def Done(self):
if self.currentPageHwnd is not None:
if not self.currentPage.SaveAllControls():
win32gui.SendMessage(self.GetControl(), commctrl.TCM_SETCURSEL, self.currentPageIndex,0)
return False
return True
def OnNotify(self, nmhdr, wparam, lparam):
selChangedCode = 5177342
code = nmhdr[2]
if code==selChangedCode:
index = win32gui.SendMessage(self.GetControl(), commctrl.TCM_GETCURSEL, 0,0)
if index!=self.currentPageIndex:
self.switchToPage(index)
def switchToPage(self, index):
if self.currentPageHwnd is not None:
if not self.currentPage.SaveAllControls():
win32gui.SendMessage(self.GetControl(), commctrl.TCM_SETCURSEL, self.currentPageIndex,0)
return 1
win32gui.DestroyWindow(self.currentPageHwnd)
self.currentPage = MakePropertyPage(self.GetControl(), self.window.manager, self.window.config, self.pages[index])
self.currentPageHwnd = self.currentPage.CreateWindow()
self.currentPageIndex = index
return 0
#
def addPage(self, item, idName, label):
format = "iiiiiii"
lbuf = win32gui.PyMakeBuffer(len(label)+1)
address,l = win32gui.PyGetBufferAddressAndLen(lbuf)
win32gui.PySetString(address, label)
buf = struct.pack(format,
commctrl.TCIF_TEXT, # mask
0, # state
0, # state mask
address,
0, #unused
0, #image
item
)
item = win32gui.SendMessage(self.GetControl(),
commctrl.TCM_INSERTITEM,
item,
buf)
self.pages[item] = idName
class DialogCommand(ButtonProcessor):
def __init__(self, window, control_ids, idd, func=None, args=()):
self.idd = idd
self.func = func
self.args = args
ButtonProcessor.__init__(self, window, control_ids)
def OnClicked(self, id):
self.id = id
if self.func:
args = (self, ) + self.args
self.func(*args)
parent = self.window.hwnd
self.window.SaveAllControls()
ShowDialog(parent, self.window.manager, self.window.config, self.idd)
self.window.LoadAllControls()
def GetPopupHelpText(self, id):
dd = self.window.manager.dialog_parser.dialogs[self.idd]
return "Displays the %s dialog" % dd.caption
def TestConnection(btnProcessor,*args):
dbname = None
server = NewConn.getitem('_server')
port = NewConn.getitem('_port')
NewConn.GetDBList()
if str(NewConn.getitem('_running')) == 'False':
btnProcessor.window.LoadAllControls()
win32ui.MessageBox("No server running on host "+ server+" at port "+str(port), "OpenERP Connection", flag_excl)
return
dbname = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
if not dbname:
try:
dbname = win32gui.GetDlgItemText(btnProcessor.window.hwnd, 7000)
if not dbname:
win32ui.MessageBox("Authentication Error !\nBad Database Name !", "OpenERP Connection", flag_excl)
return
except Exception,e:
pass
if not dbname:
win32ui.MessageBox("No database found on host "+ server+" at port "+str(port), "OpenERP Connection", flag_excl)
return
uname = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[1])
pwd = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[2])
if not uname:
win32ui.MessageBox("Authentication Error !\nBad User Name !", "OpenERP Connection", flag_excl)
return
if not pwd:
win32ui.MessageBox("Authentication Error !\nBad Password !", "OpenERP Connection", flag_excl)
return
#Establish Connection
try:
uid = NewConn.login(dbname, uname, pwd)
if uid:
msg = "Connection Successful"
NewConn.setitem('_login', 'True')
NewConn.setitem('_uname', uname)
NewConn.setitem('_pwd', pwd)
NewConn.setitem('_uid', uid)
flag = flag_info
if not NewConn.IsCRMInstalled():
msg+= '\n\n'+" 'CRM' module is not installed. So CRM cases cannot be created."
NewConn.setitem('_iscrm', False)
else:
NewConn.setitem('_iscrm', True)
else:
msg = "Authentication Error !\nBad UserName or Password"
flag = flag_stop
NewConn.setitem('_login', 'False')
except Exception,e:
msg = "Authentication Error !\n Invalid Configuration Please check server parameters and database name."
flag = flag_error
win32ui.MessageBox(msg, "OpenERP Connection", flag)
return
def BrowseCallbackProc(hwnd, msg, lp, data):
from win32com.shell import shell, shellcon
if msg== shellcon.BFFM_INITIALIZED:
win32gui.SendMessage(hwnd, shellcon.BFFM_SETSELECTION, 1, data)
win32gui.SendMessage(hwnd, shellcon.BFFM_ENABLEOK, 0, 0)
elif msg == shellcon.BFFM_SELCHANGED:
# Set the status text of the
# For this message, 'lp' is the address of the PIDL.
pidl = shell.AddressAsPIDL(lp)
try:
path = shell.SHGetPathFromIDList(pidl)
if os.path.isdir(path):
win32gui.SendMessage(hwnd, shellcon.BFFM_ENABLEOK, 0, 0)
else:
ext = path.split('.')[-1]
if ext not in ['gif', 'bmp', 'jpg', 'tif', 'ico', 'png']:
win32gui.SendMessage(hwnd, shellcon.BFFM_ENABLEOK, 0, 0)
else:
win32gui.SendMessage(hwnd, shellcon.BFFM_ENABLEOK, 0, 1)
except shell.error:
# No path for this PIDL
pass
def GetImagePath(btnProcessor,*args):
from win32com.shell import shell, shellcon
ulFlags = shellcon.BIF_BROWSEINCLUDEFILES | BIF_NEWDIALOGSTYLE | BIF_NONEWFOLDERBUTTON
pidl, display_name, image_list=shell.SHBrowseForFolder(btnProcessor.window.hwnd, # parent HWND
None, # root PIDL.
"Get the image path", # title
ulFlags, # flags
BrowseCallbackProc, # callback function
os.getcwd() # 'data' param for the callback
)
if (pidl, display_name, image_list) == (None, None, None):
return
else:
path = shell.SHGetPathFromIDList (pidl)
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0], path)
def AddNewObject(btnProcessor,*args):
#Check if server running or user logged in
b = check()
if not b:
return
#Check if title or object not specified
obj_title = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
obj_name = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[1])
if not obj_title:
win32ui.MessageBox("No Title specified", "Documents Setting", flag_excl)
return
if not obj_name:
win32ui.MessageBox("No Document specified", "Documents Setting", flag_excl)
return
#Check if object does not exist in the database or it already exist in the list
try:
all_obj_list = NewConn.GetAllObjects()
curr_obj_list = [obj[1] for obj in NewConn.GetObjList()]
curr_title_list = [obj[0] for obj in NewConn.GetObjList()]
if obj_name not in all_obj_list:
win32ui.MessageBox("No such Document exists", "Documents Setting", flag_excl)
return
elif obj_name in curr_obj_list:
win32ui.MessageBox("Document already in the list", "Documents Setting", flag_info)
return
elif obj_title in curr_title_list:
win32ui.MessageBox("Title already in the list. Please give different title", "Documents Setting", flag_excl)
return
#extract image path and load the image
image_path=''
image_path = os.path.join(btnProcessor.window.manager.application_directory, "dialogs\\resources\\openerp_logo1.bmp")
path=win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[2])
if path:
image_path = path
load_bmp_flags=win32con.LR_LOADFROMFILE | win32con.LR_LOADTRANSPARENT
try:
hicon = win32gui.LoadImage(0, image_path,win32con.IMAGE_BITMAP, 40, 40, load_bmp_flags)
except Exception,e:
msg=getMessage(e)
hicon=None
win32ui.MessageBox(msg, "Load Image", flag_error)
#Add the object in the list
win32gui.ImageList_Add(il,hicon,0)
cnt = win32gui.ImageList_GetImageCount(il)
hwndList = win32gui.GetDlgItem(btnProcessor.window.hwnd, btnProcessor.other_ids[3])
num_items = win32gui.SendMessage(hwndList, commctrl.LVM_GETITEMCOUNT)
item = LVITEM(text=obj_title, iImage=cnt-2, iItem = num_items)
new_index = win32gui.SendMessage(hwndList, commctrl.LVM_INSERTITEM, 0, item.toparam())
win32gui.SendMessage(hwndList, commctrl.LVM_SETIMAGELIST, commctrl.LVSIL_SMALL, il)
item = LVITEM(text=obj_name, iItem = new_index, iSubItem = 1)
win32gui.SendMessage(hwndList, commctrl.LVM_SETITEM, 0, item.toparam())
NewConn.InsertObj(obj_title,obj_name,image_path)
except Exception, e:
msg = "Object not added\n\n" + getMessage(e)
win32ui.MessageBox(msg,"",flag_excl)
return
#Empty all the text controls
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0], '')
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[1], '')
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[2], '')
def DeleteSelectedObjects(btnProcessor,*args):
#Check if server running or user logged in
b = check()
if not b:
return
#Delete selected items
hwndList = win32gui.GetDlgItem(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
sel_count = win32gui.SendMessage(hwndList, commctrl.LVM_GETSELECTEDCOUNT)
for i in range(0,sel_count):
sel = win32gui.SendMessage(hwndList, commctrl.LVM_GETNEXTITEM, -1, commctrl.LVNI_SELECTED)
buf,extra = win32gui_struct.EmptyLVITEM(1, 0)
r = win32gui.SendMessage(hwndList, commctrl.LVM_GETITEMTEXT, sel, buf)
sel_text = ''
for n in extra:
nombre = n.tostring()
sel_text = nombre[0:r]
try:
NewConn.DeleteObject(sel_text)
except Exception,e:
msg = "Documents '%s' not deleted\n\n"%sel_text + getMessage(e)
win32ui.MessageBox(msg,"Documents Setting",flag_excl)
def GetMail(processor):
ex = processor.window.manager.outlook.ActiveExplorer()
assert ex.Selection.Count == 1
mail = ex.Selection.Item(1)
return mail
#get selected records from list
def GetSelectedItems(hwndList):
r=[]
sel_count = win32gui.SendMessage(hwndList, commctrl.LVM_GETSELECTEDCOUNT)
sel=-1
for i in range(0,sel_count):
sel = win32gui.SendMessage(hwndList, commctrl.LVM_GETNEXTITEM, sel, commctrl.LVNI_SELECTED)
buf,extra = win32gui_struct.EmptyLVITEM(1, 0)
size = win32gui.SendMessage(hwndList, commctrl.LVM_GETITEMTEXT, sel, buf)
sel_text = ''
for n in extra:
nombre = n.tostring()
sel_text = nombre[0:size]
for item in objects_with_match:
if item[2] == sel_text:
r.append(item)
return r
def MakeAttachment(btnProcessor,*args):
#Check if server running or user logged in
b = check()
if not b:
return
ex = btnProcessor.window.manager.outlook.ActiveExplorer()
assert ex.Selection.Count == 1
mail = ex.Selection.Item(1)
mail = GetMail(btnProcessor)
#get selected records
hwndList = win32gui.GetDlgItem(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
r = GetSelectedItems(hwndList)
if not r:
win32ui.MessageBox("No records selected", "Push to OpenERP", flag_info)
return
try:
flg = NewConn.ArchiveToOpenERP(r,mail)
if flg:
win32gui.EndDialog(btnProcessor.window.hwnd, btnProcessor.other_ids[1])
return
except Exception,e:
msg = "Attachment not created \n\n" + getMessage(e)
flag = flag_error
win32ui.MessageBox(msg, "Push to OpenERP", flag)
return
def CreateCase(btnProcessor,*args):
try:
#Check if server running or user logged in
b = check()
if not b:
return
if str(NewConn.getitem('_iscrm')) == 'True':
# Get the selected mail
ex = btnProcessor.window.manager.outlook.ActiveExplorer()
assert ex.Selection.Count == 1
mail = ex.Selection.Item(1)
section = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
section = str(section)
section=section.lower().replace(' ','.')
if not section:
win32ui.MessageBox("Documents can not be created.", "Documents Setting", flag_excl)
return
hwndList = win32gui.GetDlgItem(btnProcessor.window.hwnd, btnProcessor.other_ids[1])
partner_ids=[]
r = GetSelectedItems(hwndList)
for rec in r:
if rec[0] == 'res.partner':
partner_ids.append(rec[1])
f = False
#Create new case
try:
f = NewConn.CreateCase(str(section), mail, partner_ids)
msg="New Document created."
flag=flag_info
except Exception,e:
msg="New Document not created \n\n"+str(e)
flag=flag_error
if f:
win32ui.MessageBox(msg, "Create Document", flag)
win32gui.EndDialog(btnProcessor.window.hwnd, btnProcessor.other_ids[2])
return
else:
win32ui.MessageBox("Error While creating document.\n Document can not be created.", "Create Document", flag_error)
return
else:
win32ui.MessageBox("Document can not be created. CRM not installed", "Create Object", flag_info)
except Exception, e:
win32ui.MessageBox(str(e), 'New Document')
def GetSearchText(txtProcessor,*args):
#Check if server running or user logged in
b = check()
if not b:
return
try:
global objects_with_match
list_hwnd = win32gui.GetDlgItem(txtProcessor.window.hwnd, txtProcessor.other_ids[1])
objects_with_match = NewConn.SearchPartners()
setList(list_hwnd)
except Exception,e:
win32ui.MessageBox('Document can not be loaded.\n'+str(e), "Push", flag_error)
txtProcessor.init_done=True
def SetNameColumn(listProcessor,*args):
hwndList = listProcessor.GetControl()
child_ex_style = win32gui.SendMessage(hwndList, commctrl.LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0)
child_ex_style |= commctrl.LVS_EX_FULLROWSELECT
win32gui.SendMessage(hwndList, commctrl.LVM_SETEXTENDEDLISTVIEWSTYLE, 0, child_ex_style)
# set header row
lvc = LVCOLUMN(
mask = commctrl.LVCF_FMT | commctrl.LVCF_WIDTH | \
commctrl.LVCF_TEXT | commctrl.LVCF_SUBITEM
)
lvc.fmt = commctrl.LVCFMT_LEFT
lvc.iSubItem = 1
lvc.text = "Document Type"
lvc.cx = 100
win32gui.SendMessage(hwndList, commctrl.LVM_INSERTCOLUMN, 0, lvc.toparam())
lvc.iSubItem = 0
lvc.text = "Name"
lvc.cx = 240
win32gui.SendMessage(hwndList, commctrl.LVM_INSERTCOLUMN, 0, lvc.toparam())
listProcessor.init_done = True
def setList(list_hwnd):
# Set default list of objects
win32gui.SendMessage(list_hwnd, commctrl.LVM_DELETEALLITEMS)
for obj in objects_with_match:
num_items = win32gui.SendMessage(list_hwnd, commctrl.LVM_GETITEMCOUNT)
item = LVITEM(text=obj[2],iItem = num_items)
new = win32gui.SendMessage(list_hwnd, commctrl.LVM_INSERTITEM, 0, item.toparam())
item = LVITEM(text=obj[3],iItem = new, iSubItem = 1)
win32gui.SendMessage(list_hwnd, commctrl.LVM_SETITEM, 0, item.toparam())
def SearchObjectsForText(btnProcessor,*args):
#Check if server running or user logged in
b = check()
if not b:
return
search_txt = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
# Get titles from list
obj_titles=[]
for ch in hwndChk_list:
id = ch[0]
hwnd = ch[1]
chk = win32gui.SendMessage(hwnd, win32con.BM_GETCHECK)
if chk:
txt = win32gui.GetDlgItemText(btnProcessor.window.hwnd,id)
obj_titles.append(txt)
# Prepare list of objects to search for the seach_keyword
obj_list = btnProcessor.window.manager.config['objects']
search_list = []
try:
all_obj_list = NewConn.GetAllObjects()
for title in obj_titles:
objname = [obj[1] for obj in obj_list if obj[0] == title]
if objname:
assert len(objname) == 1
if objname[0] in all_obj_list:
search_list.append(objname[0])
else:
win32ui.MessageBox("Module %s (%s) not installed. Please install it." \
%(title,objname[0]), "Push to OpenERP", flag_excl)
return
# Get the records by searching the objects in search_list for the search_keyword as objects_with_match
global objects_with_match
list_hwnd = win32gui.GetDlgItem(btnProcessor.window.hwnd, btnProcessor.other_ids[1])
if search_list:
objects_with_match = NewConn.GetObjectItems(search_list, search_txt)
if not objects_with_match:
win32ui.MessageBox("No matching records found in checked objects", "Push to OpenERP", flag_info)
else:
win32ui.MessageBox("No object selected", "Push to OpenERP", flag_info)
objects_with_match=[]
# Display the objects_with_match records in list
setList(list_hwnd)
except Exception,e:
msg=getMessage(e)
win32ui.MessageBox(msg, "Search Text", flag_error)
def CreateContact(btnProcessor,*args):
b = check()
if not b:
return
partner = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[9])
name = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
email = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[1])
office_no = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[2])
mobile_no = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[3])
fax = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[4])
street = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[5])
street2 = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[6])
city = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[7])
zip = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[8])
state = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[10])
country = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[11])
if not name:
win32ui.MessageBox("Please enter name.", "Create Contact", flag_stop)
return
res = {
'partner_id':ustr(partner),
'name':ustr(name),
'email':ustr(email),
'phone':ustr(office_no),
'mobile':ustr(mobile_no),
'fax':ustr(fax),
'street':ustr(street),
'street2':ustr(street2),
'city':ustr(city),
'zip':ustr(zip),
'state_id':ustr(state),
'country_id':ustr(country)
}
if res.get('name').strip == '' or res.get('email').strip == '':
win32ui.MessageBox("Contact name or Email id is Missing\nPlease fill those information", "Create Contact", flag_error)
return
try:
NewConn.CreateContact(str(res))
if not partner:
msg="New contact created."
else:
msg="New contact created for partner '%s'."%partner
except Exception,e:
msg="Contact not created \n\n" + getMessage(e)
win32ui.MessageBox(msg, "Create Contact", flag_error)
return
win32ui.MessageBox(msg, "Create Contact", flag_info)
for i in range(0,9):
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[i], '')
win32gui.EndDialog(btnProcessor.window.hwnd, btnProcessor.id)
def SetAllText(txtProcessor,*args):
url = NewConn.getitem('_uri')
tbox = txtProcessor.GetControl()
win32gui.SendMessage(tbox, win32con.WM_SETTEXT, 0, str(url))
uname = NewConn.getitem('_uname')
tbox = txtProcessor.GetControl(txtProcessor.other_ids[0])
win32gui.SendMessage(tbox, win32con.WM_SETTEXT, 0, str(uname))
passbox = txtProcessor.GetControl(txtProcessor.other_ids[1])
pwd = NewConn.getitem('_pwd')
win32gui.SendMessage(passbox, win32con.WM_SETTEXT, 0, str(pwd))
serverBox = txtProcessor.GetControl(txtProcessor.other_ids[2])
webstr = NewConn.getitem('_webprotocol')+NewConn.getitem('_webserver')+":"+str(NewConn.getitem('_webport'))
win32gui.SendMessage(serverBox, win32con.WM_SETTEXT, 0, str(webstr))
def SetDefaultList(listProcessor,*args):
import win32api
hwndList = listProcessor.GetControl()
# set full row select style
child_ex_style = win32gui.SendMessage(hwndList, commctrl.LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0)
child_ex_style |= commctrl.LVS_EX_FULLROWSELECT
win32gui.SendMessage(hwndList, commctrl.LVM_SETEXTENDEDLISTVIEWSTYLE, 0, child_ex_style)
# set header row
lvc = LVCOLUMN(
mask = commctrl.LVCF_FMT | commctrl.LVCF_WIDTH | \
commctrl.LVCF_TEXT | commctrl.LVCF_SUBITEM
)
lvc.fmt = commctrl.LVCFMT_LEFT
lvc.iSubItem = 1
lvc.text = "Object Name"
lvc.cx = 315
win32gui.SendMessage(hwndList, commctrl.LVM_INSERTCOLUMN, 0, lvc.toparam())
lvc.iSubItem = 0
lvc.text = "Document Title"
lvc.cx = 315
win32gui.SendMessage(hwndList, commctrl.LVM_INSERTCOLUMN, 0, lvc.toparam())
#create imagelist
global il
il = win32gui.ImageList_Create(
win32api.GetSystemMetrics(win32con.SM_CXSMICON),
win32api.GetSystemMetrics(win32con.SM_CYSMICON),
commctrl.ILC_COLOR32 | commctrl.ILC_MASK,
1, # initial size
0) # cGrow
win32gui.SendMessage(hwndList, commctrl.LVM_SETIMAGELIST,\
commctrl.LVSIL_SMALL, il)
# Set objects from config
objs = eval(NewConn.getitem('_obj_list'))
load_bmp_flags=win32con.LR_LOADFROMFILE | win32con.LR_LOADTRANSPARENT
for obj in objs:
image_path = os.path.join(listProcessor.window.manager.application_directory, "dialogs\\resources\\openerp_logo1.bmp")
path=obj[2]
if path:
image_path = path
try:
hicon = win32gui.LoadImage(0, image_path,win32con.IMAGE_BITMAP, 40, 40, load_bmp_flags)
except Exception, e:
msg = "Problem loading the image \n\n" + getMessage(e)
hicon = None
win32ui.MessageBox(msg, "Load Image", flag_error)
#Add the object in the list
win32gui.ImageList_Add(il,hicon,0)
cnt = win32gui.ImageList_GetImageCount(il)
num_items = win32gui.SendMessage(hwndList, commctrl.LVM_GETITEMCOUNT)
item = LVITEM(text=obj[0],iImage=cnt-2, iItem = num_items)
new_index = win32gui.SendMessage(hwndList, commctrl.LVM_INSERTITEM, 0, item.toparam())
item = LVITEM(text=obj[1], iItem = new_index, iSubItem = 1)
win32gui.SendMessage(hwndList, commctrl.LVM_SETITEM, 0, item.toparam())
def SetDefaultContact(txtProcessor,*args):
# Acquiring the control of the text box
global name
global email
global partner_ref
global new_con_country
global new_con_state
global state_ref
global country_ref
state = win32gui.GetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[2])
country = win32gui.GetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[3])
if txtProcessor.init_done:
if new_con_country == "":
new_con_country = country
if new_con_state == "":
new_con_state = state
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[1],partner_ref)
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.control_id,name)
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[0],email)
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[2],new_con_state)
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[3],new_con_country)
new_con_country = ""
new_con_state = ""
state_ref = ""
country_ref =""
return
#
try:
mail = GetMail(txtProcessor)
name = ustr(mail.SenderName).encode('iso-8859-1')
email = ustr(mail.SenderEmailAddress).encode('iso-8859-1')
except Exception:
pass
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.control_id,name)
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[0],email)
txtProcessor.init_done = True
def setCheckList(groupProcessor,*args):
b = check()
if not b:
return
try:
hinst = win32gui.dllhandle
objs = groupProcessor.window.manager.config['objects']
ins_objs = NewConn.GetAllObjects()
left = 20
top = 60
cnt=0
id=4001
id1=6001
if groupProcessor.init_done:
return
else:
for obj in objs:
if obj[1] in ins_objs:
groupProcessor.init_done = True
#Add Checkbox
left+= 17
hwndChk = win32gui.CreateWindowEx(
0,"BUTTON",obj[0],win32con.WS_VISIBLE | win32con.WS_CHILD | \
win32con.BS_AUTOCHECKBOX | win32con.WS_TABSTOP | win32con.BST_CHECKED, \
left, top, 130,20,groupProcessor.window.hwnd,id1,hinst,None
)
if obj[1] in ['res.partner','res.partner.address']:
win32gui.SendMessage(hwndChk , win32con.BM_SETCHECK, 1, 0);
hwndChk_list.append((id1,hwndChk))
cnt=cnt+1
id+=1
id1+=1
left+=17
left+=140
if cnt > 1:
left = 20
top+=18
cnt=0
except Exception, e:
win32ui.MessageBox(str(e), 'Push to OpenERP')
def CreatePartner(btnProcessor,*args):
#Check if server running or user logged in
b = check()
if not b:
return
global partner_ref
partner_name = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
if not partner_name:
win32ui.MessageBox("Please enter Partner name.", "Create Partner", flag_excl)
return
res = {'name':ustr(partner_name)}
try:
id = NewConn.CreatePartner(str(res))
except Exception,e:
msg="Partner not created \n\n" + getMessage(e)
win32ui.MessageBox(msg, "Create Partner", flag_error)
return
if id:
win32ui.MessageBox("New Partner '%s' created."%partner_name, "Create Partner", flag_info)
partner_ref = str(partner_name)
win32gui.EndDialog(btnProcessor.window.hwnd, btnProcessor.id)
else:
win32ui.MessageBox("Partner '%s' already Exists."%partner_name, "Create Partner", flag_info)
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0],'')
def set_search_text(dialogProcessor,*args):
global search_text
search_text = win32gui.GetDlgItemText(dialogProcessor.window.hwnd, dialogProcessor.other_ids[0])
return
def set_name_email(dialogProcessor,*args):
global name
global email
global partner_ref
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[2], ustr(partner_ref))
name = win32gui.GetDlgItemText(dialogProcessor.window.hwnd, dialogProcessor.other_ids[0])
email = win32gui.GetDlgItemText(dialogProcessor.window.hwnd, dialogProcessor.other_ids[1])
#Function for Getting default mail when dialog is loaded and finding contact related to this
#setting values to the appropriate text areas
def GetDefaultEmail(txtProcessor,*args):
import win32con
b = check()
global partner_ref
global country_ref
global state_ref
global new_con_country
global new_con_state
partner_n = win32gui.GetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[0])
state_n = win32gui.GetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[10])
country_n = win32gui.GetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[11])
if partner_ref == "":
partner_ref = partner_n
if country_ref == "":
country_ref = country_n
if state_ref == "":
state_ref = state_n
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[0], ustr(partner_ref))
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[10], ustr(state_ref))
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[11], ustr(country_ref))
partner_ref = ""
country_ref = ""
state_ref = ""
new_con_country = ""
new_con_state = ""
if country_ref == None:
country_ref = ""
if not b:
return
#Acquiring control of the text box
search_partner_box = txtProcessor.GetControl()
global search_partner_text
if txtProcessor.init_done:
win32gui.SendMessage(search_partner_box, win32con.WM_SETTEXT, 0,search_partner_text)
return
#Reading Current Selected Email.
ex = txtProcessor.window.manager.outlook.ActiveExplorer()
assert ex.Selection.Count == 1
mail = ex.Selection.Item(1)
#Fetching Sender MailID from Selected Mail
try:
search_partner_text = ustr(mail.SenderEmailAddress).encode('iso-8859-1')
except Exception:
win32ui.MessageBox("Error In reading email ID from Email ","Open Contact", flag_error)
pass
win32gui.SendMessage(search_partner_box, win32con.WM_SETTEXT, 0, search_partner_text)
if search_partner_text.strip() == "":
search_partner_text = None
return
vals = []
#Searching the res.partner.address for contact based on Sender Mail ID.
vals = NewConn.SearchPartnerDetail(search_partner_text)
#If no user Found.
if vals == None:
for i in range(1,12):
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[i], "")
win32ui.MessageBox("No matching records found for : "+str(search_partner)+".","Open Contact", flag_excl)
return
else:
#If user Found than Setting the Value for the contact in fields.
for i in range(1,12):
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[i], "")
for val in vals:
if val[0] == 'partner_id':
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[0], ustr(val[1][1]))
if val[0] == 'name' and val[1] != False :
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[1], ustr(val[1]))
if val[0] == 'street' and val[1] != False :
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[2], ustr(val[1]))
if val[0] == 'street2' and val[1] != False :
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[3], ustr(val[1]))
if val[0] == 'zip' and val[1] != False :
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[9], ustr(val[1]))
if val[0] == 'city' and val[1] != False :
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[4], ustr(val[1]))
if val[0] == 'state_id' and val[1] != False :
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[10], ustr(val[1][1]))
if val[0] == 'country_id' and val[1] != False :
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[11], ustr(val[1][1]))
global search_country
search_country = ustr(val[1][1])
if val[0] == 'phone' and val[1] != False :
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[5], ustr(val[1]))
if val[0] == 'mobile' and val[1] != False :
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[6], ustr(val[1]))
if val[0] == 'fax' and val[1] != False :
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[7], ustr(val[1]))
if val[0] == 'email' and val[1] != False :
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[8], ustr(val[1]))
txtProcessor.init_done=True
def SearchPartner(btnProcessor,*args):
b = check()
global partner_ref
if not b:
return
try :
search_partner = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
if not search_partner:
win32ui.MessageBox("Please enter email id to search for.", "Open Contact", flag_excl)
return
vals = []
#Searching the contact.
vals = NewConn.SearchPartnerDetail(search_partner)
#if contact not found resetting all field to blank
if vals == None:
for i in range(1,13):
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[i], "")
win32ui.MessageBox("No matching records found for : "+str(search_partner)+".","Open Contact", flag_excl)
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0], "<enter new search>")
return
#if contact found than setting the values for the contact.
else:
for i in range(1,13):
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[i], "")
for val in vals:
if val[0] == 'partner_id':
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[1], ustr(val[1][1]))
if val[0] == 'name' and val[1] != False :
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[2], ustr(val[1]))
if val[0] == 'street' and val[1] != False :
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[3], ustr(val[1]))
if val[0] == 'street2' and val[1] != False :
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[4], ustr(val[1]))
if val[0] == 'zip' and val[1] != False :
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[10], ustr(val[1]))
if val[0] == 'city' and val[1] != False :
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[5], ustr(val[1]))
if val[0] == 'state_id' and val[1] != False :
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[11], ustr(val[1][1]))
if val[0] == 'country_id' and val[1] != False :
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[12], ustr(val[1][1]))
global search_country
search_country = ustr(val[1][1])
if val[0] == 'phone' and val[1] != False :
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[6], ustr(val[1]))
if val[0] == 'mobile' and val[1] != False :
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[7], ustr(val[1]))
if val[0] == 'fax' and val[1] != False :
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[8], ustr(val[1]))
if val[0] == 'email' and val[1] != False :
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[9], ustr(val[1]))
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0], "<Enter new search>")
except Exception,e:
msg = getMessage(e)
win32ui.MessageBox(msg, "Open Contact", flag_error)
pass
def WritePartner(btnProcessor,*args):
new_vals=[]
#Reading new value of the fields.
partner = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
contect_name = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[1])
street = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[2])
street2 = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[3])
city = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[4])
state = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[5])
country = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[6])
phone = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[7])
mobile = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[8])
fax = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[9])
email = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[10])
zip = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[11])
if contect_name.strip() == "":
win32ui.MessageBox("Please enter partner Contact Name name.", "Open Contact", flag_excl)
return
new_vals.append(['partner',partner])
new_vals.append(['name',contect_name])
new_vals.append(['street',street])
new_vals.append(['street2',street2])
new_vals.append(['city',city])
new_vals.append(['phone',phone])
new_vals.append(['mobile',mobile])
new_vals.append(['email',email])
new_vals.append(['fax',fax])
new_vals.append(['zip',zip])
new_vals.append(['state',state])
new_vals.append(['country',country])
new_vals.append(['state',state])
flag = 0
try:
#writing the updated values to the Server.
flag = NewConn.WritePartnerValues(new_vals)
except Exception,e:
msg = getMessage(e)
win32ui.MessageBox(msg, "Open Contact", flag_error)
pass
if flag == 1:
win32ui.MessageBox("Changes have been Updated Successfully.", "Open Contact", flag_info)
elif flag == 0:
win32ui.MessageBox("Error in Updating the Changes.\n Please check the Database Connection.", "Open Contact", flag_error)
elif flag == -1:
win32ui.MessageBox("Contact can not be Save.\nFirst select partner using Search.","Open Contact", flag_info)
def SetPartnerNameColumn(listProcessor,*args):
hwndList = listProcessor.GetControl()
child_ex_style = win32gui.SendMessage(hwndList, commctrl.LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0)
child_ex_style |= commctrl.LVS_EX_FULLROWSELECT
win32gui.SendMessage(hwndList, commctrl.LVM_SETEXTENDEDLISTVIEWSTYLE, 0, child_ex_style)
# set header row
lvc = LVCOLUMN(
mask = commctrl.LVCF_FMT | commctrl.LVCF_WIDTH | \
commctrl.LVCF_TEXT | commctrl.LVCF_SUBITEM
)
lvc.fmt = commctrl.LVCFMT_LEFT
lvc.iSubItem = 1
lvc.text = "Partner Name"
lvc.cx = 275
win32gui.SendMessage(hwndList, commctrl.LVM_INSERTCOLUMN, 0, lvc.toparam())
partners = list(NewConn.GetPartners(''))
win32gui.SendMessage(hwndList, commctrl.LVM_DELETEALLITEMS)
if not partners:
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0],"<enter text to search>")
win32ui.MessageBox("No Partner found with name {0}.".format(search_partner),"Search Partner",flag_error)
for partner in partners[::-1]:
num_items = win32gui.SendMessage(hwndList, commctrl.LVM_GETITEMCOUNT)
item = LVITEM(text=partner[1],iItem = num_items)
win32gui.SendMessage(hwndList, commctrl.LVM_INSERTITEM, 0, item.toparam())
listProcessor.init_done = True
def SelectPartnerFromList(btnProcessor,*args):
hwndList = win32gui.GetDlgItem(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
sel_count = win32gui.SendMessage(hwndList, commctrl.LVM_GETSELECTEDCOUNT)
sel_text = ''
if sel_count == 1:
sel=-1
for i in range(0,sel_count):
sel = win32gui.SendMessage(hwndList, commctrl.LVM_GETNEXTITEM, sel, commctrl.LVNI_SELECTED)
buf,extra = win32gui_struct.EmptyLVITEM(1, 0)
size = win32gui.SendMessage(hwndList, commctrl.LVM_GETITEMTEXT, sel, buf)
sel_text = ''
for n in extra:
nombre = n.tostring()
sel_text = nombre[0:size]
global partner_ref
if str(sel_text).strip() == "":
win32ui.MessageBox("Invalid partner selected.","Search Partner")
return
try:
partner_ref = str(sel_text)
except Exception:
pass
win32gui.EndDialog(btnProcessor.window.hwnd, btnProcessor.other_ids[1])
return
elif sel_count < 1:
win32ui.MessageBox("You should select one partner.","Search Partner")
return
else:
win32ui.MessageBox("Multiple Selection is not allowed.","Search Partner")
return
def SearchPartnerList(btnProcessor,*args):
b = check()
if not b:
return
try :
search_partner = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
#Searching the contact.
hwndList = win32gui.GetDlgItem(btnProcessor.window.hwnd, btnProcessor.other_ids[1])
partners = list(NewConn.GetPartners(search_partner))
win32gui.SendMessage(hwndList, commctrl.LVM_DELETEALLITEMS)
if not partners:
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0],"<enter text to search>")
win32ui.MessageBox("No Partner found with name {0}.".format(search_partner),"Search Partner",flag_error)
for partner in partners[::-1]:
num_items = win32gui.SendMessage(hwndList, commctrl.LVM_GETITEMCOUNT)
item = LVITEM(text=partner[1],iItem = num_items)
win32gui.SendMessage(hwndList, commctrl.LVM_INSERTITEM, 0, item.toparam())
except Exception,e:
msg = getMessage(e)
win32ui.MessageBox(msg, "Search Partner", flag_error)
pass
def ConnectWebServer(btnProcessor, *args):
b = check()
if not b:
return
server = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
webbrowser.open_new(str(server)+"\\openerp\\")
def OpenPartnerForm(txtProcessor,*args):
import win32con
b = check()
if not b:
return
#Acquiring control of the text box
partner_link = txtProcessor.GetControl()
#Reading Current Selected Email.
ex = txtProcessor.window.manager.outlook.ActiveExplorer()
assert ex.Selection.Count == 1
mail = ex.Selection.Item(1)
partner_text = ""
try:
partner_text = ustr(mail.SenderName).encode('iso-8859-1')
sender_mail = ustr(mail.SenderEmailAddress).strip()
except Exception:
win32gui.SendMessage(partner_link, win32con.WM_SETTEXT, 0, "< Error in reading email.>")
pass
vals = NewConn.SearchPartner(sender_mail)
if not vals:
win32gui.SendMessage(partner_link, win32con.WM_SETTEXT, 0, "< Their is contact related to "+str(partner_text)+" email address, but no partner is linked to contact>")
txtProcessor.init_done=True
return
if NewConn.getitem('_webserver') == "" or NewConn.getitem('_webserver') in ["http:\\\\","https:\\\\"]:
win32gui.SendMessage(partner_link, win32con.WM_SETTEXT, 0, " <Invalid Server Address>")
txtProcessor.init_done=True
return
try:
import urllib
next = urllib.urlencode({'next' : '/openerp/form/view?model=res.partner&id=' +str(vals) })
weburl = NewConn.getitem('_webprotocol')+NewConn.getitem('_webserver')+":"+str(NewConn.getitem('_webport'))
linktopartner = weburl + '?' + next
win32gui.SendMessage(partner_link, win32con.WM_SETTEXT, 0, str(linktopartner))
except Exception,e:
win32ui.MessageBox("Error While Opening Partner.\n"+str(e),"Open Partner", flag_error)
webbrowser.open_new(linktopartner)
txtProcessor.init_done=True
def SerachOpenDocuemnt(txtProcessor,*args):
import win32con
import win32ui
import win32com
from win32com.mapi import mapitags
b = check()
if not b:
return
# global web_server
# global web_server_port
#Reading Current Selected Email.
ex = txtProcessor.window.manager.outlook.ActiveExplorer()
assert ex.Selection.Count == 1
mail = ex.Selection.Item(1)
#Acquiring control of the text box
link_box = txtProcessor.GetControl()
#Checking for the web server Parameters
if NewConn.getitem('_webserver') == "" or NewConn.getitem('_webserver') in ["http:\\\\","https:\\\\"]:
win32gui.SendMessage(partner_link, win32con.WM_SETTEXT, 0, " <Invalid Server Address>")
txtProcessor.init_done=True
return
linktodoc = ""
message_id = None
try:
session = win32com.client.Dispatch("MAPI.session")
session.Logon('Outlook')
objMessage = session.GetMessage(mail.EntryID, mail.Parent.StoreID)
objFields = objMessage.Fields
strheader = objFields.Item(mapitags.PR_TRANSPORT_MESSAGE_HEADERS)
strheader = ustr(strheader).encode('iso-8859-1')
headers = {}
strheader = strheader.replace("\n ", " ").splitlines()
for line in strheader:
split_here = line.find(":")
headers[line[:split_here]] = line[split_here:]
temp1 = headers.get('Message-ID')
temp2 = headers.get('Message-Id')
if temp1 == None: message_id = temp2
if temp2 == None: message_id = temp1
startCut = message_id.find("<")
endCut = message_id.find(">")
message_id = message_id[startCut:endCut+1]
except Exception,e:
win32ui.MessageBox(str(e),"Open Document")
vals = NewConn.SearchEmailResources(message_id)
if vals == None:
win32gui.SendMessage(link_box, win32con.WM_SETTEXT, 0, "< Mail is still not archived.>")
txtProcessor.init_done=True
return
try:
import urllib
next = urllib.urlencode({'next' : '/openerp/form/view?model='+vals[0][1]+'&id='+str(vals[1][1])})
weburl = NewConn.getitem('_webprotocol')+NewConn.getitem('_webserver')+":"+str(NewConn.getitem('_webport'))
linktodoc = weburl + '?' + next
win32gui.SendMessage(link_box, win32con.WM_SETTEXT, 0, str(linktodoc))
except Exception,e:
win32ui.MessageBox("Error While Opening Document.\n"+str(e),"Open Document", flag_error)
webbrowser.open_new(linktodoc)
txtProcessor.init_done=True
def SearchCountry(btnProcessor, *args):
b = check()
if not b:
return
try :
search_country = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
#Searching the contact.
hwndList = win32gui.GetDlgItem(btnProcessor.window.hwnd, btnProcessor.other_ids[1])
countries = list(NewConn.GetCountry(search_country))
win32gui.SendMessage(hwndList, commctrl.LVM_DELETEALLITEMS)
if not countries:
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0],"<enter text to search>")
win32ui.MessageBox("No country found with name {0}.".format(search_country),"Search Country",flag_error)
for country in countries:
num_items = win32gui.SendMessage(hwndList, commctrl.LVM_GETITEMCOUNT)
item = LVITEM(text=country[1],iItem = num_items)
win32gui.SendMessage(hwndList, commctrl.LVM_INSERTITEM, 0, item.toparam())
except Exception,e:
msg = getMessage(e)
win32ui.MessageBox(msg, "Search Country", flag_error)
pass
def SetCountryList(listProcessor,*args):
hwndList = listProcessor.GetControl()
child_ex_style = win32gui.SendMessage(hwndList, commctrl.LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0)
child_ex_style |= commctrl.LVS_EX_FULLROWSELECT
win32gui.SendMessage(hwndList, commctrl.LVM_SETEXTENDEDLISTVIEWSTYLE, 0, child_ex_style)
# set header row
lvc = LVCOLUMN(
mask = commctrl.LVCF_FMT | commctrl.LVCF_WIDTH | \
commctrl.LVCF_TEXT | commctrl.LVCF_SUBITEM
)
lvc.fmt = commctrl.LVCFMT_LEFT
lvc.iSubItem = 1
lvc.text = "Country Name"
lvc.cx = 275
win32gui.SendMessage(hwndList, commctrl.LVM_INSERTCOLUMN, 0, lvc.toparam())
countries = list(NewConn.GetCountry(''))
win32gui.SendMessage(hwndList, commctrl.LVM_DELETEALLITEMS)
if not countries:
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0],"<enter text to search>")
win32ui.MessageBox("No country found with name {0}.".format(search_country),"Search Country",flag_error)
for country in countries:
num_items = win32gui.SendMessage(hwndList, commctrl.LVM_GETITEMCOUNT)
item = LVITEM(text=country[1],iItem = num_items)
win32gui.SendMessage(hwndList, commctrl.LVM_INSERTITEM, 0, item.toparam())
listProcessor.init_done = True
def SelectCountryFromList(btnProcessor,*args):
hwndList = win32gui.GetDlgItem(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
sel_count = win32gui.SendMessage(hwndList, commctrl.LVM_GETSELECTEDCOUNT)
sel_text = ''
if sel_count == 1:
sel=-1
for i in range(0,sel_count):
sel = win32gui.SendMessage(hwndList, commctrl.LVM_GETNEXTITEM, sel, commctrl.LVNI_SELECTED)
buf,extra = win32gui_struct.EmptyLVITEM(1, 0)
size = win32gui.SendMessage(hwndList, commctrl.LVM_GETITEMTEXT, sel, buf)
sel_text = ''
for n in extra:
nombre = n.tostring()
sel_text = nombre[0:size]
global country_ref
global new_con_country
global search_country
if str(sel_text).strip() == "":
win32ui.MessageBox("Invalid country selected.","Search Country")
return
try:
country_ref = str(sel_text)
new_con_country = str(sel_text)
search_country = str(sel_text)
except Exception:
pass
win32gui.EndDialog(btnProcessor.window.hwnd, btnProcessor.other_ids[1])
return
elif sel_count < 1:
win32ui.MessageBox("You must one country.","Search Country")
return
else:
win32ui.MessageBox("Multiple selection is not allowed.","Search Country")
return
def SearchState(btnProcessor, *args):
b = check()
if not b:
return
try :
global new_con_country
global search_country
search_state = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
#Searching the contact.
hwndList = win32gui.GetDlgItem(btnProcessor.window.hwnd, btnProcessor.other_ids[1])
states = list(NewConn.GetStates(search_state, search_country))
win32gui.SendMessage(hwndList, commctrl.LVM_DELETEALLITEMS)
if not states:
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0],"<enter text to search>")
win32ui.MessageBox("No state found with name {0}.".format(search_state),"Search Fed.State",flag_error)
for state in states:
num_items = win32gui.SendMessage(hwndList, commctrl.LVM_GETITEMCOUNT)
item = LVITEM(text=state[1],iItem = num_items)
win32gui.SendMessage(hwndList, commctrl.LVM_INSERTITEM, 0, item.toparam())
except Exception,e:
msg = getMessage(e)
win32ui.MessageBox(msg, "Search Fed.State", flag_error)
pass
def SetStateList(listProcessor,*args):
hwndList = listProcessor.GetControl()
child_ex_style = win32gui.SendMessage(hwndList, commctrl.LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0)
child_ex_style |= commctrl.LVS_EX_FULLROWSELECT
win32gui.SendMessage(hwndList, commctrl.LVM_SETEXTENDEDLISTVIEWSTYLE, 0, child_ex_style)
# set header row
lvc = LVCOLUMN(
mask = commctrl.LVCF_FMT | commctrl.LVCF_WIDTH | \
commctrl.LVCF_TEXT | commctrl.LVCF_SUBITEM
)
lvc.fmt = commctrl.LVCFMT_LEFT
lvc.iSubItem = 1
lvc.text = "Fed.State Name"
lvc.cx = 275
win32gui.SendMessage(hwndList, commctrl.LVM_INSERTCOLUMN, 0, lvc.toparam())
global new_con_country
global search_country
states = list(NewConn.GetStates('', search_country))
win32gui.SendMessage(hwndList, commctrl.LVM_DELETEALLITEMS)
if not states:
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0],"<enter text to search>")
win32ui.MessageBox("No state found with name {0}.".format(search_state),"Search Fed.State",flag_error)
for state in states:
num_items = win32gui.SendMessage(hwndList, commctrl.LVM_GETITEMCOUNT)
item = LVITEM(text=state[1],iItem = num_items)
win32gui.SendMessage(hwndList, commctrl.LVM_INSERTITEM, 0, item.toparam())
listProcessor.init_done = True
def SelectStateFromList(btnProcessor,*args):
hwndList = win32gui.GetDlgItem(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
sel_count = win32gui.SendMessage(hwndList, commctrl.LVM_GETSELECTEDCOUNT)
sel_text = ''
if sel_count == 1:
sel=-1
for i in range(0,sel_count):
sel = win32gui.SendMessage(hwndList, commctrl.LVM_GETNEXTITEM, sel, commctrl.LVNI_SELECTED)
buf,extra = win32gui_struct.EmptyLVITEM(1, 0)
size = win32gui.SendMessage(hwndList, commctrl.LVM_GETITEMTEXT, sel, buf)
sel_text = ''
for n in extra:
nombre = n.tostring()
sel_text = nombre[0:size]
global state_ref
global new_con_state
if str(sel_text).strip() == "":
win32ui.MessageBox("Invalid fed. state selected.","Search Fed.State")
return
try:
state_ref = str(sel_text)
new_con_state = str(sel_text)
win32gui.EndDialog(btnProcessor.window.hwnd, btnProcessor.other_ids[1])
except Exception:
pass
return
elif sel_count < 1:
win32ui.MessageBox("You must select state.","Search Fed.State")
return
else:
win32ui.MessageBox("Multiple selection is not allowed.","Search Fed.State")
return
def SetWebDefaultVals(txtProcessor,*args):
import win32con
#Acquiring control of the text box
chk_hwnd = win32gui.GetDlgItem(txtProcessor.window.hwnd, txtProcessor.other_ids[1])
try:
web_server = NewConn.getitem('_webserver')
web_port = NewConn.getitem('_webport')
web_protocol = NewConn.getitem('_webprotocol')
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.control_id, web_server)
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[0], web_port)
if web_protocol == "https:\\\\":
win32gui.SendMessage(chk_hwnd , win32con.BM_SETCHECK, 1, 0);
except Exception, e:
txtProcessor.init_done=True
#Reading Current Selected Email.
txtProcessor.init_done=True
def SetServerDefaultVals(txtProcessor,*args):
import win32con
select = 1
#Acquiring control of the text box
cbprotocol_hwnd = win32gui.GetDlgItem(txtProcessor.window.hwnd, txtProcessor.other_ids[1])
try:
web_server = NewConn.getitem('_server')
web_port = NewConn.getitem('_port')
web_protocol = NewConn.getitem('protocol')
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.control_id, web_server)
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[0], web_port)
if web_protocol == "XML-RPCS":
select = 2
win32gui.SendMessage(cbprotocol_hwnd, win32con.CB_SETCURSEL, select, 0)
except Exception, e:
txtProcessor.init_done=True
#Reading Current Selected Email.
txtProcessor.init_done=True
dialog_map = {
"IDD_MANAGER" : (
(CancelButtonProcessor, "IDCANCEL", resetConnAttribs, ()),
(TabProcessor, "IDC_TAB IDC_LIST",
"""IDD_GENERAL IDD_OBJECT_SETTINGS IDD_ABOUT"""),
(DoneButtonProcessor, "ID_DONE"),
),
"IDD_GENERAL": (
(DBComboProcessor, "ID_DB_DROPDOWNLIST", GetConn, ()),
(TextProcessor, "ID_SERVER_PORT ID_USERNAME ID_PASSWORD IDET_WED_SERVER", SetAllText, ()),
(CommandButtonProcessor, "ID_BUT_TESTCONNECTION ID_DB_DROPDOWNLIST ID_USERNAME \
ID_PASSWORD", TestConnection, ()),
(DialogCommand, "IDC_BUT_SET_SERVER_PORT", "IDD_SERVER_PORT_DIALOG"),
(DialogCommand, "ID_SET_WEB_CONNECTION", "IDD_WEB_SERVER_PORT_DIALOG" ),
(CommandButtonProcessor, "IDPB_WEB_CONNECTION IDET_WED_SERVER", ConnectWebServer, ()),
),
"IDD_OBJECT_SETTINGS" : (
(CommandButtonProcessor, "IDC_BUT_LOAD_IMAGE IDC_IMAGE_PATH", GetImagePath, ()),
(CommandButtonProcessor, "IDC_BUT_SAVE_OBJECT IDC_OBJECT_TITLE IDC_OBJECT_NAME \
IDC_IMAGE_PATH IDC_LIST", AddNewObject, ()),
(CommandButtonProcessor, "IDC_BUT_DEL_OBJECT IDC_LIST", DeleteSelectedObjects, ()),
(ListBoxProcessor, "IDC_LIST", SetDefaultList, ())
),
"IDD_ABOUT" : (
(ImageProcessor, "IDB_OPENERPLOGO"),
(MessageProcessor, "IDC_ABOUT"),
),
"IDD_SERVER_PORT_DIALOG" : (
(TextProcessor, "ID_SERVER ID_PORT ID_DROPDOWNLIST_PROTOCOL", SetServerDefaultVals, ()),
(ProtocolComboProcessor, "ID_DROPDOWNLIST_PROTOCOL", GetConn, ()),
(CloseButtonProcessor, "IDCANCEL"),
(OKButtonProcessor, "IDOK ID_SERVER ID_PORT IDR_XML_PROTOCOL ID_DROPDOWNLIST_PROTOCOL"),
#
# (RadioButtonProcessor, "IDR_XML_PROTOCOL", GetConn, ()),
# (RadioButtonProcessor, "IDR_XMLS_PROTOCOL", GetConn, ()),
# (RadioButtonProcessor, "IDR_NETRPC_PROTOCOL", GetConn, ()),
),
"IDD_SYNC" : (
(CommandButtonProcessor, "ID_SEARCH ID_SEARCH_TEXT IDC_NAME_LIST", SearchObjectsForText,()),
(GroupProcessor, "IDC_STATIC_GROUP", setCheckList, ()),
(CSComboProcessor, "ID_ATT_METHOD_DROPDOWNLIST", GetConn,()),
(DialogCommand, "ID_CREATE_CONTACT ID_SEARCH_TEXT", "IDD_NEW_CONTACT_DIALOG", set_search_text, ()),
(CloseButtonProcessor, "IDCANCEL"),
(CommandButtonProcessor, "ID_MAKE_ATTACHMENT IDC_NAME_LIST IDD_SYNC", MakeAttachment, ()),
(CommandButtonProcessor, "ID_CREATE_CASE ID_ATT_METHOD_DROPDOWNLIST IDC_NAME_LIST IDD_SYNC", CreateCase, ()),
(ListBoxProcessor, "IDC_NAME_LIST", SetNameColumn, ()),
(TextProcessor, "ID_SEARCH_TEXT ID_SEARCH_TEXT IDC_NAME_LIST", GetSearchText, ()),
),
"IDD_NEW_CONTACT_DIALOG" : (
(CloseButtonProcessor, "IDCANCEL"),
(CommandButtonProcessor, "ID_CONTACT_SAVE_BUTTON ID_CONTACT_NAME_TEXT ID_CONTACT_EMAIL_TEXT ID_CONTACT_OFFICE_TEXT ID_CONTACT_MOBILE_TEXT ID_FAX_TEXT ID_STREET_TEXT ID_STREET2_TEXT ID_PARTNER_CITY_TEXT ID_ZIP_TEXT ID_PARTNER_TEXT IDET_NC_PARTNER_STATE IDET_NC_PARTNER_COUNTRY", CreateContact, ()),
(TextProcessor, "ID_CONTACT_NAME_TEXT ID_CONTACT_EMAIL_TEXT ID_PARTNER_TEXT IDET_NC_PARTNER_STATE IDET_NC_PARTNER_COUNTRY" , SetDefaultContact, ()),
(DialogCommand, "ID_NEW_PARTNER_BUTTON", "IDD_SELECT_PARTNER"),
(DialogCommand, "IDPB_NEW_PARTNER_BUTTON", "IDD_NEW_PARTNER_DIALOG"),
(DialogCommand, "IDPB_NC_SEARCH_STATE1", "IDD_SELECT_STATE"),
(DialogCommand, "IDPB_NC_SEARCH_COUNTRY1", "IDD_SELECT_COUNTRY"),
),
"IDD_NEW_PARTNER_DIALOG" : (
(CloseButtonProcessor, "IDCANCEL"),
(CommandButtonProcessor, "ID_SAVE_PARTNER_BUTTON ID_PARTNER_NAME_TEXT", CreatePartner, ()),
),
"IDD_VIEW_PARTNER_DIALOG" : (
(TextProcessor, "IDET_SEARCH_PARTNER IDET_PARTNER IDET_PARTNER_CONTACT_NAME IDET_PARTNER_STREET IDET_PARTNER_STREET2 IDET_PARTNER_CITY IDET_PARTNER_OFFICENO IDET_PARTNER_MOBILENO IDET_PARTNER_EMAIL IDET_PARTNER_FAX IDET_ZIP IDET_PARTNER_STATE IDET_PARTNER_COUNTRY", GetDefaultEmail, ()),
(CommandButtonProcessor, "IDPB_SEARCH_PARTNER IDET_SEARCH_PARTNER IDET_PARTNER IDET_PARTNER_CONTACT_NAME IDET_PARTNER_STREET IDET_PARTNER_STREET2 IDET_PARTNER_CITY IDET_PARTNER_OFFICENO IDET_PARTNER_MOBILENO IDET_PARTNER_EMAIL IDET_PARTNER_FAX IDET_ZIP IDET_PARTNER_STATE IDET_PARTNER_COUNTRY", SearchPartner, ()),
(CommandButtonProcessor, "IDPB_WRITE_CHANGES IDET_PARTNER IDET_PARTNER_CONTACT_NAME IDET_PARTNER_STREET IDET_PARTNER_STREET2 IDET_PARTNER_CITY IDET_PARTNER_STATE IDET_PARTNER_COUNTRY IDET_PARTNER_OFFICENO IDET_PARTNER_MOBILENO IDET_PARTNER_EMAIL IDET_PARTNER_FAX IDET_ZIP", WritePartner, ()),
(CloseButtonProcessor, "IDCANCEL"),
(DialogCommand, "ID_NEW_PART_BUTTON", "IDD_SELECT_PARTNER" ),
(DialogCommand, "IDPB_NEWPARTNER_BUTTON" , "IDD_NEW_CONTACT_DIALOG"),
(DialogCommand, "IDPB_NEW_PART_BUTTON", "IDD_NEW_PARTNER_DIALOG"),
(DialogCommand, "IDPB_SEARCH_COUNTRY1", "IDD_SELECT_COUNTRY"),
(DialogCommand, "IDPB_SEARCH_STATE1", "IDD_SELECT_STATE"),
),
"IDD_SELECT_PARTNER" : (
(ListBoxProcessor, "IDC_LIST_PARTNER" ,SetPartnerNameColumn, ()),
(CommandButtonProcessor, "IDPB_PARTNER_SEARCH IDET_PARTNER_SEARCH_NAME IDC_LIST_PARTNER", SearchPartnerList,()),
(CommandButtonProcessor, "IDPB_SELECT_PARTNER IDC_LIST_PARTNER IDD_SELECT_PARTNER" , SelectPartnerFromList,()),
(DialogCommand, "IDPB_CREATE_NEW_PARTNER" , "IDD_NEW_PARTNER_DIALOG")
),
"IDD_OPEN_PARTNER_DIALOG" : (
(CloseButtonProcessor, "IDCANCEL"),
(TextProcessor, "IDET_PARTNER_LINK_TEXT", OpenPartnerForm, ()),
),
"IDD_OPEN_DOCUEMNT_DIALOG" : (
(CloseButtonProcessor, "IDCANCEL"),
(TextProcessor, "IDEB_OPENDOC_LINK_TEXT", SerachOpenDocuemnt,()),
),
"IDD_WEB_SERVER_PORT_DIALOG" :(
(TextProcessor, "IDET_WEB_SERVER IDET_WEB_PORT IDCB_WEB_SECURE", SetWebDefaultVals, ()),
(CloseButtonProcessor, "IDCANCEL"),
(WEBOKButtonProcessor, "ID_WEB_OK IDET_WEB_SERVER IDET_WEB_PORT IDCB_WEB_SECURE"),
(WEBCHKProcessor, "IDCB_WEB_SECURE"),
),
"IDD_SELECT_COUNTRY" : (
(CommandButtonProcessor, "IDPB_SEARCH_COUNTRY IDET_COUNTRY_SEARCH_NAME IDC_LIST_COUNTRY" , SearchCountry, ()),
(ListBoxProcessor, "IDC_LIST_COUNTRY" ,SetCountryList, ()),
(CommandButtonProcessor, "IDPB_SELECT_COUNTRY IDC_LIST_COUNTRY IDD_SELECT_COUNTRY" , SelectCountryFromList,()),
),
"IDD_SELECT_STATE" : (
(CommandButtonProcessor, "IDPB_STATE_SEARCH IDET_STATE_SEARCH_NAME IDC_LIST_STATE" , SearchState, ()),
(ListBoxProcessor, "IDC_LIST_STATE" ,SetStateList, ()),
(CommandButtonProcessor, "IDPB_SELECT_STATE IDC_LIST_STATE IDD_SELECT_STATE" , SelectStateFromList,()),
),
}