1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="PythonCard.css" type="text/css" />
<title>Pythoncard Statement of Requirements</title>
</head>
<body>
<div id="banner">
<h1>PythonCard Prototype Samples</h1>
</div>
<?php include "sidebar.php" ?>
<div id="content">
<h2>Statement of Requirements</h2>
<p>Items in <em>italics</em> are still to be decided. The first version of
Pythoncard will support;</p>
<h3>Static Text</h3>
<p>Sometimes known as labels or boilerplate.</p>
<h3>Fields</h3>
<ul>
<li>Single and multi-line fields for text entry. They will support
tab-order between fields (TabOrder, TabIndex properties).</li>
<li><em>Can styled text be supported without complicating the interface and
code?</em></li>
<li><em>Can we get scrolling text fields with scrollbars "for free
"?</em></li>
</ul>
<h3>Buttons</h3>
<ul>
<li>Standard</li>
<li>Radio</li>
<li>Radio button groups <em>- Optional for first release</em></li>
<li>Bitmap Buttons <em>- Optional for first release</em></li>
</ul>
<h3>Data Entry widgets</h3>
<ul>
<li><strong>Checkbox</strong>. Support for tab-order integrated with
field tab order if possible</li>
<li><strong>Listbox</strong>. Scrolling text list. <em>Optional for first
release</em></li>
<li><strong>Combobox</strong>. Drop-down menu list. <em>Optional for first
release</em></li>
</ul>
<h3>Static bitmap</h3>
<p><em>Which formats should be supported(GIF, JPG, BMP, PNG)?</em></p>
<h3>Menus</h3>
<ul>
<li><strong>File</strong>. Exit, Open, Save.</li>
<li><strong>Edit</strong>. Cut, Copy, Paste for fields.</li>
<li><strong>About</strong>. User-defined menus/menu items that are bound
to commands. Could be a sub-menu from help.</li>
<li><strong>Help</strong>. Links to help (in HTML format) and version
information.</li>
</ul>
<h3>Common dialogs</h3>
<ul>
<li>File Open/Save</li>
<li>Message (About)</li>
<li>Choice (Yes/No, Ok/Cancel)</li>
<li>Text entry choice (single field plus Ok/Cancel)</li>
</ul>
<h3>Miscellaneous</h3>
<p>The following items are notes and placeholders for future consideration
that don't fit easily into any of the earlier categories.</p>
<ul>
<li>Clipboard support for textual data (Cut/Copy/Paste).</li>
<li>Overlapping buttons, fields, bitmaps will probably look messy at best
until layering is available, so avoid rect of objects overlapping.</li>
<li>All the widgets should receive and be able to respond to events like:
click(mouseDown), double-click, mouseOver, keyPress, closeField [need to
complete this list for each widget type)</li>
<li>All widget descriptions to be stored in an external resource file.</li>
<li>Initially, the layout might be handled by a variety of programs such as
Boa, wxDesigner, Glade, and then scripts in Python can translate the
resulting output files to our own description format. The format should be
text to allow easy editing of widget properties.</li>
<li>Fixed pixel-based widget positions.</li>
<li>Single layer, unless multi-layer doesn't complicate framework too much</li>
<li>Single card/stack, so no multi-stack issues, messaging between stacks,
etc.</li>
<li>Some kind of idle event so object scripts don't have to block. The
simple example would be that the card object catches the idle event once a
second and calls a method to update a label/field/button with the current
time.</li>
<li>Don't monopolize the CPU.</li>
<li>No printing.</li>
<li>Minimum of one resizable window with initial size defined in the
resource file.</li>
<li>Offscreen buffering of window contents if necessary to preserve
contents when window is obscured, minimized, etc.</li>
<li>Support scrolling of window contents if possible</li>
<li>openCard, closeCard, nextCard, previousCard events can be generated,
but no persistent data store, so the card class will need to be overridden
to support record-level read/write. Those routines will also need to call
methods to clear all fields, reset buttons, and load fields with data.</li>
<li>Objects should be able to call existing Python modules.</li>
</ul>
<?php include "footer.php" ?>
<p>$Revision: 1.4 $ : $Author: kasplat $ : Last updated $Date: 2004/07/26 15:35:31 $</p>
</div> <!-- end of content -->
</body>
</html>
|