[z3-checkins] r13693 - in z3/zopejam/trunk/src: zcmledit zopejam
hathawsh at codespeak.net
hathawsh at codespeak.net
Thu Jun 23 10:06:16 CEST 2005
Author: hathawsh
Date: Thu Jun 23 10:06:11 2005
New Revision: 13693
Added:
z3/zopejam/trunk/src/zopejam/notes.txt
Modified:
z3/zopejam/trunk/src/zcmledit/configfile.py
z3/zopejam/trunk/src/zopejam/inspector.py
z3/zopejam/trunk/src/zopejam/main.py
z3/zopejam/trunk/src/zopejam/resources.xrc
Log:
Populate the "Add" menu and show reasonably good default table columns.
To fit the wide table, also switched to a two-pane layout.
Modified: z3/zopejam/trunk/src/zcmledit/configfile.py
==============================================================================
--- z3/zopejam/trunk/src/zcmledit/configfile.py (original)
+++ z3/zopejam/trunk/src/zcmledit/configfile.py Thu Jun 23 10:06:11 2005
@@ -442,7 +442,6 @@
self.name = self.element.data.get('name')
self.schema = self.element.data.get('schema')
- localname = self.element.data.get('name')
ns = None
parent = self.element.parent
while parent is not None:
@@ -454,7 +453,7 @@
if ns is None:
ns = self.element.data.get('namespace')
- self.fullname = (ns, localname)
+ self.fullname = (ns, self.name)
if self.schema:
if self.schema.startswith('.'):
try:
@@ -469,3 +468,41 @@
self.error = "Missing 'schema' attribute"
self.abs_schema = abs_schema
+
+class BootstrapDefinition:
+ """A bootstrap directive definition.
+
+ Not defined in any configuration file.
+ """
+
+ def __init__(self, ns, name, abs_schema):
+ self.element = None
+ self.error = None
+ self.name = name
+ self.fullname = (ns, name)
+ self.schema = abs_schema
+ self.abs_schema = abs_schema
+
+
+def createBootstrapDefinitions():
+ """Returns a dictionary containing the bootstrap directive definitions"""
+ res = {}
+ for ns, name, schema in [
+ ('*', 'configure', "zope.configuration.zopeconfigure.IZopeConfigure"),
+ ('*', 'include', "zope.configuration.xmlconfig.IInclude"),
+ ('*', 'includeOverride', "zope.configuration.xmlconfig.IInclude"),
+ (META_NS, 'directive',
+ "zope.configuration.config.IFullInfo"),
+ (META_NS, 'groupingDirective',
+ "zope.configuration.config.IFullInfo"),
+ (META_NS, 'directives',
+ "zope.configuration.config.IDirectivesInfo"),
+ (META_NS, 'complexDirective',
+ "zope.configuration.config.IFullInfo"),
+ (META_NS, 'subdirective',
+ "zope.configuration.config.IDirectiveInfo"),
+ (META_NS, 'provides',
+ "zope.configuration.config.IProvidesDirectiveInfo"),
+ ]:
+ res[(ns, name)] = BootstrapDefinition(ns, name, schema)
+ return res
Modified: z3/zopejam/trunk/src/zopejam/inspector.py
==============================================================================
--- z3/zopejam/trunk/src/zopejam/inspector.py (original)
+++ z3/zopejam/trunk/src/zopejam/inspector.py Thu Jun 23 10:06:11 2005
@@ -61,7 +61,7 @@
attrs = {}
for n in obj.names(False):
attrs[n] = obj[n]
- info['attrs'] = attrs
+ info['attributes'] = attrs
else:
info['error'] = 'not an interface; type is %s' % str(type(obj))
return res
Modified: z3/zopejam/trunk/src/zopejam/main.py
==============================================================================
--- z3/zopejam/trunk/src/zopejam/main.py (original)
+++ z3/zopejam/trunk/src/zopejam/main.py Thu Jun 23 10:06:11 2005
@@ -11,17 +11,20 @@
import os
import subprocess
import sys
-import time
import wx
from wx import xrc
-from zcmledit.configfile import ConfigurationFile
+from zcmledit.configfile import ConfigurationFile, createBootstrapDefinitions
+from zope.schema.interfaces import IField
VERSION = '0.1'
+nzo_prefix = 'http://namespaces.zope.org/'
restarting = False
here = os.path.abspath(os.path.dirname(__file__))
+add_menu_ids = {} # {id -> (ns, localname)}
+
class Project:
@@ -38,7 +41,8 @@
def load(self):
self.packages = {} # {package name: [filename]}
self.files = {} # {filename: config_file}
- self.definitions = {} # {(ns, localname): Definition}
+ # self.definitions contains {(ns, localname): Definition}
+ self.definitions = createBootstrapDefinitions()
self.root_config = ConfigurationFile(self.root_filename)
self.files[self.root_filename] = self.root_config
@@ -69,27 +73,13 @@
raise RuntimeError('conflict on %s' % repr(dfn.fullname))
self.definitions[dfn.fullname] = dfn
- if 0:
- print len(self.definitions)
- items = self.definitions.items()
- items.sort()
- for (ns, localname), dfn in items:
- print '{%s}%s: %s' % (ns, localname, dfn.abs_schema)
-
- if 0:
- # profile
- start = time.time()
- count = 0
- for cfg in self.files.values():
- if cfg.root is not None:
- count += len(cfg.root.flattened())
- end = time.time()
- print '%d directives found in %f seconds' % (count, end - start)
+ # load schemas
+ names = [dfn.abs_schema for dfn in self.definitions.values()]
+ self.schemas = self.call_inspector('inspect_interfaces', names)
- self.load_definition_schemas()
+ # self.print_fields()
def call_inspector(self, funcname, *args, **kw):
- start = time.time()
inspector_py = os.path.join(here, 'inspector.py')
env = os.environ.copy()
env['PYTHONPATH'] = os.pathsep.join(self.pythonpath)
@@ -104,17 +94,26 @@
if exit_code:
raise RuntimeError(
"inspector failed with exit code %s" % exit_code)
- print 'pickle size:', len(res_pickle)
res = cPickle.loads(res_pickle)
- end = time.time()
- print "inspect time", end - start
return res
- def load_definition_schemas(self):
- names = [dfn.abs_schema for dfn in self.definitions.values()]
- self.schemas = self.call_inspector('inspect_interfaces', names)
+ def print_fields(self):
+ """Shows how well fields are reused by different directive types."""
+ fields = {} # {(field_name, field_type) -> [schema_name]}
+ for schema_name, info in self.schemas.items():
+ if not info.has_key('attributes'):
+ continue
+ for attr_name, obj in info['attributes'].items():
+ if not IField.providedBy(obj):
+ continue
+ key = (attr_name, type(obj))
+ lst = fields.get(key)
+ if lst is None:
+ lst = []
+ fields[key] = lst
+ lst.append(schema_name)
import pprint
- pprint.pprint(self.schemas)
+ pprint.pprint(fields)
class PaletteImageList(wx.ImageList):
@@ -174,13 +173,21 @@
self.commands.addCallbacks(self)
self.small_palette_images = PaletteImageList(16, 16)
- inctree = xrc.XRCCTRL(self.frame, 'include_tree')
+ inctree = xrc.XRCCTRL(self.frame, 'structure_tree')
inctree.SetImageList(self.small_palette_images)
pkgtree = xrc.XRCCTRL(self.frame, 'package_tree')
pkgtree.SetImageList(self.small_palette_images)
self.alldirs = DirectiveList(
self, xrc.XRCCTRL(self.frame, 'directive_list_panel'))
+
+ self.tip_frame = resources.LoadFrame(self.frame, 'tip_frame')
+ self.tip_frame.Fit()
+ self.frame.Bind(wx.EVT_MENU_HIGHLIGHT_ALL, self.onMenuHighlight)
+ self.tip_hide_timer = wx.Timer()
+ self.tip_hide_timer.Bind(
+ wx.EVT_TIMER, lambda event: self.tip_frame.Hide())
+
self.project = None
self.frame.Fit()
@@ -254,6 +261,7 @@
fn = os.path.abspath(root_zcml.GetValue())
self.project = Project(fn)
self.project.load()
+ self.frame.SetTitle('Zope Jam - %s' % self.project.root_filename)
self.populate()
self.update_commands_enabled()
@@ -294,32 +302,45 @@
self.frame.Close()
def populate(self):
- inctree = xrc.XRCCTRL(self.frame, 'include_tree')
- inctree.DeleteAllItems()
+ # clear the package tree
pkgtree = xrc.XRCCTRL(self.frame, 'package_tree')
pkgtree.DeleteAllItems()
+
+ # clear the structure tree
+ structure = xrc.XRCCTRL(self.frame, 'structure_tree')
+ structure.DeleteAllItems()
+
+ # clear the add menu
+ menubar = self.frame.GetMenuBar()
+ addmenu = menubar.GetMenu(2)
+ for item in addmenu.GetMenuItems():
+ addmenu.Destroy(item)
+
if self.project is None:
return
images = self.small_palette_images
- incroot = inctree.AddRoot('')
+ incroot = structure.AddRoot('')
todo = [(incroot, self.project.root_config)]
while todo:
parent, cfg = todo.pop(0)
- label = os.path.basename(cfg.filename)
+ label = "%s" % os.path.basename(cfg.filename)
data = wx.TreeItemData(cfg)
image = images.get('zcmlfile', -1)
- child = inctree.AppendItem(parent, label, image=image, data=data)
+ child = structure.AppendItem(parent, label, image=image, data=data)
for resolver in cfg.includes:
data = wx.TreeItemData(resolver)
f = resolver.files or resolver.file
if resolver.abs_package:
- label = '[%s] %s' % (resolver.abs_package, f)
+ if f == 'configure.zcml':
+ label = resolver.abs_package
+ else:
+ label = '%s "%s"' % (resolver.abs_package, f)
else:
- label = f
+ label = '"%s"' % f
image_name = '%s_%s' % (
resolver.override and 'includeoverride' or 'include',
@@ -327,17 +348,17 @@
)
image = images.get(image_name, -1)
- gchild = inctree.AppendItem(
+ gchild = structure.AppendItem(
child, label, image=image, data=data)
for fn in resolver.listFiles():
cfg = self.project.files[fn]
todo.append((gchild, cfg))
# expand the visible roots
- child, cookie = inctree.GetFirstChild(incroot)
+ child, cookie = structure.GetFirstChild(incroot)
while child:
- inctree.Expand(child)
- child, cookie = inctree.GetNextChild(incroot, cookie)
+ structure.Expand(child)
+ child, cookie = structure.GetNextChild(incroot, cookie)
# populate pkgtree
pkgroot = pkgtree.AddRoot('')
@@ -356,6 +377,98 @@
label = self.shortenPath(filename)
pkgtree.AppendItem(pkgid, label, image=file_image)
+ # prepare reverse_menu_ids
+ reverse_menu_ids = {}
+ for item_id, fullname in add_menu_ids.items():
+ reverse_menu_ids[fullname] = item_id
+
+ # figure out what should go in the add menu
+ options = {} # {(label, namespace): [(localname, item_id)]}
+ for fullname in self.project.definitions.keys():
+ item_id = reverse_menu_ids.get(fullname)
+ if item_id is None:
+ item_id = wx.NewId()
+ reverse_menu_ids[fullname] = item_id
+ add_menu_ids[item_id] = fullname
+ ns, localname = fullname
+ if ns.startswith(nzo_prefix):
+ label = ns[len(nzo_prefix):]
+ else:
+ label = ns
+ key = (label, ns)
+ names = options.get(key)
+ if names is None:
+ names = []
+ options[key] = names
+ names.append((localname, item_id))
+
+ # populate the add menu
+ options = options.items()
+ options.sort()
+ for (label, ns), names in options:
+ m = wx.Menu()
+ names.sort()
+ for name, item_id in names:
+ m.Append(item_id, name)
+ addmenu.AppendMenu(-1, label, m)
+
+
+ def onMenuHighlight(self, event):
+ item_id = event.GetId()
+ if item_id > 0:
+ fullname = add_menu_ids.get(item_id)
+ else:
+ fullname = None
+ if not fullname:
+ # hide the tip soon
+ if not self.tip_hide_timer.IsRunning():
+ self.tip_hide_timer.Start(500, wx.TIMER_ONE_SHOT)
+ return
+
+ dfn = self.project.definitions[fullname]
+ schema_info = self.project.schemas.get(dfn.abs_schema)
+ if schema_info.get('error'):
+ doc = ('An error occurred while loading the '
+ 'schema for this directive: %s' % schema_info['error'])
+ else:
+ doc = self.join_lines(schema_info.get('doc', ''))
+ if not doc:
+ doc = 'No documentation available.'
+
+ ns, localname = fullname
+ if ns.startswith(nzo_prefix):
+ label = ns[len(nzo_prefix):]
+ else:
+ label = ns
+
+ tip_text = xrc.XRCCTRL(self.tip_frame, "tip_text")
+ tip_text.SetValue("Directive: %s:%s\n\n%s" % (label, localname, doc))
+
+ self.tip_hide_timer.Stop()
+ if not self.tip_frame.IsShown():
+ x, y = self.frame.GetPositionTuple()
+ w, h = self.frame.GetSizeTuple()
+ x += w - self.tip_frame.GetSizeTuple()[0]
+ y += 50
+ self.tip_frame.MoveXY(x, y)
+ self.tip_frame.Show()
+
+
+ def join_lines(self, text):
+ """Join text lines together, allowing a text box to wrap cleanly"""
+ lines = text.split('\n')
+ res = ['']
+ for line in lines:
+ line = line.strip()
+ if not line:
+ res.append(line)
+ elif res[-1]:
+ res[-1] += ' ' + line
+ else:
+ res.append(line)
+ return '\n'.join(res[1:]).strip()
+
+
def shortenPath(self, p):
if self.project is None:
return p
@@ -375,17 +488,15 @@
self.filter = Filter(gui, xrc.XRCCTRL(panel, 'filter_panel'))
self.listctrl = xrc.XRCCTRL(panel, 'dir_list')
- images = wx.ImageList(16, 16)
- image = wx.Image(os.path.join(here, 'icons', 'other', 'tree.png'))
- bitmap = wx.BitmapFromImage(image)
- images.Add(bitmap)
- self.listctrl.AssignImageList(images, wx.IMAGE_LIST_SMALL)
- treecol = wx.ListItem()
- treecol.SetImage(0)
- treecol.SetWidth(32)
- self.listctrl.InsertColumnItem(0, treecol)
- self.listctrl.InsertColumn(1, 'Type')
- self.listctrl.InsertColumn(2, 'Name')
+ self.listctrl.InsertColumn(0, 'Source File', width=125)
+ self.listctrl.InsertColumn(1, 'Directive', width=100)
+ self.listctrl.InsertColumn(2, 'Name / Id', width=80)
+ self.listctrl.InsertColumn(3, 'For', width=100)
+ self.listctrl.InsertColumn(4, 'Provides', width=100)
+ self.listctrl.InsertColumn(5, 'Factory / Class', width=100)
+ self.listctrl.InsertColumn(6, 'Permission', width=80)
+ self.listctrl.InsertColumn(7, 'Interface', width=80)
+ self.listctrl.InsertColumn(8, 'File', width=80)
self.listctrl.InsertStringItem(0, 'test')
Added: z3/zopejam/trunk/src/zopejam/notes.txt
==============================================================================
--- (empty file)
+++ z3/zopejam/trunk/src/zopejam/notes.txt Thu Jun 23 10:06:11 2005
@@ -0,0 +1,56 @@
+
+
+Interesting Columns:
+
+ Description (MessageID or TextLine)
+ Name (TextLine)
+ Title (MessageID or TextLine)
+ Id (Id, TextLine, BytesLine, or PythonIdentifier)
+ Label (MessageId or TextLine)
+
+ Class (GlobalObject)
+ Interface (GlobalInterface or Tokens)
+ Factory / Content Factory (GlobalObject, Tokens, or Id)
+ Provides (GlobalInterface)
+ For (GlobalInterface, GlobalObject, Tokens, or URI)
+ Component (GlobalObject)
+ Type (GlobalInterface)
+
+ Permission (Permission)
+ Layer (LayerField or GlobalObject)
+ Layers (Tokens)
+ Menu (MenuField)
+
+
+Overloaded names (only significant variance; tokens vs. singular
+doesn't count):
+
+ factory (6 GlobalObject, 1 Id)
+ for_ (about 15 GlobalObject/Interface; 1 URI)
+ layer
+ view
+
+
+
+Start with columns:
+
+ Configuration File (hierarchical)
+ Directive
+ Name / Id
+ Interface / Schema
+ Factory / Class / Handler [/Content Factory]
+ Require
+ Provide
+ File / Path / Template
+ Permission
+
+
+ Title / Label
+ Fields / Attributes / Allowed Interface
+ Menu
+
+
+Flags:
+
+ - Trusted adapter
+ - IContentType interfaces
Modified: z3/zopejam/trunk/src/zopejam/resources.xrc
==============================================================================
--- z3/zopejam/trunk/src/zopejam/resources.xrc (original)
+++ z3/zopejam/trunk/src/zopejam/resources.xrc Thu Jun 23 10:06:11 2005
@@ -187,260 +187,231 @@
</object>
</object>
<object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <growablerows>0</growablerows>
+ <vgap>4</vgap>
+ <growablecols>0</growablecols>
<object class="sizeritem">
- <object class="wxSplitterWindow" name="frame_split">
+ <object class="wxSplitterWindow" name="main_split">
+ <orientation>horizontal</orientation>
<object class="wxPanel">
<object class="wxFlexGridSizer">
<cols>1</cols>
+ <growablerows>0</growablerows>
+ <growablecols>0</growablecols>
<object class="sizeritem">
- <object class="wxNotebook" name="side_notebook">
+ <object class="wxNotebook" name="files_notebook">
<object class="notebookpage">
- <label>Palette</label>
- <object class="wxPanel">
+ <label>Directives</label>
+ <object class="wxPanel" name="directive_list_panel">
<object class="wxFlexGridSizer">
+ <object class="sizeritem">
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>2</rows>
+ <object class="sizeritem">
+ <object class="wxStaticText">
+ <label>Filter:</label>
+ </object>
+ <flag>wxRIGHT|wxALIGN_CENTRE_VERTICAL</flag>
+ <border>4</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxPanel" name="filter_panel">
+ <object class="wxFlexGridSizer">
+ <cols>3</cols>
+ <object class="sizeritem">
+ <object class="wxStaticBitmap" name="filter_type">
+ <bitmap>icons/other/find.png</bitmap>
+ </object>
+ <flag>wxALL|wxALIGN_CENTRE</flag>
+ <border>2</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="filter_expr">
+ <value>Entire Directive</value>
+ <style>wxTE_PROCESS_ENTER|wxNO_BORDER</style>
+ </object>
+ <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>
+ </object>
+ <object class="sizeritem">
+ <object class="wxStaticBitmap" name="filter_clear">
+ <bitmap>icons/other/clear_left.png</bitmap>
+ <hidden>1</hidden>
+ </object>
+ <flag>wxALL|wxALIGN_CENTRE</flag>
+ <border>2</border>
+ </object>
+ <growablecols>1</growablecols>
+ <growablerows>0</growablerows>
+ </object>
+ <style>wxSUNKEN_BORDER</style>
+ <bg>#FFFFFF</bg>
+ </object>
+ <flag>wxBOTTOM|wxRIGHT|wxEXPAND</flag>
+ <border>1</border>
+ <minsize>250, 22</minsize>
+ </object>
+ </object>
+ <flag>wxALIGN_RIGHT</flag>
+ </object>
<cols>1</cols>
- <growablerows>0</growablerows>
+ <growablerows>1</growablerows>
<growablecols>0</growablecols>
<object class="sizeritem">
- <object class="wxSplitterWindow" name="palette_split">
- <orientation>horizontal</orientation>
- <object class="wxListCtrl" name="palette">
- <style>wxLC_ICON</style>
- </object>
- <object class="wxListCtrl" name="palette_list">
- <style>wxLC_ICON</style>
+ <object class="wxPanel">
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <object class="sizeritem">
+ <object class="wxBitmapButton" name="select_columns_button">
+ <bitmap>icons/other/configure_toolbars.png</bitmap>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <object class="wxListCtrl" name="dir_list">
+ <style>wxLC_REPORT</style>
+ <bg>#FFFFFF</bg>
+ </object>
+ <flag>wxEXPAND</flag>
</object>
+ <growablerows>0</growablerows>
+ <growablecols>1</growablecols>
+ </object>
+ <style>wxSUNKEN_BORDER</style>
+ <bg>#FFFFFF</bg>
</object>
<flag>wxEXPAND</flag>
- </object>
+ </object>
</object>
- <style>wxSUNKEN_BORDER</style>
</object>
- </object>
+ </object>
<object class="notebookpage">
- <label>Includes</label>
- <object class="wxTreeCtrl" name="include_tree">
+ <label>Packages</label>
+ <object class="wxTreeCtrl" name="package_tree">
<style>wxTR_HAS_BUTTONS|wxTR_HIDE_ROOT|wxSUNKEN_BORDER</style>
</object>
</object>
<object class="notebookpage">
- <label>Packages</label>
- <object class="wxTreeCtrl" name="package_tree">
+ <label>Structure</label>
+ <object class="wxTreeCtrl" name="structure_tree">
<style>wxTR_HAS_BUTTONS|wxTR_HIDE_ROOT|wxSUNKEN_BORDER</style>
</object>
</object>
</object>
- <flag>wxRIGHT|wxEXPAND</flag>
+ <flag>wxBOTTOM|wxEXPAND</flag>
<border>1</border>
- </object>
- <growablerows>0</growablerows>
- <growablecols>0</growablecols>
+ </object>
</object>
</object>
<object class="wxPanel">
<object class="wxFlexGridSizer">
<cols>1</cols>
+ <growablerows>0</growablerows>
+ <growablecols>0</growablecols>
<object class="sizeritem">
- <object class="wxSplitterWindow" name="main_split">
- <orientation>horizontal</orientation>
- <object class="wxPanel">
- <object class="wxFlexGridSizer">
- <cols>1</cols>
- <growablerows>0</growablerows>
- <growablecols>0</growablecols>
- <object class="sizeritem">
- <object class="wxNotebook" name="files_notebook">
- <object class="notebookpage">
- <label>All Directives</label>
- <object class="wxPanel" name="directive_list_panel">
- <object class="wxFlexGridSizer">
- <object class="sizeritem">
- <object class="wxFlexGridSizer">
- <cols>2</cols>
- <rows>2</rows>
- <object class="sizeritem">
- <object class="wxStaticText">
- <label>Filter:</label>
- </object>
- <flag>wxRIGHT|wxALIGN_CENTRE_VERTICAL</flag>
- <border>4</border>
- </object>
- <object class="sizeritem">
- <object class="wxPanel" name="filter_panel">
- <object class="wxFlexGridSizer">
- <cols>3</cols>
- <object class="sizeritem">
- <object class="wxStaticBitmap" name="filter_type">
- <bitmap>icons/other/find.png</bitmap>
- </object>
- <flag>wxALL|wxALIGN_CENTRE</flag>
- <border>2</border>
- </object>
- <object class="sizeritem">
- <object class="wxTextCtrl" name="filter_expr">
- <value>Entire Directive</value>
- <style>wxTE_PROCESS_ENTER|wxNO_BORDER</style>
- </object>
- <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL</flag>
- </object>
- <object class="sizeritem">
- <object class="wxStaticBitmap" name="filter_clear">
- <bitmap>icons/other/clear_left.png</bitmap>
- <hidden>1</hidden>
- </object>
- <flag>wxALL|wxALIGN_CENTRE</flag>
- <border>2</border>
- </object>
- <growablecols>1</growablecols>
- <growablerows>0</growablerows>
- </object>
- <style>wxSUNKEN_BORDER</style>
- <bg>#FFFFFF</bg>
- </object>
- <flag>wxBOTTOM|wxRIGHT|wxEXPAND</flag>
- <border>1</border>
- <minsize>250, 22</minsize>
- </object>
- </object>
- <flag>wxALIGN_RIGHT</flag>
- </object>
- <cols>1</cols>
- <growablerows>1</growablerows>
- <growablecols>0</growablecols>
- <object class="sizeritem">
- <object class="wxPanel">
- <object class="wxFlexGridSizer">
- <cols>2</cols>
- <object class="sizeritem">
- <object class="wxBitmapButton" name="select_columns_button">
- <bitmap>icons/other/configure_toolbars.png</bitmap>
- </object>
- </object>
- <object class="sizeritem">
- <object class="wxListCtrl" name="dir_list">
- <style>wxLC_REPORT</style>
- <bg>#FFFFFF</bg>
- </object>
- <flag>wxEXPAND</flag>
- </object>
- <growablerows>0</growablerows>
- <growablecols>1</growablecols>
- </object>
- <style>wxSUNKEN_BORDER</style>
- <bg>#FFFFFF</bg>
- </object>
- <flag>wxEXPAND</flag>
- </object>
- </object>
- </object>
- </object>
- </object>
- <flag>wxBOTTOM|wxEXPAND</flag>
- <border>1</border>
- </object>
- </object>
- </object>
- <object class="wxPanel">
- <object class="wxFlexGridSizer">
- <cols>1</cols>
- <growablerows>0</growablerows>
- <growablecols>0</growablecols>
- <object class="sizeritem">
- <object class="wxNotebook" name="directive_notebook">
- <object class="notebookpage">
- <label>Properties</label>
- <object class="wxScrolledWindow" name="properties_tab">
- <object class="wxPanel" name="properties_panel">
- <object class="wxBoxSizer">
- <orient>wxVERTICAL</orient>
- <object class="sizeritem">
- <object class="wxFlexGridSizer">
- <cols>4</cols>
- <vgap>8</vgap>
- <object class="sizeritem">
- <object class="wxStaticText">
- <label>Name</label>
+ <object class="wxNotebook" name="directive_notebook">
+ <object class="notebookpage">
+ <label>Properties</label>
+ <object class="wxScrolledWindow" name="properties_tab">
+ <object class="wxPanel" name="properties_panel">
+ <object class="wxBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <object class="wxFlexGridSizer">
+ <cols>4</cols>
+ <vgap>8</vgap>
+ <object class="sizeritem">
+ <object class="wxStaticText">
+ <label>Name</label>
</object>
- <flag>wxRIGHT|wxALIGN_CENTRE_VERTICAL</flag>
- <border>8</border>
+ <flag>wxRIGHT|wxALIGN_CENTRE_VERTICAL</flag>
+ <border>8</border>
</object>
- <object class="sizeritem">
- <object class="wxTextCtrl">
- <value>Foo</value>
+ <object class="sizeritem">
+ <object class="wxTextCtrl">
+ <value>Foo</value>
</object>
- <flag>wxEXPAND|wxALIGN_CENTRE</flag>
+ <flag>wxEXPAND|wxALIGN_CENTRE</flag>
</object>
- <object class="sizeritem">
- <object class="wxBitmapButton">
- <bitmap>icons/other/clear_left.png</bitmap>
- <style>wxNO_BORDER</style>
+ <object class="sizeritem">
+ <object class="wxBitmapButton">
+ <bitmap>icons/other/clear_left.png</bitmap>
+ <style>wxNO_BORDER</style>
</object>
- <flag>wxALIGN_CENTRE_VERTICAL</flag>
+ <flag>wxALIGN_CENTRE_VERTICAL</flag>
</object>
- <object class="sizeritem">
- <object class="wxBitmapButton">
- <bitmap>icons/other/help.png</bitmap>
- <style>wxNO_BORDER</style>
+ <object class="sizeritem">
+ <object class="wxBitmapButton">
+ <bitmap>icons/other/help.png</bitmap>
+ <style>wxNO_BORDER</style>
</object>
- <flag>wxALIGN_CENTRE_VERTICAL</flag>
+ <flag>wxALIGN_CENTRE_VERTICAL</flag>
</object>
- <growablecols>1</growablecols>
- </object>
- <flag>wxALL|wxEXPAND</flag>
- <border>8</border>
+ <growablecols>1</growablecols>
</object>
- </object>
- </object>
+ <flag>wxALL|wxEXPAND</flag>
+ <border>8</border>
</object>
- <selected>1</selected>
+ </object>
+ </object>
</object>
- <style></style>
- <object class="notebookpage">
- <label>Source</label>
- <object class="wxHtmlWindow" name="source_tab">
- <htmlcode><a href="#">/home/shane/src/zope/app/bigpackage/littlepackage/configure.zcml</a><br />
+ <selected>1</selected>
+ </object>
+ <style></style>
+ <object class="notebookpage">
+ <label>Source</label>
+ <object class="wxHtmlWindow" name="source_tab">
+ <htmlcode><a href="#">/home/shane/src/zope/app/bigpackage/littlepackage/configure.zcml</a><br />
line <a href="#">105</a><br />
&lt;browser:page x="y"&gt;
</htmlcode>
</object>
</object>
- <object class="notebookpage">
- <label>Adapters</label>
- <object class="wxPanel" name="adapters_tab"/>
- </object>
- <object class="notebookpage">
- <label>Views</label>
- <object class="wxPanel" name="views_tab"/>
- </object>
- <object class="notebookpage">
- <label>Code</label>
- <object class="wxHtmlWindow" name="code_tab"/>
+ <object class="notebookpage">
+ <label>Adapters</label>
+ <object class="wxPanel" name="adapters_tab"/>
</object>
- </object>
- <flag>wxTOP|wxEXPAND</flag>
- <border>1</border>
- </object>
+ <object class="notebookpage">
+ <label>Views</label>
+ <object class="wxPanel" name="views_tab"/>
+ </object>
+ <object class="notebookpage">
+ <label>Code</label>
+ <object class="wxHtmlWindow" name="code_tab"/>
</object>
- </object>
- <minsize>100</minsize>
</object>
- <flag>wxLEFT|wxEXPAND</flag>
+ <flag>wxTOP|wxEXPAND</flag>
<border>1</border>
- </object>
- <growablerows>0</growablerows>
- <growablecols>0</growablecols>
+ </object>
</object>
</object>
- <orientation>vertical</orientation>
- <sashpos>350</sashpos>
- <minsize>100</minsize>
+ <minsize>150</minsize>
</object>
- <flag>wxEXPAND</flag>
- <minsize>950, 700</minsize>
+ <flag>wxLEFT|wxEXPAND</flag>
+ <border>1</border>
+ <minsize>890, 700</minsize>
+ </object>
+ <object class="sizeritem">
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <object class="sizeritem">
+ <object class="wxStaticText" name="status_label">
+ <label></label>
+ </object>
+ <flag>wxEXPAND|wxALIGN_BOTTOM</flag>
+ <minsize>300, 16</minsize>
+ </object>
+ <object class="sizeritem">
+ <object class="wxPanel" name="project_name_panel"/>
+ <flag>wxEXPAND</flag>
+ <minsize>400, 16</minsize>
+ </object>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ </object>
+ <flag>wxALL|wxEXPAND</flag>
+ <border>2</border>
</object>
- <cols>1</cols>
- <growablerows>0</growablerows>
- <growablecols>0</growablecols>
</object>
<centered>1</centered>
</object>
@@ -805,4 +776,24 @@
<growablerows>1</growablerows>
</object>
</object>
+ <object class="wxFrame" name="tip_frame">
+ <title></title>
+ <style>wxFRAME_NO_TASKBAR|wxNO_BORDER</style>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <object class="sizeritem">
+ <object class="wxTextCtrl" name="tip_text">
+ <value>abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef abcdef </value>
+ <style>wxTE_MULTILINE|wxNO_BORDER</style>
+ <bg>#FFFFC0</bg>
+ </object>
+ <flag>wxALL|wxEXPAND</flag>
+ <border>4</border>
+ <minsize>400, 400</minsize>
+ </object>
+ <growablerows>0</growablerows>
+ <growablecols>0</growablecols>
+ </object>
+ <bg>#FFFFC0</bg>
+ </object>
</resource>
More information about the z3-checkins
mailing list