Permalink
Browse files

Version 1.9.9.8

  • Loading branch information...
pyscripter
pyscripter committed Jan 1, 2010
1 parent 3cee820 commit 899e47fddd94b9d795a804e8107d5b8ac72e5cda
Showing with 171 additions and 62 deletions.
  1. +0 −2 Install.txt
  2. +0 −7 Install/AfterInstallPyScripter.txt
  3. +5 −3 Install/PyScripter.iss
  4. +3 −2 PyScripter.bdsproj
  5. BIN PyScripter.res
  6. +1 −1 Readme.txt
  7. +1 −4 cPyRemoteDebugger.pas
  8. +157 −41 dmCommands.dfm
  9. +1 −1 dmCommands.pas
  10. +3 −1 frmPyIDEMain.pas
View
@@ -6,8 +6,6 @@ http://www.microsoft.com/downloads/details.aspx?familyid=A5C84275-3B97-4AB7-A40D
Copy the included files to the PyScripter installation folder overriding existing files.
-Please note that to use remote debugging you need to install the Python package Rpyc v2.6 which is available at http://code.google.com/p/pyscripter/downloads/list.
-
You can read about remote debugging at http://code.google.com/p/pyscripter/wiki/RemoteEngines
If you upgrade from a version earlier than 1.8.5 you will need to change the PyScripter shortcuts, since now command line
@@ -6,13 +6,6 @@ http://www.microsoft.com/downloads/details.aspx?familyid=A5C84275-3B97-4AB7-A40D
Versions later than 1.8 contain support for remote debugging. Read
http://pyscripter.googlepages.com/remotepythonengines for details.
-Please note that to use remote debugging you need to download and
-install the Python package Rpyc version 2.6, available for download from
-http://code.google.com/p/pyscripter/downloads/list. (highly recommended).
-
-To install rpyc, unzip the downloaded file into the lib\site-packages
-subdirectory of the Python distribution. Repeat this for each version
-of Python you're interested in using.
Please visit http:\\pyscripter.googlepages.com for information about
remote debugging and other PyScripter related topics.
View
@@ -3,8 +3,8 @@
[Setup]
AppName=PyScripter
-AppVersion=1.9.9.7
-AppVerName=PyScripter 1.9.9.7
+AppVersion=1.9.9.8
+AppVerName=PyScripter 1.9.9.8
AppPublisher=PyScripter
AppPublisherURL=http://pyscripter.googlecode.com
AppSupportURL=http://groups.google.com/group/PyScripter
@@ -14,7 +14,7 @@ DefaultGroupName=PyScripter
InfoBeforeFile=BeforeInstallPyScripter.txt
InfoAfterFile=AfterInstallPyScripter.txt
OutputDir=Output
-OutputBaseFilename=PyScripter-v1.9.9.7-Setup
+OutputBaseFilename=PyScripter-v1.9.9.8-Setup
Compression=lzma
SolidCompression=true
ChangesAssociations=true
@@ -53,6 +53,8 @@ Source: ..\..\PythonIDE\locale\zh\LC_MESSAGES\languages.mo; DestDir: {app}\local
Source: ..\..\PythonIDE\locale\zh\LC_MESSAGES\languages.po; DestDir: {app}\locale\zh\LC_MESSAGES\
;Source: ..\..\PythonIDE\Scripts\pyscripter_init.py; DestDir: {userappdata}\PyScripter; Flags: uninsneveruninstall onlyifdoesntexist
;Source: ..\..\PythonIDE\Scripts\python_init.py; DestDir: {userappdata}\PyScripter; Flags: uninsneveruninstall onlyifdoesntexist
+Source: ..\Lib\rpyc-python2x.zip; DestDir: {app}\Lib
+Source: ..\Lib\rpyc-python3x.zip; DestDir: {app}\Lib
[Icons]
Name: {group}\PyScripter (Latest Python Version); Filename: {app}\PyScripter.exe
View
@@ -150,7 +150,7 @@
<VersionInfo Name="MajorVer">1</VersionInfo>
<VersionInfo Name="MinorVer">9</VersionInfo>
<VersionInfo Name="Release">9</VersionInfo>
- <VersionInfo Name="Build">7</VersionInfo>
+ <VersionInfo Name="Build">8</VersionInfo>
<VersionInfo Name="Debug">False</VersionInfo>
<VersionInfo Name="PreRelease">False</VersionInfo>
<VersionInfo Name="Special">False</VersionInfo>
@@ -162,7 +162,7 @@
<VersionInfoKeys>
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
- <VersionInfoKeys Name="FileVersion">1.9.9.7</VersionInfoKeys>
+ <VersionInfoKeys Name="FileVersion">1.9.9.8</VersionInfoKeys>
<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
@@ -176,6 +176,7 @@
<Language Name="ProjectLang">$00000000</Language>
<Language Name="RootDir"></Language>
</Language>
+
<Excluded_Packages>
<Excluded_Packages Name="c:\program files\borland\bds\4.0\Bin\bcbie100.bpl">Borland C++Builder Internet Explorer 5 Components Package</Excluded_Packages>
</Excluded_Packages>
View
Binary file not shown.
View
@@ -11,7 +11,7 @@ To compile the PythonIDE.dpr, you first need to install the following components
- Python for Delphi (http://python4delphi.googlecode.com/ - use SVN)
- - JVCL version 3.36 (jvcl.sf.net) and JCL version 1.1104 (jvcl.sf.net)
+ - JCL and JVCL (jvcl.sf.net)
- Toolbar2000 (http://www.innosetup.com/tb2k.php)
- Tntware Delphi Unicode Controls (http://www.silverpointdevelopment.com/sptbxlib/TntUnicodeControls.zip)
View
@@ -4,10 +4,7 @@
Date: 23-April-2006
Purpose: Remote debugger using an Rpyc based server
History:
- ToDo : Tk and wx servers
- latest version of rpyc 3.0
- Port to Python 3.x
------------------------------------------------------------------------------}
+ -----------------------------------------------------------------------------}
unit cPyRemoteDebugger;
interface
View
@@ -3432,12 +3432,71 @@ object CommandsDataModule: TCommandsDataModule
item
Name = 'TkServer'
Strings.Strings = (
- 'import Rpyc'
+ 'import sys'
+ 'if len(sys.argv) > 2:'
+ ' sys.path.insert(0, sys.argv[2])'
+ ''
'import Tkinter'
'import threading'
'import gc'
''
+ 'from rpyc.utils.server import Server'
+ 'from rpyc.utils.classic import DEFAULT_SERVER_PORT'
+ 'from rpyc.core import SlaveService'
+ 'from rpyc.utils.logger import Logger'
+ ''
'__traceable__ = 0'
+ ''
+ 'class SimpleServer(Server):'
+ ' def _get_logger(self):'
+
+ ' return Logger(self.service.get_service_name(), console =' +
+ ' None, quiet = True)'
+ ''
+ ' def _accept_method(self, sock):'
+ ' from rpyc.core import SocketStream, Channel, Connection'
+ ' config = dict(self.protocol_config, credentials = None)'
+
+ ' self.conn = Connection(self.service, Channel(SocketStrea' +
+ 'm(sock)),'
+ ' config = config, _lazy = True)'
+ ' self.conn._init_service()'
+ ''
+ 'class ModSlaveService(SlaveService):'
+ ' __slots__ = []'
+ ''
+ ' def on_connect(self):'
+ ' import imp'
+ ' from rpyc.core.service import ModuleNamespace'
+ ''
+ ' sys.modules["__oldmain__"] = sys.modules["__main__"]'
+ ' sys.modules["__main__"] = imp.new_module("__main__")'
+
+ ' self.exposed_namespace = sys.modules["__main__"].__dict_' +
+ '_'
+ ''
+ ' self._conn._config.update(dict('
+ ' allow_all_attrs = True,'
+ ' allow_pickle = True,'
+ ' allow_getattr = True,'
+ ' allow_setattr = True,'
+ ' allow_delattr = True,'
+ ' import_custom_exceptions = True,'
+ ' instantiate_custom_exceptions = True,'
+ ' instantiate_oldstyle_exceptions = True,'
+ ' ))'
+ ' # shortcuts'
+
+ ' self._conn.modules = ModuleNamespace(self._conn.root.get' +
+ 'module)'
+ ' self._conn.eval = self._conn.root.eval'
+ ' self._conn.execute = self._conn.root.execute'
+ ' self._conn.namespace = self._conn.root.namespace'
+ ' if sys.version_info[0] > 2:'
+ ' self._conn.builtin = self._conn.modules.builtins'
+ ' else:'
+ ' self._conn.builtin = self._conn.modules.__builtin__'
+ ''
'running = False'
''
'class GuiPart:'
@@ -3448,49 +3507,43 @@ object CommandsDataModule: TCommandsDataModule
' """'
' Handle messages currently in the queue (if any).'
' """'
- ' global running'
' if self.processing:'
' return'
' else:'
' self.processing = True'
' try:'
- ' while conn.poll():'
- ' pass'
+ ' conn.poll_all()'
' except EOFError:'
+ ' global running'
' running = False'
''
' self.processing = False'
''
'class GuiServer:'
' def __init__(self, master):'
- ' import Rpyc'
- ' from Rpyc.Channel import Channel'
- ' from Rpyc.Connection import Connection'
- ' from Rpyc.Stream import SocketStream'
-
- ' from Rpyc.Utils.Serving import create_listener_socket, D' +
- 'EFAULT_PORT'
- ''
- ' global running'
- ''
' self.master = master'
''
- ' self.conn = None'
+ ' import warnings'
+ ' warnings.simplefilter("ignore", DeprecationWarning)'
''
- ' import sys'
' try:'
' port = int(sys.argv[1])'
' except:'
- ' port = DEFAULT_PORT'
- ' sock = create_listener_socket(port)'
- ' newsock, name = sock.accept()'
- ' channel = Channel(SocketStream(newsock))'
+ ' port = DEFAULT_SERVER_PORT'
''
- ' self.conn = Connection(channel)'
+
+ ' self._server = SimpleServer(ModSlaveService, port = port' +
+ ', auto_register = False)'
+ '## self._server.start()'
+ ' self._server.listener.listen(self._server.backlog)'
+ ' self._server.active = True'
+ ' self._server.listener.settimeout(0.5)'
+ ' self._server.accept()'
''
' # Set up the GUI part'
' self.gui = GuiPart(master)'
''
+ ' global running'
' running = True'
' # Start the periodic call in the GUI to check if the que' +
@@ -3507,13 +3560,15 @@ object CommandsDataModule: TCommandsDataModule
' global running'
' if not running:'
' import sys'
- ' self.conn.close()'
+ ' self._server.conn.close()'
+ ' self._server.close()'
' gc.collect()'
' sys.exit(1)'
- ' if not self.gui.processing:'
- ' self.gui.processIncoming(self.conn)'
+ ' else:'
+ ' if not self.gui.processing:'
+ ' self.gui.processIncoming(self._server.conn)'
''
- ' self.master.after(1, self.periodicCall)'
+ ' self.master.after(1, self.periodicCall)'
''
'def hijack_tk():'
@@ -3556,37 +3611,99 @@ object CommandsDataModule: TCommandsDataModule
item
Name = 'WxServer'
Strings.Strings = (
- 'import Rpyc'
+ 'import sys'
+ 'if len(sys.argv) > 2:'
+ ' sys.path.insert(0, sys.argv[2])'
+ ''
'import wx'
'import threading'
'import gc'
''
'__traceable__ = 0'
'running = False'
''
+ 'from rpyc.utils.server import Server'
+ 'from rpyc.utils.classic import DEFAULT_SERVER_PORT'
+ 'from rpyc.core import SlaveService'
+ 'from rpyc.utils.logger import Logger'
+ ''
+ '__traceable__ = 0'
+ ''
+ 'class SimpleServer(Server):'
+ ' def _get_logger(self):'
+
+ ' return Logger(self.service.get_service_name(), console =' +
+ ' None, quiet = True)'
+ ''
+ ' def _accept_method(self, sock):'
+ ' from rpyc.core import SocketStream, Channel, Connection'
+ ' config = dict(self.protocol_config, credentials = None)'
+
+ ' self.conn = Connection(self.service, Channel(SocketStrea' +
+ 'm(sock)),'
+ ' config = config, _lazy = True)'
+ ' self.conn._init_service()'
+ ''
+ 'class ModSlaveService(SlaveService):'
+ ' __slots__ = []'
+ ''
+ ' def on_connect(self):'
+ ' import imp'
+ ' from rpyc.core.service import ModuleNamespace'
+ ''
+ ' sys.modules["__oldmain__"] = sys.modules["__main__"]'
+ ' sys.modules["__main__"] = imp.new_module("__main__")'
+
+ ' self.exposed_namespace = sys.modules["__main__"].__dict_' +
+ '_'
+ ''
+ ' self._conn._config.update(dict('
+ ' allow_all_attrs = True,'
+ ' allow_pickle = True,'
+ ' allow_getattr = True,'
+ ' allow_setattr = True,'
+ ' allow_delattr = True,'
+ ' import_custom_exceptions = True,'
+ ' instantiate_custom_exceptions = True,'
+ ' instantiate_oldstyle_exceptions = True,'
+ ' ))'
+ ' # shortcuts'
+
+ ' self._conn.modules = ModuleNamespace(self._conn.root.get' +
+ 'module)'
+ ' self._conn.eval = self._conn.root.eval'
+ ' self._conn.execute = self._conn.root.execute'
+ ' self._conn.namespace = self._conn.root.namespace'
+ ' if sys.version_info[0] > 2:'
+ ' self._conn.builtin = self._conn.modules.builtins'
+ ' else:'
+ ' self._conn.builtin = self._conn.modules.__builtin__'
+ ''
'class GuiPart:'
' def __init__(self, master):'
' self.processing = False'
' self.connected = False'
' self.conn = None'
''
' def connect(self):'
- ' from Rpyc.Channel import Channel'
- ' from Rpyc.Connection import Connection'
- ' from Rpyc.Stream import SocketStream'
-
- ' from Rpyc.Utils.Serving import create_listener_socket, D' +
- 'EFAULT_PORT'
+ ' import warnings'
+ ' warnings.simplefilter("ignore", DeprecationWarning)'
''
- ' import sys'
' try:'
' port = int(sys.argv[1])'
' except:'
- ' port = DEFAULT_PORT'
- ' sock = create_listener_socket(port)'
- ' newsock, name = sock.accept()'
- ' channel = Channel(SocketStream(newsock))'
- ' self.conn = Connection(channel)'
+ ' port = DEFAULT_SERVER_PORT'
+ ''
+
+ ' self._server = SimpleServer(ModSlaveService, port = port' +
+ ', auto_register = False)'
+ '## self._server.start()'
+ ' self._server.listener.listen(self._server.backlog)'
+ ' self._server.active = True'
+ ' self._server.listener.settimeout(0.5)'
+ ' self._server.accept()'
+ ''
+ ' self.conn = self._server.conn'
' self.connected = True'
' self.processIncoming()'
''
@@ -3600,8 +3717,7 @@ object CommandsDataModule: TCommandsDataModule
' else:'
' self.processing = True'
' try:'
- ' while self.conn.poll():'
- ' pass'
+ ' self.conn.poll_all()'
' except EOFError:'
' running = False'
''
@@ -3683,7 +3799,7 @@ object CommandsDataModule: TCommandsDataModule
' main()')
end>
Left = 343
- Top = 172
+ Top = 176
end
object dlgFileOpen: TTntOpenDialogLX
Options = [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofEnableSizing]
View
@@ -608,7 +608,7 @@ constructor TPythonIDEOptions.Create;
fNewFileEncoding := sf_Ansi;
fDetectUTF8Encoding := True;
fEditorsTabPosition := ttpBottom;
- fPythonEngineType := peInternal;
+ fPythonEngineType := peRemote;
fPrettyPrintOutput := True;
fSmartNextPrevPage := True;
fAutoReloadChangedFiles := True;
Oops, something went wrong.

0 comments on commit 899e47f

Please sign in to comment.