[MD1] Raven 1.4
TweetFollow Us on Twitter

[MD1] Raven 1.4

Raven is a C++ application framework that is, IMO, in many ways superior to
both PowerPlant and MacApp. It's free and source code is included. You can
find Raven at:

(ftp://ftp.halcyon.com//pub/users/jesjones/Raven 1.4.sit)
(ftp://ftp.halcyon.com//pub/users/jesjones/Raven 1.4 Examples.sit)

The changes in Raven 1.4 are listed below.

Jesse Jones
jesjones@halcyon.com

Known Bugs:

* Stack crawl doesn't have symbol names if virtual memory is on.

* DTS has confirmed a bug in the 1.0.1 Appearance Extension: if a window's
procID is kWindowModalDialogProc or kWindowAlertProc the window is not
actually modal (ie the user can switch out of the app).

General Notes:

* This release of Raven requires CodeWarrior Pro 3 (there were too many
changes required to stay compatible with Pro 2). To port your old Raven
code to 1.4 you'll need to do the following:

* Make you code namespace savvy. The easiest way to do this is
to add the following to your headers:

using namespace Raven;
using namespace std;

* Be sure to put Raven and standard library forward references
inside a namespace declaration:

namespace Raven {
class TInStream;
class TOutStream;
}

* You may have trouble using operator!= with strings. If this
happens write the comparison like this:

if (!(str1 == str2))

* Include a few new files in your project. These include
ZStreaming.cpp, MoreFilesCW.PPC, and the extension classes
(these are spread out into the Extensions, Pane, and App folders).

Bug Fixes and Design Changes:

* TDocApplication and TDocument have been changed so that they clearly
delineate between creating a new document and opening an old document:

* HandleNew and OnNew methods have been added to TDocument.

* HandleNew, OnNew, OnOpen, OnCreateNewDoc, and OnCreateOldDoc
methods have been added to TDocApplication.

* OnCreateDoc and OnOpenDoc have been obsoleted (they're still
defined, but with different signatures so the compiler should
inform you where you need to make changes).

* In Raven 1.3 there were three mixin classes that allowed you to change
the behavior of an object at run time: MAdornable, MBehaviorable, and
MAtributable. In Raven 1.4 these are gone. Instead there's a single mixin
called MExtensible which allows you to attach arbitrary extension objects.
If you're attaching adorners using Quill your old code will continue to
work. If you're doing this stuff at run time you'll have to do a bit of
renaming.

* The Debug menu is now handled using debug extensions. You can override
TApplication:: OnCreateDebugExtensions to change which extensions are used
or to add your own extensions. You can also add and remove debug extensions
dynamicly.

* The TMenu and TMenuBar classes have been largely rewritten. This was done
to make it possible for submenus to be added and removed at run time. Most
of this is transparent to clients, but there are a few things that may
affect you:

* TMenu::AddItem has been renamed AppendItem.

* You should not use TMenu::AppendItem or InsertItem to add
seperator lines. Instead use the new AppendSeperator and
InsertSeperator methods.

* RemoveEveryItem has been replaced by DeleteItems.

* Renamed TMenuBar::RemoveMenus DeleteMenus.

* TMenuBar::GetMenuByIndex no longer returns submenus.

* Worked on error handling:

* ReportError has been changed to better match the new StandardAlert
convention of breaking the message into a summary and a narrative section.
If you call ReportError you should make sure the second string is a
complete sentence (see ZMiscUtils.h for examples).

* DefaultErrorHandler uses a new alert on system's without
the Appearance Manager.

* Rewrote many of the strings in the error code to string
mapping in the 'STRX' resource (Raven.r).

* ZMiscUtils.h allows you to replace the function used to
map error codes to strings.

* TApplication::OnUncaughtException says "Couldn't complete
the operation." instead of "Unknown error".

* Revised all the throw statements to conform to the new guidelines.

* Revised calls to ReportError to conform to new guidelines.

* TWindow now uses the correct brushes for alert and floating windows.

* TWindow::OnBroadcast doesn't set the latent target if the new pane is a
pane that isn't a subPane of the window.

* Fixed TBuildWindowRegions so that it works on 68K's.

* TWindowMenuMgr only enables tool window menu items if they can operate on
the front regular window.

* TView::DoGetOpaqueSubPanes uses GetVisibleExtent (so, for example, text
boxes in Quill clip correctly).

* Fixed ZScrollerScrollBar::GetPageDelta to work properly when scroll units
isn't one.

* Fixed TScrollableView::DoScrollBits so that it works when the pane's
window is behind another window (eg the window being scrolled might be
behind a floater).

* Fixed several problems with scrolled table views (thanks to Ron Wilson).

* The examples and T2DGraph::OnMouseDown check for the Drag Manager before
calling WaitMouseMoved.

* MDragSource::OnDragStop calls MDragTarget::StoppingDrag even if the drag
didn't succeed.

* Pane adorners are now clipped to the pane's superView instead of to the
pane (this allows adorners like TFocusRectAdorner to safely draw outside
the lines).

* Fixed MCommander::HandleMenuCommand TRACEFLOW (it was printing a string
as an int).

* TFile::Seek uses an int32 for offset (instead of a uint32).

* Updated UNavigationServices for (yet more) changes to the SDK:

* Put the NavPutFile arguments in the correct order.

* GetFile and PutFile no longer throw if the user cancels (Nav
Services now returns userCanceledErr when the user cancels).

* NavGetFile 1.0f4c3 will crash if the current port is bad so
I'm setting the port to the work port before popping up Nav
dialogs.

* TInHandleStream::OnReadBytes throws a TRuntimeException instead of a string.

* Fixed ushort input streaming operator to use the correct tag.

* Implemented TPictInitter::OnInit.

* ZPictureRef::DoInit sets the current port to the work port (GetPictInfo
will crash if the port is bad).

* Fixed an off by one error in T3DHitPath ctor.

* T3DPoint no longer supports ( or ) operators. T3DRect::operator&=
correctly returns kZero3DRect if the rectangles don't intersect.

* TRegion::Contains(TRect) now returns true only if the rectangle is
entirely within the region. (It used to return true if the corners were
inside the region).

* Added a missing comma to the string table in Z3DUtils.cpp

* TRsrcSound and TRawSound use ldtox80 instead of dtox80 (which isn't in
MathLib v1).

* TRawSound takes a double for sample rate (old code used an UnsignedFixed
and didn't work with 44 kHz). The old ctor was made private so you should
get a compiler error wherever your code needs to be updated.

* Some of the TArray ctors used to allocate mElements as an array of uint8
and used uninitialized_fill to fill it up. This was causing problems with
CW Pro 2 when T was a struct (because of padding?) so it now only allocates
arrays of T.

* TMemoryHeap::GetHeapSize used to include huge blocks (ie large blocks
allocated with NewPtr and never suballocated from). This was a Bad Thing
because it made it very difficult to know how large to make the object
heap. Now GetHeapSize only returns the sum of the object heap pools and new
GetHugeBytes and GetHugeHighwater methods have been added (the Dump Object
Heap command in the Debug menu has been updated to call these).

* Fixed some problems when ASSERTS_THROW is defined in ZPurgeableList and
THandle.

* MInvariant::Invariant no longer fires on 68K's.

* Stack crawl code checks unmangle's return code.

Changes:

* Tweaked "Mixing Raven and PowerPlant" doc.

* TApplication::Run has been deprecated: HandleEventLoop should be used
instead.

* TApplication maintains a 64K reserve block that will be purged by the new
TGrowZone class. If this happens the app is considered to be low on memory
and TApplication will pop up an alert and TDocApplication will disable the
new and open commands. If your app has commands that allocate non-trivial
amounts of memory you should disable them if memory is low. You can tweak
the size of the reserve block and the amount of additional memory required
before the reserve block is reallocated by changing mReserveSize and
mReserveBuffer.

* Added TDropApp::HandleIdle (called when there aren't any events in the
event queue).

* TDropApp will use Nav Services if USES_NAV_SERVICES is set.

* Added TDocument::OnRevert.

* Tweaked TDocument::ForceClose to work properly when ref count is zero
(this should be a fairly unusual case).

* TWindow ctors add the window to the state broadcaster's listeners.

* TWindow will handle window repositioning if the modeDisplayManagerAware
SIZE flag is set.

* Added TToolWindow::OnRetarget.

* Added TView::iterator typedef.

* Made TPane::Invalidate() virtual and changed OnSetSize to allow for panes
that draw outside the lines.

* TPicturePane and TPushButton override Invalidate().

* Made some changes to TCachedView:

* Instead of using a fixed depth you can tell TCachedView to
use the deepest or maximum device the view intersects.

* The cache can now be purged when memory runs low. (This is
off by default).

* modeDisplayManagerAware requires that the
modeDisplayManagerAware SIZE flag be set.

* Changed TScrollBar implementation to support 32-bit values.

* TScroller::GetContentExtent no longer uses hard coded constants. Renamed
AdjustScrollBars DoAdjustScrollBars. Made DoMakeVertScrollBar and
DoMakeHorzScrollBar virtual.

* TScroller no longer hides scrollbars when deactivating.

* TScrollableView::OnScrollTo only calls DoScrollBits if both the horz and
vert deltas are less than the pane size (instead of either).

* TColorSwatch broadcasts when the user changes the color.

* TDrawExtension::mIndent is a TRect instead of TPoint.

* TDrawExtension::DrawsBeforeOwner is no longer virtual.

* Draw extensions can now draw before or after their owner.

* TPortCanvas ASSERTs that calls to BeginDraw aren't nested (this can cause
problems since the original port won't be restored).

* TStandardGetFile and UNavigationServices filter functions resolve aliases
using kARMNoUI.

* Removed TDocApplication::mOpenMultipleFiles and mEnablePreview (use
mNavOpenOptions instead).

* UStandardFile::GetFile methods now have an optional prompt.

* Object streaming now supports circular object graphs (thanks to Eric
Berdahl).

* Moved global stream operators from ZStream.h to ZStreaming.h.

* The Files package now uses MoreFiles for most of the heavy lifting.

* TFileSpec::::GetParent again returns a TFolderSpec (this can be forward
referenced in the header since it's not actually used).

* Removed TQ3Point3D, TQ3ColorRGB, and TQ3ColorARGB streaming operators.

* Added T2DPoint, T2DRect, T2DVector, T3DVector, T3DColorRGB and
T3DColorARGB streaming operators.

* Added T2DSize.

* T3DColorRGB scalar operators take doubles instead of floats.

* Instead of ASSERTing that dot product is in [-1, +1] T2DVector and
T3DVector::Angle methods use MinMax to force it into the valid range (due
to rounding errors the ASSERT would fire occasionally).

* THSVColor(RGBColor), TRGBColor(HSVColor), and T3DRGBColor(HSVColor) no
longer use the toolbox to perform the conversions (because the toolbox
routines are very slow).

* Removed divisions from Equal(double, double, double).

* THandle now adds the tail when a ZHandleRef is created. SetSize zaps new
data when expanding (if debug). Replaced Handle conversion operator with
GetHandle accessor.

* TPointer no longer has a ctor taking a Ptr. SetSize zaps new data when
expanding (if debug).

* Added GetFloat to ZInput and ZDialogBoxes. Renamed GetShort GetInt16,
GetLong GetInt32, and GetULong GetUint32.

* TSIOUXExtension only enables kCopyCmd when SIOUX has text selected.

* Added missing call to IsTagged to operator(( (int).

* UPreferences::Read no longer creates the pref file (so the pref file
won't be created until something is actually written out).

* TBootStrap::HandleSystemCheck uses a better message when a required
extension can't be found.

* #pragma scheduling is now only used within #if __POWERPC__.

* TStateBroadcaster broadcasts kMovedWindow, kResizedWindow,
kDeviceChanged, kDesktopChanged, kMemoryWentLow, and kMemoryWentHigh.

* UPreferences hard codes file type to 'pref' and creator to '????' (as per
TN 1126).

* ZNewAndDelete.cpp defines the nothrow version of operator new (if
RAVEN_OPERATOR_NEW is non-zero). This was disabled in Raven 1.3 because the
linker used to issue a warning.

* ZNewAndDelete.cpp also now defines the array versions of operator new and
delete.

* Enabled override of nothrow version of operator new.

* GaussianRandom no longer returns values outside [-1, 1].

* GetMicroSeconds and GetMilliSeconds use David Lawrence's fast
microseconds code.

* Turned optimizations off for BreakStrToDebugger (Pro 3 compiler bug).

* Turned off Copy/Const Propagation optimizer setting in all projects
(optimizer bug).

* Removed some work arounds required by the beta Pro 3 compilers.

* Replaced zlib 1.0.4 with zlib 1.1.2

* Example projects include MSLstring.cpp (unless you're using iostream's
you can include this in place of the bloated C++ library).

* Removed *Extras* folder.

* Added Third Party folder for stuff like ODMemMgr and zlib.

* Pro 3 still has problems with access control. For example, subclasses can
use their base classes' Inherited typedef. In an attempt to minimize the
ugliness that this can cause I went through all the code and added
Inherited typedefs to any classes that were missing them. The regular
expression I used is: "class[ \n\t\r]+[A-Za-z_][A-Za-z0-9_]*[ \n\t\r]*:[
\n\t\r]*(((public)|(protected)|(private))[
\n\t\r]+[A-Za-z0-9__][A-Za-z0-9_()]*[ \n\t\r]*(,[ \n\t\r]*)?)+{[
\n\t\r]+((//)|p)"

Additions:

* Added TGrowZone and MPurgeable.

* Added missing TToolWindow::Create method.

* Added TIconPane, TChasingArrows, TProgressBar, and TIndeterminateBar.

* Added TMenuExtension (allows you to change the way an MCommander responds
to a menu command).

* Can now dump pane hierarchy and command chain from the Debug menu.

* Added a debug extension that will fill dirty update regions with bright
red before redrawing panes.

* Added T2DGraph::HasPlot.

* Added __PreInit__ function and an ExitToShell patch to ZBootstrap.cpp
(for 68K apps).

* Added UNavigationServices::ChooseObject. Added
SNavOptions::SetActionButtonLabel and SetCancelButtonLabel.

* Added default ctors for TNavOpenReply and TNavSaveReply.

* Added UFileSystem::ResolveAlias and IsAliasFile methods.

* Added UFileSystem::CopyFile, IsLocked, GetVolumeTotalBytes, and
IsVolumeLocked.

* Added UDesktopMgr::SetComment.

* Added TRect and TLongRect::GetCenter.

* Added TStartAverageTimer - stack based class used to enable and disable a
TAverageTimer.

* Added UGestalt::HasMacTCP, HasOpenTransport, and GetOpenTransportVersion.

* Added uint8_cast, int8_cast, uint16_cast, etc to ZNumbers.h. These are
inline template functions that ASSERT that their argument is in range and
then do a cast.

* Added long long streaming operators.

* Added long long byte swapping.

* Added TRegion::IsRectangle.

* Added kPi, kHalfPi, and kTwoPi constants to ZNumbers.h

* Added COMPILE_CHECK. This is an ASSERT that works at compile time.

* Added CHECK_INVARIANT macro.

Quill:

* When Quill creates TToolWindow's it now sets the showNew flag to false.

* TPicturePane editor no longer objects if picture id is -1 (this means
that the picture doesn't have PICT and one will have to be installed
programatically).

* Fixed a bug that occurred when using the clear command on resources (this
was introduced when I switched over to using unsigned ints).

* Fixed a simple bug that prevented new 'View' resources from being
created. (This was introduced in 1.3)

* "(0 for default)" caption in text traits editor was using a bogus text
trait id.

* Added a warning to Quill and ZHelpMessage.h mentioning that PICT balloons
will not be supported in Carbon.

* Added a draw extension showing pane indices. Added context menu for
moving a pane to the front or to the back of it's view's list of subPanes.

* Tweaked pane editors so that focus rects no longer get drawn over by
other panes.

* Made pane edit dialog a bit wider.

* TStaticText editor text entry pane is much larger.

* Quill uses Nav Services.

* Release build now defines ASSERTS_THROW.

* New TPicturePane's start out as 64x64 instead of 200x200 pixels.

 
AAPL
$111.78
Apple Inc.
-0.87
MSFT
$47.66
Microsoft Corpora
+0.14
GOOG
$516.35
Google Inc.
+5.25

MacTech Search:
Community Search:

Software Updates via MacUpdate

LibreOffice 4.3.5.2 - Free Open Source o...
LibreOffice is an office suite (word processor, spreadsheet, presentations, drawing tool) compatible with other major office suites. The Document Foundation is coordinating development and... Read more
CleanApp 5.0.0 Beta 5 - Application dein...
CleanApp is an application deinstaller and archiver.... Your hard drive gets fuller day by day, but do you know why? CleanApp 5 provides you with insights how to reclaim disk space. There are... Read more
Monolingual 1.6.2 - Remove unwanted OS X...
Monolingual is a program for removing unnecesary language resources from OS X, in order to reclaim several hundred megabytes of disk space. It requires a 64-bit capable Intel-based Mac and at least... Read more
NetShade 6.1 - Browse privately using an...
NetShade is an Internet security tool that conceals your IP address on the web. NetShade routes your Web connection through either a public anonymous proxy server, or one of NetShade's own dedicated... Read more
calibre 2.13 - Complete e-library manage...
Calibre is a complete e-book library manager. Organize your collection, convert your books to multiple formats, and sync with all of your devices. Let Calibre be your multi-tasking digital librarian... Read more
Mellel 3.3.7 - Powerful word processor w...
Mellel is the leading word processor for OS X and has been widely considered the industry standard since its inception. Mellel focuses on writers and scholars for technical writing and multilingual... Read more
ScreenFlow 5.0.1 - Create screen recordi...
Save 10% with the exclusive MacUpdate coupon code: AFMacUpdate10 Buy now! ScreenFlow is powerful, easy-to-use screencasting software for the Mac. With ScreenFlow you can record the contents of your... Read more
Simon 4.0 - Monitor changes and crashes...
Simon monitors websites and alerts you of crashes and changes. Select pages to monitor, choose your alert options, and customize your settings. Simon does the rest. Keep a watchful eye on your... Read more
BBEdit 11.0.2 - Powerful text and HTML e...
BBEdit is the leading professional HTML and text editor for the Mac. Specifically crafted in response to the needs of Web authors and software developers, this award-winning product provides a... Read more
ExpanDrive 4.2.1 - Access cloud storage...
ExpanDrive builds cloud storage in every application, acts just like a USB drive plugged into your Mac. With ExpanDrive, you can securely access any remote file server directly from the Finder or... Read more

Latest Forum Discussions

See All

Make your own Tribez Figures (and More)...
Make your own Tribez Figures (and More) with Toyze Posted by Jessica Fisher on December 19th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
So Many Holiday iOS Sales Oh My Goodness...
The holiday season is in full-swing, which means a whole lot of iOS apps and games are going on sale. A bunch already have, in fact. Naturally this means we’re putting together a hand-picked list of the best discounts and sales we can find in order... | Read more »
It’s Bird vs. Bird in the New PvP Mode f...
It’s Bird vs. Bird in the New PvP Mode for Angry Birds Epic Posted by Jessica Fisher on December 19th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
Telltale Games and Mojang Announce Minec...
Telltale Games and Mojang Announce Minecraft: Story Mode – A Telltale Games Series Posted by Jessica Fisher on December 19th, 2014 [ permalink ] | Read more »
WarChest and Splash Damage Annouce Their...
WarChest and Splash Damage Annouce Their New Game: Tempo Posted by Jessica Fisher on December 19th, 2014 [ permalink ] WarChest Ltd and Splash Damage Ltd are teaming up again to work | Read more »
BulkyPix Celebrates its 6th Anniversary...
BulkyPix Celebrates its 6th Anniversary with a Bunch of Free Games Posted by Jessica Fisher on December 19th, 2014 [ permalink ] BulkyPix has | Read more »
Indulge in Japanese cuisine in Cooking F...
Indulge in Japanese cuisine in Cooking Fever’s new sushi-themed update Posted by Simon Reed on December 19th, 2014 [ permalink ] Lithuanian developer Nordcurrent has yet again updated its restaurant simulat | Read more »
Badland Daydream Level Pack Arrives to C...
Badland Daydream Level Pack Arrives to Celebrate 20 Million Downloads Posted by Ellis Spice on December 19th, 2014 [ permalink ] | Read more »
Far Cry 4, Assassin’s Creed Unity, Desti...
Far Cry 4, Assassin’s Creed Unity, Destiny, and Beyond – AppSpy Takes a Look at AAA Companion Apps Posted by Rob Rich on December 19th, 2014 [ permalink ] These day | Read more »
A Bunch of Halfbrick Games Are Going Fre...
A Bunch of Halfbrick Games Are Going Free for the Holidays Posted by Ellis Spice on December 19th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »

Price Scanner via MacPrices.net

The Apple Store offering free next-day shippi...
The Apple Store is now offering free next-day shipping on all in stock items if ordered before 12/23/14 at 10:00am PT. Local store pickup is also available within an hour of ordering for any in stock... Read more
It’s 1992 Again At Sony Pictures, Except For...
Techcrunch’s John Biggs interviewed a Sony Pictures Entertainment (SPE) employee, who quite understandably wished to remain anonymous, regarding post-hack conditions in SPE’s L.A office, explaining “... Read more
Holiday sales this weekend: MacBook Pros for...
 B&H Photo has new MacBook Pros on sale for up to $300 off MSRP as part of their Holiday pricing. Shipping is free, and B&H charges NY sales tax only: - 15″ 2.2GHz Retina MacBook Pro: $1699... Read more
Holiday sales this weekend: MacBook Airs for...
B&H Photo has 2014 MacBook Airs on sale for up to $120 off MSRP, for a limited time, for the Thanksgiving/Christmas Holiday shopping season. Shipping is free, and B&H charges NY sales tax... Read more
Holiday sales this weekend: iMacs for up to $...
B&H Photo has 21″ and 27″ iMacs on sale for up to $200 off MSRP including free shipping plus NY sales tax only. B&H will also include a free copy of Parallels Desktop software: - 21″ 1.4GHz... Read more
Holiday sales this weekend: Mac minis availab...
B&H Photo has new 2014 Mac minis on sale for up to $80 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 1.4GHz Mac mini: $459 $40 off MSRP - 2.6GHz Mac mini: $629 $70 off MSRP... Read more
Holiday sales this weekend: Mac Pros for up t...
B&H Photo has Mac Pros on sale for up to $500 off MSRP. Shipping is free, and B&H charges sales tax in NY only: - 3.7GHz 4-core Mac Pro: $2599, $400 off MSRP - 3.5GHz 6-core Mac Pro: $3499, $... Read more
Save up to $400 on MacBooks with Apple Certif...
The Apple Store has Apple Certified Refurbished 2014 MacBook Pros and MacBook Airs available for up to $400 off the cost of new models. An Apple one-year warranty is included with each model, and... Read more
Save up to $300 on Macs, $30 on iPads with Ap...
Purchase a new Mac or iPad at The Apple Store for Education and take up to $300 off MSRP. All teachers, students, and staff of any educational institution qualify for the discount. Shipping is free,... Read more
iOS and Android OS Targeted by Man-in-the-Mid...
Cloud services security provider Akamai Technologies, Inc. has released, through the company’s Prolexic Security Engineering & Research Team (PLXsert), a new cybersecurity threat advisory. The... Read more

Jobs Board

*Apple* Store Leader Program (US) - Apple, I...
…Summary Learn and grow as you explore the art of leadership at the Apple Store. You'll master our retail business inside and out through training, hands-on experience, Read more
Project Manager, *Apple* Financial Services...
**Job Summary** Apple Financial Services (AFS) offers consumers, businesses and educational institutions ways to finance Apple purchases. We work with national and Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.