On Mon, Oct 6, 2008 at 9:47 PM, Phyo Arkar <[EMAIL PROTECTED]> wrote:
>
> Dear Limodou
>
> I am trying to build Ipython Inside Web2py.
>
> I python have IPShellwiget class , which is a wx.panel type.
>
> I want it at the bottom window.
>
> Any help please?
>
There are many examples in UliPad you can refer, for example: plugins/dosprompt
you can see __init__,py, the code is:
import wx
from modules.Debug import error
import os.path
from modules import common
from mixins import MessageWindow
import DosPrompt
import images
menulist = [ ('IDM_WINDOW',
[
(180, 'IDM_WINDOW_DOS', tr('Open Dos Prompt Window'),
wx.ITEM_NORMAL, 'OnWindowDos', tr('Opens dos prompt window.')),
]),
]
Mixin.setMixin('mainframe', 'menulist', menulist)
#above will insert new menu item to window menu
popmenulist = [ (None,
[
(150, 'IDPM_DOSWINDOW', tr('Open Dos Prompt Window'),
wx.ITEM_NORMAL, 'OnDosWindow', tr('Opens dos prompt window.')),
]),
]
Mixin.setMixin('notebook', 'popmenulist', popmenulist)
#above will insert new pop up menu item to left or bottom pane pop up menu
class DosPromptWindow(MessageWindow.MessageWindow):
__mixinname__ = 'dospromptwindow'
def __init__(self, parent, mainframe):
MessageWindow.MessageWindow.__init__(self, parent, mainframe)
#defining new panel class, so here you can use IPShellwiget class I think.
def createDosWindow(win):
page = win.panel.getPage('Dos')
if not page:
page = DosPromptWindow(win.panel.createNotebook('bottom'), win)
win.panel.addPage('bottom', page, 'Dos')
win.dosprompt = page
Mixin.setMixin('mainframe', 'createDosWindow', createDosWindow)
#creating new method to mainframe, it'll create new panel. getPage()
will find if the panel has been created. if not, creating it first,
then invoke addPage() to add it to 'bottom' pane.
def OnWindowDos(win, event):
path = os.getcwd()
path = common.decode_string(path)
dlg = wx.DirDialog(win, tr('Choose a directory'), path)
answer = dlg.ShowModal()
if answer == wx.ID_OK:
path = dlg.GetPath()
win.createDosWindow()
win.panel.showPage('Dos')
win.RunDosCommand('cmd.exe /k "cd %s"' % path)
Mixin.setMixin('mainframe', 'OnWindowDos', OnWindowDos)
#above is menu item event handler. It'll create panel first, then show it.
def OnDosWindow(win, event):
win.mainframe.OnWindowDos(event)
Mixin.setMixin('notebook', 'OnDosWindow', OnDosWindow)
#above is pop up menu item event handler.
toollist = [
(1000, 'dos'),
]
Mixin.setMixin('mainframe', 'toollist', toollist)
#order, IDname, imagefile, short text, long text, func
toolbaritems = {
'dos':(wx.ITEM_NORMAL, 'IDM_WINDOW_DOS',
images.getDosBitmap(), tr('open dos prompt window'), tr('Open dos
prompt window.'), 'OnWindowDos'),
}
Mixin.setMixin('mainframe', 'toolbaritems', toolbaritems)
#above will add new tool button to toolbar if you want.
--
I like python!
UliPad <<The Python Editor>>: http://code.google.com/p/ulipad/
UliWeb <<simple web framework>>: http://uliwebproject.appspot.com
My Blog: (new)http://http://hi.baidu.com/limodou
(old)http://www.donews.net/limodou