##// END OF EJS Templates
added a "warning experimental work" at startup
laurent.dufrechou -
Show More
@@ -1,195 +1,205 b''
1 1 #!/usr/bin/python
2 2 # -*- coding: iso-8859-15 -*-
3 3
4 4 import wx.aui
5 5 import wx.py
6 6 from wx.lib.wordwrap import wordwrap
7 7
8 8 from ipython_view import *
9 9 from ipython_history import *
10 10
11 11 __version__ = 0.8
12 12 __author__ = "Laurent Dufrechou"
13 13 __email__ = "laurent.dufrechou _at_ gmail.com"
14 14 __license__ = "BSD"
15 15
16 16 #-----------------------------------------
17 17 # Creating one main frame for our
18 18 # application with movables windows
19 19 #-----------------------------------------
20 20 class MyFrame(wx.Frame):
21 21 """Creating one main frame for our
22 22 application with movables windows"""
23 23 def __init__(self, parent=None, id=-1, title="WxIPython", pos=wx.DefaultPosition,
24 24 size=(800, 600), style=wx.DEFAULT_FRAME_STYLE):
25 25 wx.Frame.__init__(self, parent, id, title, pos, size, style)
26 26 self._mgr = wx.aui.AuiManager()
27 27
28 28 # notify PyAUI which frame to use
29 29 self._mgr.SetManagedWindow(self)
30 30
31 31 #create differents panels and make them persistant
32 32 self.history_panel = IPythonHistoryPanel(self)
33 33
34 34 self.ipython_panel = WxIPythonViewPanel(self,self.OnExitDlg,
35 35 background_color = "BLACK")
36 36
37 37 #self.ipython_panel = WxIPythonViewPanel(self,self.OnExitDlg,
38 38 # background_color = "WHITE")
39 39
40 40 self.ipython_panel.setHistoryTrackerHook(self.history_panel.write)
41 41 self.ipython_panel.setStatusTrackerHook(self.updateStatus)
42 42
43 43 self.statusbar = self.createStatus()
44 44 self.createMenu()
45 45
46 46 ########################################################################
47 47 ### add the panes to the manager
48 48 # main panels
49 49 self._mgr.AddPane(self.ipython_panel , wx.CENTER, "IPython Shell")
50 50 self._mgr.AddPane(self.history_panel , wx.RIGHT, "IPython history")
51 51
52 52 # now we specify some panel characteristics
53 53 self._mgr.GetPane(self.ipython_panel).CaptionVisible(True);
54 54 self._mgr.GetPane(self.history_panel).CaptionVisible(True);
55 55 self._mgr.GetPane(self.history_panel).MinSize((200,400));
56 56
57 57
58 58
59 59 # tell the manager to "commit" all the changes just made
60 60 self._mgr.Update()
61 61
62 #self.ipython_panel.run()
63
64 62 #global event handling
65 63 self.Bind(wx.EVT_CLOSE, self.OnClose)
66 64 self.Bind(wx.EVT_MENU, self.OnClose,id=wx.ID_EXIT)
67 65 self.Bind(wx.EVT_MENU, self.OnShowIPythonPanel,id=wx.ID_HIGHEST+1)
68 66 self.Bind(wx.EVT_MENU, self.OnShowHistoryPanel,id=wx.ID_HIGHEST+2)
69 67 self.Bind(wx.EVT_MENU, self.OnShowAbout, id=wx.ID_HIGHEST+3)
70 68 self.Bind(wx.EVT_MENU, self.OnShowAllPanel,id=wx.ID_HIGHEST+6)
71 69
70 warn_text = 'Hello from IPython and wxPython.\n'
71 warn_text +='Please Note that this work is still EXPERIMENTAL\n'
72 warn_text +='It does NOT emulate currently all the IPython functions.\n'
73
74 dlg = wx.MessageDialog(self,
75 warn_text,
76 'Warning Box',
77 wx.OK | wx.ICON_INFORMATION
78 )
79 dlg.ShowModal()
80 dlg.Destroy()
81
72 82 def createMenu(self):
73 83 """local method used to create one menu bar"""
74 84
75 85 mb = wx.MenuBar()
76 86
77 87 file_menu = wx.Menu()
78 88 file_menu.Append(wx.ID_EXIT, "Exit")
79 89
80 90 view_menu = wx.Menu()
81 91 view_menu.Append(wx.ID_HIGHEST+1, "Show IPython Panel")
82 92 view_menu.Append(wx.ID_HIGHEST+2, "Show History Panel")
83 93 view_menu.AppendSeparator()
84 94 view_menu.Append(wx.ID_HIGHEST+6, "Show All")
85 95
86 96 about_menu = wx.Menu()
87 97 about_menu.Append(wx.ID_HIGHEST+3, "About")
88 98
89 99 #view_menu.AppendSeparator()
90 100 #options_menu = wx.Menu()
91 101 #options_menu.AppendCheckItem(wx.ID_HIGHEST+7, "Allow Floating")
92 102 #options_menu.AppendCheckItem(wx.ID_HIGHEST+8, "Transparent Hint")
93 103 #options_menu.AppendCheckItem(wx.ID_HIGHEST+9, "Transparent Hint Fade-in")
94 104
95 105
96 106 mb.Append(file_menu, "File")
97 107 mb.Append(view_menu, "View")
98 108 mb.Append(about_menu, "About")
99 109 #mb.Append(options_menu, "Options")
100 110
101 111 self.SetMenuBar(mb)
102 112
103 113 def createStatus(self):
104 114 statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
105 115 statusbar.SetStatusWidths([-2, -3])
106 116 statusbar.SetStatusText("Ready", 0)
107 117 statusbar.SetStatusText("WxIPython "+str(__version__), 1)
108 118 return statusbar
109 119
110 120 def updateStatus(self,text):
111 121 states = {'IDLE':'Idle',
112 122 'DO_EXECUTE_LINE':'Send command',
113 123 'WAIT_END_OF_EXECUTION':'Running command',
114 124 'SHOW_DOC':'Showing doc',
115 125 'SHOW_PROMPT':'Showing prompt'}
116 126 self.statusbar.SetStatusText(states[text], 0)
117 127
118 128 def OnClose(self, event):
119 129 """#event used to close program """
120 130 # deinitialize the frame manager
121 131 self._mgr.UnInit()
122 132 self.Destroy()
123 133 event.Skip()
124 134
125 135 def OnExitDlg(self, event):
126 136 dlg = wx.MessageDialog(self, 'Are you sure you want to quit WxIPython',
127 137 'WxIPython exit',
128 138 wx.ICON_QUESTION |
129 139 wx.YES_NO | wx.NO_DEFAULT
130 140 )
131 141 if dlg.ShowModal() == wx.ID_YES:
132 142 dlg.Destroy()
133 143 self._mgr.UnInit()
134 144 self.Destroy()
135 145 dlg.Destroy()
136 146
137 147 #event to display IPython pannel
138 148 def OnShowIPythonPanel(self,event):
139 149 """ #event to display Boxpannel """
140 150 self._mgr.GetPane(self.ipython_panel).Show(True)
141 151 self._mgr.Update()
142 152 #event to display History pannel
143 153 def OnShowHistoryPanel(self,event):
144 154 self._mgr.GetPane(self.history_panel).Show(True)
145 155 self._mgr.Update()
146 156
147 157 def OnShowAllPanel(self,event):
148 158 """#event to display all Pannels"""
149 159 self._mgr.GetPane(self.ipython_panel).Show(True)
150 160 self._mgr.GetPane(self.history_panel).Show(True)
151 161 self._mgr.Update()
152 162
153 163 def OnShowAbout(self, event):
154 164 # First we create and fill the info object
155 165 info = wx.AboutDialogInfo()
156 166 info.Name = "WxIPython"
157 167 info.Version = str(__version__)
158 168 info.Copyright = "(C) 2007 Laurent Dufrechou"
159 169 info.Description = wordwrap(
160 170 "A Gui that embbed a multithreaded IPython Shell",
161 171 350, wx.ClientDC(self))
162 172 info.WebSite = ("http://ipython.scipy.org/", "IPython home page")
163 173 info.Developers = [ "Laurent Dufrechou" ]
164 174 licenseText="BSD License.\nAll rights reserved. This program and the accompanying materials are made available under the terms of the BSD which accompanies this distribution, and is available at http://www.opensource.org/licenses/bsd-license.php"
165 175 info.License = wordwrap(licenseText, 500, wx.ClientDC(self))
166 176
167 177 # Then we call wx.AboutBox giving it that info object
168 178 wx.AboutBox(info)
169 179
170 180 #-----------------------------------------
171 181 #Creating our application
172 182 #-----------------------------------------
173 183 class MyApp(wx.PySimpleApp):
174 184 """Creating our application"""
175 185 def __init__(self):
176 186 wx.PySimpleApp.__init__(self)
177 187
178 188 self.frame = MyFrame()
179 189 self.frame.Show()
180 190
181 191 #-----------------------------------------
182 192 #Main loop
183 193 #-----------------------------------------
184 194 def main():
185 195 app = MyApp()
186 196 app.SetTopWindow(app.frame)
187 197 app.MainLoop()
188 198
189 199 #if launched as main program run this
190 200 if __name__ == '__main__':
191 201 import hotshot
192 202 prof = hotshot.Profile("hotshot_edi_stats")
193 203 prof.runcall(main)
194 204 prof.close()
195 205 #main()
General Comments 0
You need to be logged in to leave comments. Login now