От: | MTD | https://github.com/mtrempoltsev | |
Дата: | 21.02.13 17:01 | ||
Оценка: | 8 (3) +4 |
Ну вот собственно я и прошу (тех, кто уверен что исключения — это всегда лучше) показать подходящий юзкейс правильного использования, когда оно улучшило архитектуру или уменьшило объём кода. Потом хочу прикинуть как бы я это сделал без исключений и сравнить объём/читаемость...
ASErr EmptyPanelPlugin::StartupPlugin(SPInterfaceMessage *message)
{
AIErr err = kNoErr;
// Call base class routine
err = Plugin::StartupPlugin(message);
if (err)
return err;
AINotifierHandle appShutDownNotifier;
err = sAINotifier->AddNotifier(fPluginRef, "AI Application Shutdown Notifier", kAIApplicationShutdownNotifier, &appShutDownNotifier);
if(err)
return err;
AIErr error = kNoErr;
// Add About Plugins menu item for this plug-in.
SDKAboutPluginsHelper aboutPluginsHelper;
error = aboutPluginsHelper.AddAboutPluginsMenuItem(message,
kSDKDefAboutSDKCompanyPluginsGroupName,
ai::UnicodeString(kSDKDefAboutSDKCompanyPluginsGroupNameString),
"EmptyPanel...",
&fAboutPluginMenu);
if (error)
return error;
// Add menu item
error = sAIMenu->AddMenuItemZString(fPluginRef, "Third Party Panel", kOtherPalettesMenuGroup, ZREF("Third Party Panel"),
kMenuItemNoOptions, &fEmptyPanelPanelMenuItemHandle);
if (error)
return error;
fPanelFlyoutMenu = NULL;
error = sAIPanelFlyoutMenu->Create(fPanelFlyoutMenu);
if (error)
return error;
error = sAIPanelFlyoutMenu->AppendItem(fPanelFlyoutMenu, 1, ai::UnicodeString("First Item"));
error = sAIPanelFlyoutMenu->AppendItem(fPanelFlyoutMenu, 3, ai::UnicodeString("Third Item"));
error = sAIPanelFlyoutMenu->InsertItem(fPanelFlyoutMenu, 3, 2, ai::UnicodeString("Second Item"));
error = sAIPanelFlyoutMenu->InsertSeparator(fPanelFlyoutMenu, 3, 5);
error = sAIPanelFlyoutMenu->AppendItem(fPanelFlyoutMenu, 4, ai::UnicodeString("Fourth Item"));
error = sAIPanelFlyoutMenu->SetItemEnabled(fPanelFlyoutMenu, 4, false);
error = sAIPanelFlyoutMenu->SetItemMark(fPanelFlyoutMenu, 1 , kAIPanelFlyoutMenuItemMark_BULLET);
error = sAIPanelFlyoutMenu->SetItemMark(fPanelFlyoutMenu, 2 , kAIPanelFlyoutMenuItemMark_CHECK);
error = sAIPanelFlyoutMenu->SetItemMark(fPanelFlyoutMenu, 3 , kAIPanelFlyoutMenuItemMark_DASH);
AISize pnSize = {240, 320};
error = sAIPanel->Create(fPluginRef, ai::UnicodeString("Third Party Panel"), ai::UnicodeString("Third Party Panel"), 3, pnSize, true, fPanelFlyoutMenu, this, fPanel);
if (error)
return error;
AISize minSize = {50, 50};
AISize maxSize = {800, 800};
AISize prefConstSize = {100, 100};
AISize prefUnconstSize = {600, 600};
error = sAIPanel->SetSizes(fPanel, minSize, prefUnconstSize, prefConstSize, maxSize);
error = sAIPanel->Show(fPanel, true);
error = sAIPanel->SetFlyoutMenuPreVisibilityProc(fPanel, flyoutMenuPreVisFunc);
error = sAIPanel->SetFlyoutMenuProc(fPanel, PanelFlyoutMenuProc);
error = sAIPanel->SetVisibilityChangedNotifyProc(fPanel, PanelVisibilityChangedNotifyProc);
error = sAIPanel->SetSizeChangedNotifyProc(fPanel, PanelSizeChangedNotifyProc);
error = sAIPanel->SetStateChangedNotifyProc(fPanel, PanelStateChangedNotifyProc);
error = sAIPanel->SetClosedNotifyProc(fPanel, PanelClosedNotifyProc);
error = SetIcon();
error = AddWidgets();
//Add Menu Item for Control Bar
if(!error)
error = sAIMenu->AddMenuItemZString(fPluginRef, "Third Party Control Bar", kOtherPalettesMenuGroup, ZREF("Third Party Control Bar"),
kMenuItemNoOptions, &fEmptyPanelControlBarMenuItemHandle);
//Create Control Bar
AISize sizeControlBar = {controlBarWidth, controlBarHeight};
if(!error)
error = sAIControlBar->Create(fPluginRef, sizeControlBar, controlBarWidthMin, controlBarWidthMax,NULL/*Userdata*/,fControlBar);
if(!error)
error = sAIControlBar->SetUserData(fControlBar, this);
//Set Callbacks
if(!error)
error = sAIControlBar->SetVisibilityChangedNotifyProc(fControlBar, ControlBarVisibilityChangedNotifyProc);
if(!error)
error = sAIControlBar->SetSizeChangedNotifyProc(fControlBar, ControlBarSizeChangedNotifyProc);
//Add Different Widgets to Control Bar
if(!error)
AddWidgetsToControlBar();
return error;
}