You are not logged in Log in Join
You are here: Home » Members » greulen » Zope Stud » Read me 0.5 b

Log in
Name

Password

 
 

Zope Stud

version is 0.5B

Zope Stud: For easier development of the visual part

  • use your own editor for editing methods and documents
  • build-in browser for fast preview of Zope rendered pages
  • copy and move objects by drag'n and drop'n

Whats in a name ?
While waiting for the arrival of Zope Studio I wanted something which enabled me to use my own editing tools for Zope. Experimenting with XMLRPC created the basis for Zope Stud. I think 'Stud' offers only part of the functionality of 'Studio'. Therefore the shorter name :-)

Zope Stud is written in Pascal with Borland Delphi 5, something I am very familiar with. By the end of 2000 also a version for Linux will be released. Both platforms will be source compatible.

To offer help, remarks, ideas, tips, errors or just corrections on my English: Gijs Reulen [email protected]

Requirements:
Windows operating system version 95 or higher
Internet Explorer 5.x should be installed (maybe 4.x works also ?)

Getting started:
Unzip the file and save the contents in a new directory. Click on ZopeStud.exe to start. First the Settings form will appear. Fill in all the info needed for your local or remote Zope server. Click on the Save button to save all the settings and/or click on Connect to contact the server. When connecting to a server, Zope Stud will check if the DTML Document 'ZopeStudProbe' is available. When not it will automatically install it. This probe is needed to collect info on all the objects in the Zope tree. Doing that with the standard XMLRPC calls is very time-consuming because then for every object several calls would be needed. When called, ZopeStudProbe collects all the info locally and returns it in one single call.

In the Settings you can also configure what kind of editor you would like to use (see Current Issues for some comments on this !). For every document or method you would like to open, Zope Stud saves the source to a temporary file and opens that file in a new editor. Therefore you can edit several methods/documents at once.

External editor
Because Zope Stud is not aware what actions are performed by an external editor, it checks every few seconds the date and time of all the temporary files it created. If one has changed, it will load that file again into the method/document it was created from before.

TheEditor
The internal editor is called TheEditor and is fully integrated into Zope Stud. That means Zope Stud knows what window is editing what source and if that window is open. Also the transfer of the (modified) source is done through memory and therefore somewhat faster and more failure proof.

If in Settings, Editor, the option 'show page in browser after save' is checked, then the page will instantly be refreshed in the browser !

Statusbar, from left to right:
current host; number of objects found until now (increases when new objects are opened); total size of the objects found until now (not implemented yet); the time in seconds:milliseconds the last XML or HTTP call took, as an indication for the connection speed.

Use:
click on any item in the tree to view it in the browser window
double click on any item in the tree to open it (list folder contents or edit a method/document)
right-click on an item in the tree view for options
right-click in browser view for options (standard Explorer)

Shortcut keys in tree view:
Arrow keys - move around in the tree
Del - deletes an object
Return - open the object (same as double click)
Insert - add a new object
Alt+O - open Options-menu

How does it work ?
The retrieving and saving of method/document sources and the creation and deletion of objects is all done with XMLRPC calls. The call to ZopeStudProbe is done with HTTP; otherwise I had to wrap the resulting list in XML and I was to lazy for that :-)
The icons for all the objects are added by hand into Zope Stud itself. These icons where the ones I found on my system. For objects that Zope Stud has no icon, I created a question mark icon.
The browser view is actually Internet Explorer in a custom window.
Zope Stud retrieves only the objects in the current layer of the tree. Each time an object in that layer is double-clicked, it tries to retrieve the objects within that object (or layer). For each object the returned information is saved internally. With that, also some other information like currently being edited, last edit, etc is stored.

Current issues:

  • Important: does anybody else think this application is usefull ?!
  • Given enough interest in using and co-developing, I will clean up the code, document is better and make it public.
  • On my Win2000 computer, Zope Stud is not able to start another application (except for notepad.exe), for example another editor.
    However, it should work on yours ? Please report whether it does or not.
    This is the main reason I implemented my own editor for Zope Stud: TheEditor.
  • The Probe used by Zope Stud originally also includes the date and time an object was last modified. This was done by adding:
    datetime_<dtml-var id>=<dtml-var bobobase_modification_time fmt="fCommon">
    This worked ok on my local server but results in an error on my remote server. I do not know why. Maybe you know ?
Delphi source related:
  • In the TreeView, TreeNode.AbsoluteIndex is now used to uniqely identify Nodes; but will it always the same when nodes higher are added or deleted ? Maybe better to use ItemID, but is impossible to typecast into something else.
  • The datetime returned by bobobase_modification_date is handled as a string. Some kind of conversion to Delphi datetime would be nice.

Future ?
'XMLRPC' means how can this be done with XMLRPC calls.
'DELPHI' means the Zope/XMLRPC part is clear, waiting for (better) implemementation in Delphi.

  • DELPHI: the browser seems to have sometimes its own login for manage ? Remove, how ?
  • DELPHI: add image files
  • XMLRPC: add/delete/edit object properties
  • XMLRPC: add/delete/edit security/roles
  • XMLRPC: edit/add other objects
  • XMLRPC: auto download icons for objects to known to Zope Stud
  • DELPHI: the form with object info and properties should have a more professional Delphi-like implementation
  • DELPHI: drag and drop of files to and from the desktop
  • DELPHI: Be able to stop a pending XML/HTTP call (set a time-out ?)
  • DELPHI: highlight of dtml related stuff in TheEditor
  • DELPHI: build-in ftp: save export files to the remote export dir, edit remote Python External Methods
  • DELPHI: wrap data for each object in the tree in an internal object (now a record)
  • DELPHI: treenode data should be object with methods like: update, show (in viewer)
  • DELPHI: when browsing, extract current url and auto-select correct object the page came from (possible ?)
So far Zope Stud is able to communicate through XMPRPC and HTTP. Maybe adding other interfaces (like FTP) enables it to do some more interesting things ?