1280 |
1296 |
1281 <resource: #menu> |
1297 <resource: #menu> |
1282 |
1298 |
1283 ^ |
1299 ^ |
1284 #(Menu |
1300 #(Menu |
1285 ( |
1301 ( |
1286 (MenuItem |
1302 (MenuItem |
1287 activeHelpKey: fileNew |
1303 activeHelpKey: fileNew |
1288 label: 'New' |
1304 label: 'New' |
1289 itemValue: doNew |
1305 itemValue: doNew |
1290 translateLabel: true |
1306 translateLabel: true |
1291 isButton: true |
1307 isButton: true |
1292 labelImage: (ResourceRetriever ToolbarIconLibrary newMenuIcon) |
1308 labelImage: (ResourceRetriever ToolbarIconLibrary newMenuIcon) |
1293 ) |
1309 ) |
1294 (MenuItem |
1310 (MenuItem |
1295 label: '-' |
1311 label: '-' |
1296 ) |
1312 ) |
1297 (MenuItem |
1313 (MenuItem |
1298 activeHelpKey: fileLoad |
1314 isVisible: isNotEditingSpecOnly |
1299 label: 'Load' |
1315 activeHelpKey: fileLoad |
1300 itemValue: doLoad |
1316 label: 'Load' |
1301 translateLabel: true |
1317 itemValue: doLoad |
1302 isButton: true |
1318 translateLabel: true |
1303 submenuChannel: menuHistory |
1319 isButton: true |
1304 labelImage: (ResourceRetriever ToolbarIconLibrary loadFromMethodIcon) |
1320 submenuChannel: menuHistory |
1305 keepLinkedMenu: true |
1321 labelImage: (ResourceRetriever ToolbarIconLibrary loadFromMethodIcon) |
1306 ) |
1322 keepLinkedMenu: true |
1307 (MenuItem |
1323 ) |
1308 activeHelpKey: fileSave |
1324 (MenuItem |
1309 label: 'Save' |
1325 isVisible: isNotEditingSpecOnly |
1310 itemValue: doSave |
1326 activeHelpKey: fileSave |
1311 translateLabel: true |
1327 label: 'Save' |
1312 isButton: true |
1328 itemValue: doSave |
1313 labelImage: (ResourceRetriever ToolbarIconLibrary saveAsMethodIcon) |
1329 translateLabel: true |
1314 ) |
1330 isButton: true |
1315 (MenuItem |
1331 labelImage: (ResourceRetriever ToolbarIconLibrary saveAsMethodIcon) |
1316 label: '-' |
1332 ) |
1317 ) |
1333 (MenuItem |
1318 (MenuItem |
1334 isVisible: isEditingSpecOnly |
1319 activeHelpKey: editCut |
1335 activeHelpKey: fileSaveSpec |
1320 enabled: hasSelectionChannel |
1336 label: 'Save' |
1321 label: 'Cut' |
1337 itemValue: doSave |
1322 itemValue: doCut |
1338 translateLabel: true |
1323 translateLabel: true |
1339 isButton: true |
1324 isButton: true |
1340 labelImage: (ResourceRetriever XPToolbarIconLibrary saveImageIcon) |
1325 labelImage: (ResourceRetriever ToolbarIconLibrary cutMenuItemIcon) |
1341 ) |
1326 ) |
1342 (MenuItem |
1327 (MenuItem |
1343 label: '-' |
1328 activeHelpKey: editCopy |
1344 ) |
1329 enabled: hasSelectionChannel |
1345 (MenuItem |
1330 label: 'Copy' |
1346 activeHelpKey: editCut |
1331 itemValue: doCopy |
1347 enabled: hasSelectionChannel |
1332 translateLabel: true |
1348 label: 'Cut' |
1333 isButton: true |
1349 itemValue: doCut |
1334 labelImage: (ResourceRetriever ToolbarIconLibrary copyMenuItemIcon) |
1350 translateLabel: true |
1335 ) |
1351 isButton: true |
1336 (MenuItem |
1352 labelImage: (ResourceRetriever ToolbarIconLibrary cutMenuItemIcon) |
1337 activeHelpKey: editPaste |
1353 ) |
1338 enabled: canPasteHolder |
1354 (MenuItem |
1339 label: 'Paste' |
1355 activeHelpKey: editCopy |
1340 itemValue: doPaste |
1356 enabled: hasSelectionChannel |
1341 translateLabel: true |
1357 label: 'Copy' |
1342 isButton: true |
1358 itemValue: doCopy |
1343 labelImage: (ResourceRetriever ToolbarIconLibrary pasteMenuItemIcon) |
1359 translateLabel: true |
1344 ) |
1360 isButton: true |
1345 (MenuItem |
1361 labelImage: (ResourceRetriever ToolbarIconLibrary copyMenuItemIcon) |
1346 label: '-' |
1362 ) |
1347 ) |
1363 (MenuItem |
1348 (MenuItem |
1364 activeHelpKey: editPaste |
1349 activeHelpKey: addMenuItem |
1365 enabled: canPasteHolder |
1350 enabled: hasSingleSelectionChannel |
1366 label: 'Paste' |
1351 label: 'Add Item' |
1367 itemValue: doPaste |
1352 itemValue: doCreateItem |
1368 translateLabel: true |
1353 translateLabel: true |
1369 isButton: true |
1354 isButton: true |
1370 labelImage: (ResourceRetriever ToolbarIconLibrary pasteMenuItemIcon) |
1355 labelImage: (ResourceRetriever #'MenuEditor::Item' iconItem) |
1371 ) |
1356 ) |
1372 (MenuItem |
1357 (MenuItem |
1373 label: '-' |
1358 activeHelpKey: addMenuSeparator |
1374 ) |
1359 enabled: hasSingleSelectionChannel |
1375 (MenuItem |
1360 label: 'Add Separator' |
1376 activeHelpKey: addMenuItem |
1361 itemValue: doCreateSep |
1377 enabled: hasSingleSelectionChannel |
1362 translateLabel: true |
1378 label: 'Add Item' |
1363 isButton: true |
1379 itemValue: doCreateItem |
1364 labelImage: (ResourceRetriever #'MenuEditor::Item' iconSeparator) |
1380 translateLabel: true |
1365 ) |
1381 isButton: true |
1366 (MenuItem |
1382 labelImage: (ResourceRetriever #'MenuEditor::Item' iconItem) |
1367 activeHelpKey: addMenuSlice |
1383 ) |
1368 enabled: hasSingleSelectionChannel |
1384 (MenuItem |
1369 label: 'Menu Slice' |
1385 activeHelpKey: addMenuSeparator |
1370 itemValue: doCreateMenuSliceItem |
1386 enabled: hasSingleSelectionChannel |
1371 translateLabel: true |
1387 label: 'Add Separator' |
1372 isButton: true |
1388 itemValue: doCreateSep |
1373 labelImage: (ResourceRetriever #'MenuEditor::Item' iconSliceMenu) |
1389 translateLabel: true |
1374 ) |
1390 isButton: true |
1375 (MenuItem |
1391 labelImage: (ResourceRetriever #'MenuEditor::Item' iconSeparator) |
1376 activeHelpKey: addSubMenu |
1392 ) |
1377 enabled: hasSingleSelectionChannel |
1393 (MenuItem |
1378 label: 'Add Menu' |
1394 activeHelpKey: addMenuSlice |
1379 itemValue: doCreateMenu |
1395 enabled: hasSingleSelectionChannel |
1380 translateLabel: true |
1396 label: 'Menu Slice' |
1381 isButton: true |
1397 itemValue: doCreateMenuSliceItem |
1382 submenuChannel: standardMenus |
1398 translateLabel: true |
1383 labelImage: (ResourceRetriever #'MenuEditor::Item' iconMenu) |
1399 isButton: true |
1384 keepLinkedMenu: true |
1400 labelImage: (ResourceRetriever #'MenuEditor::Item' iconSliceMenu) |
1385 ) |
1401 ) |
1386 (MenuItem |
1402 (MenuItem |
1387 activeHelpKey: addSubMenuLink |
1403 activeHelpKey: addSubMenu |
1388 enabled: hasSingleSelectionChannel |
1404 enabled: hasSingleSelectionChannel |
1389 label: 'Add Linked Menu' |
1405 label: 'Add Menu' |
1390 itemValue: doCreateLinkedMenu |
1406 itemValue: doCreateMenu |
1391 translateLabel: true |
1407 translateLabel: true |
1392 isButton: true |
1408 isButton: true |
1393 labelImage: (ResourceRetriever #'MenuEditor::Item' iconLinkedMenu) |
1409 submenuChannel: standardMenus |
1394 ) |
1410 labelImage: (ResourceRetriever #'MenuEditor::Item' iconMenu) |
1395 (MenuItem |
1411 keepLinkedMenu: true |
1396 activeHelpKey: addDelayedMenu |
1412 ) |
1397 enabled: canCreateDelayedMenuChannel |
1413 (MenuItem |
1398 label: 'Add Delayed Menu' |
1414 activeHelpKey: addSubMenuLink |
1399 itemValue: doCreateDelayedMenu: |
1415 enabled: hasSingleSelectionChannel |
1400 translateLabel: true |
1416 label: 'Add Linked Menu' |
1401 isButton: true |
1417 itemValue: doCreateLinkedMenu |
1402 labelImage: (ResourceRetriever #'MenuEditor::Item' iconDelayedMenu) |
1418 translateLabel: true |
1403 argument: menu |
1419 isButton: true |
1404 ) |
1420 labelImage: (ResourceRetriever #'MenuEditor::Item' iconLinkedMenu) |
1405 (MenuItem |
1421 ) |
1406 activeHelpKey: addDelayedSubMenuLink |
1422 (MenuItem |
1407 enabled: canCreateDelayedMenuChannel |
1423 activeHelpKey: addDelayedMenu |
1408 label: 'Add Delayed Linked Menu' |
1424 enabled: canCreateDelayedMenuChannel |
1409 itemValue: doCreateDelayedMenu: |
1425 label: 'Add Delayed Menu' |
1410 translateLabel: true |
1426 itemValue: doCreateDelayedMenu: |
1411 isButton: true |
1427 translateLabel: true |
1412 labelImage: (ResourceRetriever #'MenuEditor::Item' iconDelayedLinkedMenu) |
1428 isButton: true |
1413 argument: linkedMenu |
1429 labelImage: (ResourceRetriever #'MenuEditor::Item' iconDelayedMenu) |
1414 ) |
1430 argument: menu |
1415 (MenuItem |
1431 ) |
1416 label: '' |
1432 (MenuItem |
1417 ) |
1433 activeHelpKey: addDelayedSubMenuLink |
1418 (MenuItem |
1434 enabled: canCreateDelayedMenuChannel |
1419 activeHelpKey: editMoveUp |
1435 label: 'Add Delayed Linked Menu' |
1420 enabled: enableMovingUpOrDownHolder |
1436 itemValue: doCreateDelayedMenu: |
1421 label: 'Move Up' |
1437 translateLabel: true |
1422 itemValue: doMoveUp |
1438 isButton: true |
1423 translateLabel: true |
1439 labelImage: (ResourceRetriever #'MenuEditor::Item' iconDelayedLinkedMenu) |
1424 isButton: true |
1440 argument: linkedMenu |
1425 startGroup: right |
1441 ) |
1426 labelImage: (ResourceRetriever Icon upIcon) |
1442 (MenuItem |
1427 ) |
1443 label: '' |
1428 (MenuItem |
1444 ) |
1429 activeHelpKey: editMoveDown |
1445 (MenuItem |
1430 enabled: enableMovingUpOrDownHolder |
1446 activeHelpKey: editMoveUp |
1431 label: 'Move Down' |
1447 enabled: enableMovingUpOrDownHolder |
1432 itemValue: doMoveDown |
1448 label: 'Move Up' |
1433 translateLabel: true |
1449 itemValue: doMoveUp |
1434 isButton: true |
1450 translateLabel: true |
1435 labelImage: (ResourceRetriever Icon downIcon) |
1451 isButton: true |
1436 ) |
1452 startGroup: right |
1437 (MenuItem |
1453 labelImage: (ResourceRetriever Icon upIcon) |
1438 activeHelpKey: editMoveIn |
1454 ) |
1439 enabled: enableMovingInHolder |
1455 (MenuItem |
1440 label: 'Move Into Next' |
1456 activeHelpKey: editMoveDown |
1441 itemValue: doMoveInNext |
1457 enabled: enableMovingUpOrDownHolder |
1442 translateLabel: true |
1458 label: 'Move Down' |
1443 isButton: true |
1459 itemValue: doMoveDown |
1444 labelImage: (ResourceRetriever Icon downRightIcon) |
1460 translateLabel: true |
1445 ) |
1461 isButton: true |
1446 (MenuItem |
1462 labelImage: (ResourceRetriever Icon downIcon) |
1447 activeHelpKey: editMoveInAbove |
1463 ) |
1448 enabled: enableMovingInAboveHolder |
1464 (MenuItem |
1449 label: 'Move Into Previous' |
1465 activeHelpKey: editMoveIn |
1450 itemValue: doMoveInPrevious |
1466 enabled: enableMovingInHolder |
1451 translateLabel: true |
1467 label: 'Move Into Next' |
1452 isButton: true |
1468 itemValue: doMoveInNext |
1453 labelImage: (ResourceRetriever Icon upRightIcon) |
1469 translateLabel: true |
1454 ) |
1470 isButton: true |
1455 (MenuItem |
1471 labelImage: (ResourceRetriever Icon downRightIcon) |
1456 activeHelpKey: editMoveOut |
1472 ) |
1457 enabled: enableMovingOutHolder |
1473 (MenuItem |
1458 label: 'Move Out' |
1474 activeHelpKey: editMoveInAbove |
1459 itemValue: doMoveOut |
1475 enabled: enableMovingInAboveHolder |
1460 translateLabel: true |
1476 label: 'Move Into Previous' |
1461 isButton: true |
1477 itemValue: doMoveInPrevious |
1462 labelImage: (ResourceRetriever Icon leftDownIcon) |
1478 translateLabel: true |
1463 ) |
1479 isButton: true |
1464 ) |
1480 labelImage: (ResourceRetriever Icon upRightIcon) |
1465 nil |
1481 ) |
1466 nil |
1482 (MenuItem |
|
1483 activeHelpKey: editMoveOut |
|
1484 enabled: enableMovingOutHolder |
|
1485 label: 'Move Out' |
|
1486 itemValue: doMoveOut |
|
1487 translateLabel: true |
|
1488 isButton: true |
|
1489 labelImage: (ResourceRetriever Icon leftDownIcon) |
|
1490 ) |
|
1491 ) |
|
1492 nil |
|
1493 nil |
1467 ) |
1494 ) |
1468 ! ! |
1495 ! ! |
1469 |
1496 |
1470 !MenuEditor class methodsFor:'menu specs-standard'! |
1497 !MenuEditor class methodsFor:'menu specs-standard'! |
1471 |
1498 |
2663 ]. |
2725 ]. |
2664 ! |
2726 ! |
2665 |
2727 |
2666 doSave |
2728 doSave |
2667 "save current editing menu to |
2729 "save current editing menu to |
2668 class: specClass |
2730 class: specClass |
2669 selector: specSelector |
2731 selector: specSelector |
2670 " |
2732 " |
2671 |cls spec mthd category code excla| |
2733 |cls specCode mthd category code excla| |
|
2734 |
|
2735 self isEditingSpecOnly ifTrue:[ |
|
2736 savedSpec := self generateMenuSpec. |
|
2737 hasSaved := true. |
|
2738 self clearModified. |
|
2739 ^ self |
|
2740 ]. |
2672 |
2741 |
2673 super doSave ifFalse: [^nil]. |
2742 super doSave ifFalse: [^nil]. |
2674 spec := self generateMenuSpec. |
2743 specCode := self generateMenuSpecString. |
2675 spec isNil ifTrue:[^ nil]. |
2744 specCode isNil ifTrue:[^ nil]. |
2676 |
2745 |
2677 cls := self resolveName:specClass. |
2746 cls := self resolveName:specClass. |
2678 |
2747 |
2679 "/ if that method already exists, do not overwrite the category |
2748 "/ if that method already exists, do not overwrite the category |
2680 |
2749 |
2681 category := 'menu specs'. |
2750 category := 'menu specs'. |
2682 (mthd := cls class compiledMethodAt:specSelector) notNil ifTrue:[ |
2751 (mthd := cls class compiledMethodAt:specSelector) notNil ifTrue:[ |
2683 category := mthd category. |
2752 category := mthd category. |
2684 ]. |
2753 ]. |
2685 |
2754 |
2686 excla := Character excla asString. |
2755 excla := Character excla asString. |
2687 |
2756 |
2688 code := excla |
2757 code := excla |
2689 , (cls name , ' class methodsFor:' , category storeString) |
2758 , (cls name , ' class methodsFor:' , category storeString) |
2690 , excla , '\\' |
2759 , excla , '\\' |
2691 |
2760 |
2692 , specSelector , '\' |
2761 , specSelector , '\' |
2693 , (self class codeGenerationComment replChar:$!! withString:'!!!!') |
2762 , (self class codeGenerationComment replChar:$!! withString:'!!!!') |
2694 , '\\ "\' |
2763 , '\\ "\' |
2695 , (' MenuEditor new openOnClass:' , cls name , ' andSelector:#' , specSelector , '\') |
2764 , (' MenuEditor new openOnClass:' , cls name , ' andSelector:#' , specSelector , '\') |
2696 , (' (Menu new fromLiteralArrayEncoding:(' , cls name , ' ' , specSelector , ')) startUp\') |
2765 , (' (Menu new fromLiteralArrayEncoding:(' , cls name , ' ' , specSelector , ')) startUp\') |
2697 , ' "\'. |
2766 , ' "\'. |
2698 |
2767 |
2699 code := code |
2768 code := code |
2700 , '\' |
2769 , '\' |
2701 , ' <resource: #menu>\\' |
2770 , ' <resource: #menu>\\' |
2702 , ' ^ ' , spec |
2771 , ' ^ ' , specCode |
2703 , '\' |
2772 , '\' |
2704 , (excla , ' ' , excla) |
2773 , (excla , ' ' , excla) |
2705 , '\\'. |
2774 , '\\'. |
2706 |
2775 |
2707 code := code withCRs. |
2776 code := code withCRs. |
2708 (ReadStream on:code) fileIn. |
2777 (ReadStream on:code) fileIn. |
2709 |
2778 |
2710 self isStandAlone ifTrue:[ |
2779 self isStandAlone ifTrue:[ |
2711 self helpTool doSave |
2780 self helpTool doSave |
2712 ]. |
2781 ]. |
2713 |
2782 |
2714 self updateHistory. |
2783 self updateHistory. |
2715 hasSaved := true. |
2784 hasSaved := true. |
2716 self clearModified. |
2785 self clearModified. |