__init__.py 5.97 KB
Newer Older
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
1
2
3
4
5
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# ================= FILE HEADER ========================================
#
Philipp Gast's avatar
Philipp Gast committed
6
#   myplotlib v3.0.1,
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#
#   @file      __init__.py
#   @author    Yori 'AGy' Fournier
#   @licence   CC-BY-SA
#
#   Import and Configuration file for myplotlib
#
#   @section Import
#
#   myplotlib is base on matplotlib therefore it requires
#   Figure and Axes as main classes and a few further functions.
#
#   @section Config
#
#   Default value for user parameters
#   and configuration for the default plotting
#
#   @section Module Import
#
#   Import of myplotlib classes and function
#
#   @section History
#
#   v 0.0.0 - __init__.py file for the myplotlib module
#
# ======================================================================
#
#
# IMPORT ---------------------------------------------------------------
Yori Fournier's avatar
Yori Fournier committed
36
from .config import INFO, WARN, SEVR, DBUG, SPCE
37
from .config import D_HIERARCHY
Yori Fournier's avatar
Yori Fournier committed
38

Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
39
40
import os as os
import numpy as np
41
np.set_printoptions(threshold='nan')
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
42

Yori Fournier's avatar
Yori Fournier committed
43
44
45
from signal import Signal, Query, Status, Answer
from mpl_unpickler import MplUnpickler

46
47
# matplotlib import for client/local -----------------------------------
if D_HIERARCHY in ('CLIENT', 'client', 'LOCAL', 'local'):
Yori Fournier's avatar
Yori Fournier committed
48

49
    if D_HIERARCHY in ('CLIENT', 'client'):
50
        print(INFO+'Import '+__package__+' as a client.')
51
    else:
52
        print(INFO+'Import '+__package__+' for local use.')
53
54
55
    
    # Test mpl version:
    from matplotlib import __version__ as mplvers
Yori Fournier's avatar
Yori Fournier committed
56

57
58
    if int(mplvers.replace('.','')[:3]) < 143 :
        print('\n\n' + WARN + 72*'=' + '\n' + SPCE + 'The matplotlib version you are using is not supported.\n' + SPCE + 'Most of myplotlib should work, but some stuff may not.\n' + SPCE + 'ex: expect an error with test203\n' + SPCE + 72*'=' + '\n\n')
59

60
61
62
63
64
65
66
67
68
69
    # matplotlib
    from matplotlib.pyplot import figure
    from matplotlib.pyplot import rc
    from matplotlib.pyplot import show, draw, ion, ioff, clf
    from matplotlib.pyplot import close as mpclose
    from matplotlib.pyplot import fignum_exists, savefig
    from matplotlib.axes import Axes
    from matplotlib.figure import Figure
    from matplotlib import is_interactive
    from matplotlib import use
70
71
72

    from .config import D_HOST, D_PORT
    from socket import socket, AF_INET, SOCK_STREAM
73
74
    
elif D_HIERARCHY in ('SERVER', 'server'):
75
    print(INFO+'Import '+__package__+' as a server.')
76
    from .config import D_HOST, D_PORT
77
    from socket import socket, AF_INET, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR
78
79
80
81
82

else:    
    print(SEVR+'the value of D_HIERARCHY has to be SERVER or CLIENT')
    raise ImportError
    
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
83
# myplotlib
84
from .myData import MyData
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
85

86
87
88
89
90
91
# CONFIGURATION --------------------------------------------------------
from .config import D_FIGNUM, D_FIGSIZE, D_REFORMAT, D_FORMATTED
from .config import D_RAWDATA, D_INPUTARG
from .config import D_IPATH
from .config import D_OPATH, D_OFORMAT
from .config import D_DEBUG
92
93

if D_HIERARCHY in ('CLIENT', 'client', 'LOCAL', 'local'):
94
    
95
96
    from .rconfig import rcParams
    
97
98
99
if D_HIERARCHY in ('CLIENT', 'client'):
    
    # MyAxes: Overlay on matplotlib.Axes class
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
100
    from .myAxes_client import MyAxes_client as MyAxes
101
102

    # MyFig: Overlay on matplotlib.Figure class
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
103
104
    from .myFig_client import MyFig_client as MyFig

105
106
    from .progressbar import ProgressBar
    
107
    from .mplClient import MplClient
108
    from .mplClient2 import MplClient2
109
110

elif(D_HIERARCHY in ('SERVER', 'server')):
111

112
113
114
115
116
     # MyAxes: Overlay on matplotlib.Axes class
    from .myAxes_server import MyAxes_server as MyAxes

    # MyFig: Overlay on matplotlib.Figure class
    from .myFig_server import MyFig_server as MyFig
117
118

#    from .test import FigTestServer
Yori Fournier's avatar
Yori Fournier committed
119
#    from .test import FigTest
120
121

# for testing purpose
Yori Fournier's avatar
Yori Fournier committed
122
#    from .test import readStupidData, readStupidData2
123

Yori Fournier's avatar
Yori Fournier committed
124
125
126
127
128
129
    SERVER_IOFUNCTIONS = {
#        'readStupidData': readStupidData,
#        'readStupidData2': readStupidData2
    }
    SERVER_FIGURES = {
        #'FigTest': FigTest
130
    }
131

132
    from .mplServer import MplServer
133
    from .mplServer2 import MplServer2, MplHandler
134
135
136
    
elif D_HIERARCHY in ('LOCAL', 'local'):
    
137
138
    # MyAxes: Overlay on matplotlib.Axes class
    from .myAxes import MyAxes
139

140
141
    # MyFig: Overlay on matplotlib.Figure class
    from .myFig import MyFig
142

143
144
    from .mplGrid import Grid, VerticalGrid, HorizontalGrid
    
145
146
147
    from .empty_fig import EmptyFig
    from .empty_axes import EmptyAxes

148
149
150
151
152
153
154
else:
    
    print(SEVR+'the value of D_HIERARCHY has to be SERVER, CLIENT or LOCAL')
    raise ImportError        
    

if D_HIERARCHY in ('CLIENT', 'client', 'LOCAL', 'local'):
155
    
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
    _G_WINDOWS = []
    
    # MyWin: Overlay on matplotlib.FigureManager class
    if rcParams['backend'] == u'TkAgg':
        from .myWin_TkAgg import MyWin_TkAgg as MyWin
    elif rcParams['backend'] == u'GTKAgg':
        from .myWin_GTKAgg import MyWin_GTKAgg as MyWin
    elif rcParams['backend'] == u'WXAgg':
        from .myWin_WXAgg import MyWin_WXAgg as MyWin
    elif rcParams['backend'] == u'Qt4Agg':
        from .myWin_Qt4Agg import MyWin_Qt4Agg as MyWin
    elif rcParams['backend'] == u'MacOSX':
        from .myWin_MacOSx import MyWin_MacOSx as MyWin
    else:
        print(SEVR + "The backend you choosed is not supported interactive mode not available")
171

Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
172
173
# myTool.*: interface functions to use myplotlib interactively

174
175
176
#from .mytool import print2file  # need to make tools for server ?? or just put them in client/local
#from .mytool import FigOneAxes 

Yori Fournier's avatar
Yori Fournier committed
177
#if D_HIERARCHY in ('CLIENT', 'client', 'LOCAL', 'local'):
178

Yori Fournier's avatar
Yori Fournier committed
179
180
181
182
183
184
#    from .mytool import print2file  # need to make tools for server ?? or just put them in client/local
#    from .mytool import FigOneAxes 
#    from .mytool import window_exists, getCurrentWindowIDs
#    from .mytool import print2file, print2screen, printListCurrentWindows
#    from .mytool import getWindow, getFigOnWindow, drawFigOnWindow, giveDataToWindow
#    from .mytool import closeWindow, closeAllWindows
Yori 'AGy' Fournier's avatar
Yori 'AGy' Fournier committed
185

186
# TESTS ----------------------------------------------------------------
187

188
189
#    from .test import myTest
#    from .test import testList
Yori Fournier's avatar
Yori Fournier committed
190
#    from .test import FigTest