itrade_wxmixin.py :  » Business-Application » iTrade » itrade » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Business Application » iTrade 
iTrade » itrade » itrade_wxmixin.py
#!/usr/bin/env python
# ============================================================================
# Project Name : iTrade
# Module Name  : itrade_wxmixin.py
#
# Description: wxPython MixIn classes
#
# The Original Code is iTrade code (http://itrade.sourceforge.net).
#
# The Initial Developer of the Original Code is Gilles Dumortier.
#
# Portions created by the Initial Developer are Copyright (C) 2004-2008 the
# Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# This program 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 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; see http://www.gnu.org/licenses/gpl.html
#
# History       Rev   Description
# 2005-10-17    dgil  Wrote it from scratch
# ============================================================================

# ============================================================================
# Imports
# ============================================================================

# python system
import os
import logging
import pprint

# wxPython system
import itrade_wxversion
import wx
import wx.lib.mixins.listctrl as wxl

# iTrade system
import itrade_config
from itrade_logging import *
from itrade_local import message

# iTrade wxPython  system
from itrade_wxutil import iTradeYesNo

# ============================================================================
# iTrade_wxFrame
#
# Supports :
# - parental filiation
# - focus management
# ============================================================================

class iTrade_wxFrame(object):
    def __init__(self, parent, name, hasStatusBar=True):
        self.m_parent = parent
        self.m_name = name
        self.SetAutoLayout(True)
        self._config = {}

        # icon
        self.SetIcon(wx.Icon(os.path.join(itrade_config.dirRes, "itrade.ico"),wx.BITMAP_TYPE_ICO))

        # focus
        self.m_hasFocus = True
        wx.EVT_ACTIVATE(self,self._OnActivate)

        # size and position
        wx.EVT_ICONIZE(self,self._OnMinimize)

        # a Statusbar in the bottom of the window
        if hasStatusBar:
            self.CreateStatusBar()

        # restore position/size/...
        self.loadConfig()

    def getParent(self):
        return self.m_parent

    def _OnActivate(self,event):
        #debug('_OnActivate %d',event.GetActive())
        self.m_hasFocus = event.GetActive()
        if self.m_hasFocus and not self.IsIconized():
            self._restoredPosition = self.GetPositionTuple()
            self._restoredSize = self.GetSizeTuple()
        event.Skip(False)

    def hasFocus(self):
        return self.m_hasFocus

    def onEraseBackground(self, evt):
        # this is supposed to prevent redraw flicker on some X servers...
        pass

    def GetRestoredPosition(self):
        if self.IsIconized():
            return self._restoredPosition
        else:
            return self.GetPositionTuple()

    def GetRestoredSize(self):
        if self.IsIconized():
            return self._restoredSize
        else:
            return self.GetSizeTuple()

    def _OnMinimize(self, event):
        if event.Iconized() and self.GetPositionTuple() != (-32000, -32000):
            self._restoredPosition = self.GetPositionTuple()
            self._restoredSize = self.GetSizeTuple()
        event.Skip(False)

    def loadConfig(self):
        if self.m_name:
            if itrade_config.verbose: print 'iTrade_wxFrame::loadConfig',self.m_name
            try:
                self._config = itrade_config.readThenEvalFile(os.path.join(itrade_config.dirCacheData,'%s.win'%self.m_name))
                if self._config != {}:
                    if 'position' in self._config:
                        self.SetPosition(self._config['position'])
                    if 'size' in self._config:
                        self.SetSize(self._config['size'])
            except:
                self._config = {}

    def saveConfig(self):
        if self.m_name:
            if itrade_config.verbose: print 'iTrade_wxFrame::saveConfig',self.m_name
            self._config['position'] = self.GetRestoredPosition()
            self._config['size'] = self.GetRestoredSize()
            try:
                path = os.path.join(itrade_config.dirCacheData,'%s.win' % self.m_name)
                if itrade_config.verbose: print('saveConfig: %s %s' % (path,self._config))
                f = open(path, "w")
                pprint.pprint(self._config, f)
                f.close()
            except:
                # argh
                print 'saveConfig: argh'
                pass

# ============================================================================
# iTradeSelectorListCtrl
#
# ListCtrl with sorting columns
# ============================================================================

class iTradeSelectorListCtrl(wx.ListCtrl, wxl.ListCtrlAutoWidthMixin):
    def __init__(self, parent, ID, pos=wx.DefaultPosition,
                 size=wx.DefaultSize, style=0):
        wx.ListCtrl.__init__(self, parent, ID, pos, size, style)
        wxl.ListCtrlAutoWidthMixin.__init__(self)

# ============================================================================
# That's all folks !
# ============================================================================
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.