/**************************************************************
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 *************************************************************/



#define DEFINE_SLOTID_FOR_NUMBER_BULLETS	SID_OUTLINE_BULLET

#include <svx/dialogs.hrc>
#include <svx/globlmn.hrc>

#include "app.hrc"
#include "helpids.h"
#include "res_bmp.hrc"

#define SEPARATOR       MenuItem { Separator = TRUE; };
#define DUMMY 333

// ------------------------------------------------------------------------------------------------
// slot defines
// ------------------------------------------------------------------------------------------------

 #define MN_CHANGEBEZIER \
    MenuItem\
    {\
        Identifier = SID_CHANGEBEZIER ; \
        HelpId = CMD_SID_CHANGEBEZIER ; \
        Text [ en-US ] = "To ~Curve" ; \
	};

#define MN_CHANGEPOLYGON \
    MenuItem\
    {\
        Identifier = SID_CHANGEPOLYGON ; \
        HelpId = CMD_SID_CHANGEPOLYGON ; \
        Text [ en-US ] = "To ~Polygon" ; \
	};

#define MN_CONVERT_TO_CONTOUR \
    MenuItem\
    {\
        Identifier = SID_CONVERT_TO_CONTOUR ; \
        HelpId = CMD_SID_CONVERT_TO_CONTOUR ; \
		Text [ en-US ] = "To C~ontour" ; \
	};

#define MN_CONVERT_TO_3D \
    MenuItem\
    {\
        Identifier = SID_CONVERT_TO_3D ; \
        HelpId = CMD_SID_CONVERT_TO_3D ; \
        Text [ en-US ] = "To 3~D" ; \
	};

#define MN_CONVERT_TO_BITMAP \
    MenuItem\
    {\
        Identifier = SID_CONVERT_TO_BITMAP ; \
        HelpId = CMD_SID_CONVERT_TO_BITMAP ; \
        Text [ en-US ] = "To ~Bitmap" ; \
	};

#define MN_CONVERT_TO_METAFILE \
    MenuItem\
    {\
        Identifier = SID_CONVERT_TO_METAFILE ; \
        HelpId = CMD_SID_CONVERT_TO_METAFILE ; \
        Text [ en-US ] = "To ~Metafile" ; \
	};

#define MN_CONVERT_TO_3D_LATHE_FAST \
    MenuItem\
    {\
        Identifier = SID_CONVERT_TO_3D_LATHE_FAST ; \
        HelpId = CMD_SID_CONVERT_TO_3D_LATHE_FAST ; \
        Text [ en-US ] = "To 3D ~Rotation Object" ; \
	};

#define MN_VERTICAL \
    MenuItem\
    {\
        Identifier = SID_VERTICAL ; \
        HelpId = CMD_SID_VERTICAL ; \
        Text [ en-US ] = "~Vertically" ; \
	};

#define MN_HORIZONTAL \
    MenuItem\
    {\
        Identifier = SID_HORIZONTAL ; \
        HelpId = CMD_SID_HORIZONTAL ; \
        Text [ en-US ] = "~Horizontally" ; \
	};

#define MN_3D_WIN \
    MenuItem\
    {\
        Identifier = SID_3D_WIN ; \
        HelpId = CMD_SID_3D_WIN ; \
        Text [ en-US ] = "~3D Effects" ; \
	};

#define MN_PRESENTATION_LAYOUT \
    MenuItem\
    {\
        Identifier = SID_PRESENTATION_LAYOUT ; \
        HelpId = CMD_SID_PRESENTATION_LAYOUT ; \
        Text [ en-US ] = "~Slide Design" ; \
	};

#define MN_DIA \
    MenuItem\
    {\
        Identifier = SID_SLIDE_TRANSITIONS_PANEL ; \
        HelpId = CMD_SID_SLIDE_TRANSITIONS_PANEL ; \
        Text [ en-US ] = "Slide ~Transition" ; \
	};

#define MN_SHOW_SLIDE \
    MenuItem\
    {\
        Identifier = SID_SHOW_SLIDE ; \
        HelpId = CMD_SID_SHOW_SLIDE ; \
        Text [ en-US ] = "~Show Slide" ; \
	};

#define MN_HIDE_SLIDE \
    MenuItem\
    {\
        Identifier = SID_HIDE_SLIDE ; \
        HelpId = CMD_SID_HIDE_SLIDE ; \
        Text [ en-US ] = "~Hide Slide" ; \
	};

#define MN_GROUP_IMPRESS \
    MenuItem\
    {\
        Identifier = SID_GROUP ; \
        HelpId = CMD_SID_GROUP ; \
        Text [ en-US ] = "~Group" ; \
	};

#define MN_UNGROUP_IMPRESS \
    MenuItem\
    {\
        Identifier = SID_UNGROUP ; \
        HelpId = CMD_SID_UNGROUP ; \
        Text [ en-US ] = "~Ungroup" ; \
	};

#define MN_ENTER_GROUP_IMPRESS \
    MenuItem\
    {\
        Identifier = SID_ENTER_GROUP ; \
        HelpId = CMD_SID_ENTER_GROUP ; \
        Text [ en-US ] = "~Edit Group" ; \
	};

#define MN_LEAVE_GROUP_IMPRESS \
    MenuItem\
    {\
        Identifier = SID_LEAVE_GROUP ; \
        HelpId = CMD_SID_LEAVE_GROUP ; \
        Text [ en-US ] = "E~xit group" ; \
	};

#define MNSUB_GROUP \
    MenuItem\
    {\
        Identifier = MN_SUB_GROUP ; \
        HelpID = HID_MN_SUB_GROUP ; \
        Command = ".uno:GroupMenu" ; \
        Text [ en-US ] = "~Group" ; \
        SubMenu = Menu\
        {\
            ItemList = \
            {\
                MN_GROUP_IMPRESS\
                MN_UNGROUP_IMPRESS\
                MN_ENTER_GROUP_IMPRESS\
                MN_LEAVE_GROUP_IMPRESS\
            }; \
        }; \
	};

#define MN_DISTRIBUTE \
    MenuItem\
    {\
        Identifier = SID_DISTRIBUTE_DLG ; \
        HelpId = CMD_SID_DISTRIBUTE_DLG ; \
        Text [ en-US ] = "~Distribution..." ; \
	};

#define MN_DRAWINGMODE \
    MenuItem\
    {\
        Identifier = SID_DRAWINGMODE ; \
        HelpId = CMD_SID_DRAWINGMODE ; \
        Check = TRUE ; \
        Text [ en-US ] = "~Drawing View" ; \
	};

#define MN_OUTLINEMODE \
    MenuItem\
    {\
        Identifier = SID_OUTLINEMODE ; \
        HelpId = CMD_SID_OUTLINEMODE ; \
        Check = TRUE ; \
        Text [ en-US ] = "~Outline View" ; \
	};

#define MN_DIAMODE \
    MenuItem\
    {\
        Identifier = SID_DIAMODE ; \
        HelpId = CMD_SID_DIAMODE ; \
        Check = TRUE ; \
        Text [ en-US ] = "~Slide Sorter" ; \
	};

#define MN_PRESENTATION \
    MenuItem\
    {\
        Identifier = SID_PRESENTATION ; \
        HelpId = CMD_SID_PRESENTATION ; \
        Text [ en-US ] = "Slide Sho~w" ; \
	};

#define MN_CAPTUREPOINT \
    MenuItem\
    {\
        Identifier = SID_CAPTUREPOINT ; \
        HelpId = CMD_SID_CAPTUREPOINT ; \
        Text [ en-US ] = "~Insert Snap Point/Line..." ; \
	};

#define MN_SET_SNAPITEM \
    MenuItem\
    {\
        Identifier = SID_SET_SNAPITEM ; \
        HelpId = CMD_SID_SET_SNAPITEM ; \
        Text [ en-US ] = "~Edit..." ; \
	};

#define MN_DELETE_SNAPITEM \
    MenuItem\
    {\
        Identifier = SID_DELETE_SNAPITEM ; \
        HelpId = CMD_SID_DELETE_SNAPITEM ; \
        Text [ en-US ] = "~Delete" ; \
	};

 // Seiten-Attribute
#define MN_MODIFY_PAGE \
    MenuItem\
    {\
        Identifier = SID_MODIFYPAGE ; \
        HelpId = CMD_SID_MODIFYPAGE ; \
        Text [ en-US ] = "Slide ~Layout" ; \
	};

#define MN_FORMAT_PAGE \
    MenuItem\
    {\
        Identifier = SID_PAGESETUP ; \
        HelpId = CMD_SID_PAGESETUP ; \
        Text [ en-US ] = "~Page Setup..." ; \
	};


#define MN_INSERT_SLIDE \
    MenuItem\
    {\
        Identifier = SID_INSERTPAGE ; \
        HelpId = CMD_SID_INSERTPAGE ; \
        Text [ en-US ] = "~New Slide" ; \
    };

#define MN_INSERT_MASTER \
    MenuItem\
    {\
        Identifier = SID_INSERT_MASTER_PAGE ; \
        HelpId = CMD_SID_INSERT_MASTER_PAGE ; \
        Text [ en-US ] = "~New Master" ; \
    };

#define MN_INSERT_PAGE \
    MenuItem\
    {\
        Identifier = SID_INSERTPAGE ; \
        HelpId = CMD_SID_INSERTPAGE ; \
        Text [ en-US ] = "~New Page" ; \
    };
#define MN_SELECT_BACKGROUND \
    MenuItem\
    {\
        Identifier = SID_SELECT_BACKGROUND ; \
        HelpId = CMD_SID_SELECT_BACKGROUND ; \
        Text [ en-US ] = "Set Background Picture for Slide..." ; \
    };
#define MN_DISPLAY_MASTER_BACKGROUND \
    MenuItem\
    {\
        Identifier = SID_DISPLAY_MASTER_BACKGROUND ; \
        HelpId = CMD_SID_DISPLAY_MASTER_BACKGROUND ; \
        Text [ en-US ] = "Display Background of Master" ; \
    };
#define MN_DISPLAY_MASTER_OBJECTS \
    MenuItem\
    {\
        Identifier = SID_DISPLAY_MASTER_OBJECTS ; \
        HelpId = CMD_SID_DISPLAY_MASTER_OBJECTS ; \
        Text [ en-US ] = "Display Objects from Master" ; \
    };


#define MN_PAGE_MENU \
    MenuItem\
    {\
        Identifier = DUMMY + 3 ; \
        Command = ".uno:PageMenu" ; \
        SubMenu = Menu\
        {\
            ItemList = \
            {\
                MN_FORMAT_PAGE\
                MN_PRESENTATION_LAYOUT\
				MN_RENAME_PAGE\
                SEPARATOR\
                MN_INSERT_PAGE\
                MN_DELETE_PAGE\
            }; \
        }; \
        Text [ en-US ] = "Pag~e" ; \
	};

#define MN_SLIDE_MENU \
    MenuItem\
    {\
        Identifier = DUMMY + 8 ; \
        Command = ".uno:PageMenu" ; \
        SubMenu = Menu\
        {\
            ItemList = \
            {\
                MN_FORMAT_PAGE\
                MN_PRESENTATION_LAYOUT\
                MN_MODIFY_PAGE\
                MN_SELECT_BACKGROUND\
				MN_RENAME_SLIDE\
                SEPARATOR\
                MN_DISPLAY_MASTER_BACKGROUND\
                MN_DISPLAY_MASTER_OBJECTS\
                SEPARATOR\
                MN_INSERT_SLIDE\
                MN_DELETE_SLIDE\
            }; \
        }; \
        Text [ en-US ] = "Slid~e" ; \
	};

 // Layer
#define MN_RENAME_LAYER \
    MenuItem\
    {\
        Identifier = SID_RENAMELAYER ; \
        HelpId = CMD_SID_RENAMELAYER ; \
        Text [ en-US ] = "~Rename Layer..." ; \
	};

#define MN_DELETE_SLIDE \
    MenuItem\
    {\
        Identifier = SID_DELETE_PAGE ; \
        HelpId = CMD_SID_DELETE_PAGE ; \
        Text [ en-US ] = "D~elete Slide" ; \
    };

#define MN_DELETE_MASTER \
    MenuItem\
    {\
        Identifier = SID_DELETE_MASTER_PAGE ; \
        HelpId = CMD_SID_DELETE_MASTER_PAGE ; \
        Text [ en-US ] = "D~elete Master" ; \
    };



#define MN_DELETE_PAGE \
    MenuItem\
    {\
        Identifier = SID_DELETE_PAGE ; \
        HelpId = CMD_SID_DELETE_PAGE ; \
        Text [ en-US ] = "D~elete Page" ; \
	};

#define MN_RENAME_SLIDE \
    MenuItem\
    {\
        Identifier = SID_RENAMEPAGE ; \
        HelpId = CMD_SID_RENAMEPAGE ; \
        Text [ en-US ] = "~Rename Slide" ; \
    };

#define MN_RENAME_MASTER \
    MenuItem\
    {\
        Identifier = SID_RENAME_MASTER_PAGE ; \
        HelpId = CMD_SID_RENAME_MASTER_PAGE ; \
        Text [ en-US ] = "~Rename Master" ; \
    };

#define MN_RENAME_PAGE \
    MenuItem\
    {\
        Identifier = SID_RENAMEPAGE ; \
        HelpId = CMD_SID_RENAMEPAGE ; \
        Text [ en-US ] = "~Rename Page" ; \
    };

 // Grafik-Attribute
#define MN_LINE \
    MenuItem\
    {\
        Identifier = SID_ATTRIBUTES_LINE ; \
        HelpId = CMD_SID_ATTRIBUTES_LINE ; \
        Text [ en-US ] = "L~ine..." ; \
	};

#define MN_AREA \
    MenuItem\
    {\
        Identifier = SID_ATTRIBUTES_AREA ; \
        HelpId = CMD_SID_ATTRIBUTES_AREA ; \
        Text [ en-US ] = "~Area..." ; \
	};

#define MN_TEXTATTR \
    MenuItem\
    {\
        Identifier = SID_TEXTATTR_DLG ; \
        HelpId = CMD_SID_TEXTATTR_DLG ; \
        Text [ en-US ] = "~Text..." ; \
	};

#define MN_CONNECTION \
    MenuItem\
    {\
        Identifier = SID_CONNECTION_DLG ; \
        HelpId = CMD_SID_CONNECTION_DLG ; \
        Text [ en-US ] = "~Connector..." ; \
	};

#define MN_NEW_ROUTING \
    MenuItem\
    {\
        Identifier = SID_CONNECTION_NEW_ROUTING ; \
        HelpId = CMD_SID_CONNECTION_NEW_ROUTING ; \
        Text [ en-US ] = "Reset ~Routing" ; \
	};

#define MN_MEASURE \
    MenuItem\
    {\
        Identifier = SID_MEASURE_DLG ; \
        HelpId = CMD_SID_MEASURE_DLG ; \
        Text [ en-US ] = "Dimen~sions..." ; \
	};

#define MN_TRANSFORM \
    MenuItem\
    {\
        Identifier = SID_ATTR_TRANSFORM ; \
        HelpId = CMD_SID_ATTR_TRANSFORM ; \
        Text [ en-US ] = "Position and Si~ze..." ; \
	};

#define MN_EDIT_POINTS \
    MenuItem\
    {\
        Identifier = SID_BEZIER_EDIT ; \
        HelpId = CMD_SID_BEZIER_EDIT ; \
        Text [ en-US ] = "Edit ~Points" ; \
	};

 // Anordnung
#define MN_POSITION \
    MenuItem\
    {\
        Identifier = SID_POSITION ; \
        HelpId = CMD_SID_POSITION ; \
        Command = ".uno:ObjectPosition" ; \
        Text [ en-US ] = "Arra~nge" ; \
        SubMenu = Menu\
        {\
            ItemList = \
            {\
                MenuItem\
                {\
                    Identifier = SID_FRAME_TO_TOP ; \
                    HelpId = CMD_SID_FRAME_TO_TOP ; \
                    Text [ en-US ] = "~Bring to Front" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_MOREFRONT ; \
                    HelpId = CMD_SID_MOREFRONT ; \
                    Text [ en-US ] = "Bring ~Forward" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_MOREBACK ; \
                    HelpId = CMD_SID_MOREBACK ; \
                    Text [ en-US ] = "Send Back~ward" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_FRAME_TO_BOTTOM ; \
                    HelpId = CMD_SID_FRAME_TO_BOTTOM ; \
                    Text [ en-US ] = "~Send to Back" ; \
				}; \
                MenuItem\
                {\
                    Separator = TRUE ; \
                }; \
                MenuItem\
                {\
                    Identifier = SID_BEFORE_OBJ ; \
                    HelpId = CMD_SID_BEFORE_OBJ ; \
                    Text [ en-US ] = "In Front of ~Object" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_BEHIND_OBJ ; \
                    HelpId = CMD_SID_BEHIND_OBJ ; \
                    Text [ en-US ] = "Be~hind Object" ; \
				}; \
                MenuItem\
                {\
                    Separator = TRUE ; \
                }; \
                MenuItem\
                {\
                    Identifier = SID_REVERSE_ORDER ; \
                    HelpId = CMD_SID_REVERSE_ORDER ; \
                    Text [ en-US ] = "~Reverse" ; \
				}; \
            }; \
        }; \
	};

 // Text-Elemente
#define MN_CHAR \
    MenuItem\
    {\
        Identifier = SID_CHAR_DLG ; \
        HelpId = CMD_SID_CHAR_DLG ; \
        Text [ en-US ] = "C~haracter..." ; \
	};

#define MN_CHAR_PARAGRAPH \
    MN_CHAR \
    MenuItem {\
        Identifier = SID_PARA_DLG; \
        HelpId = CMD_SID_PARA_DLG; \
        Text [ en-US ] = "P~aragraph..." ; \
	};

#define MN_TEXT_ATTR\
    MenuItem\
    {\
        Identifier = SID_ATTR_CHAR_FONT ; \
        HelpId = CMD_SID_ATTR_CHAR_FONT ; \
        Text [ en-US ] = "~Font" ; \
	}; \
    MenuItem\
    {\
        Identifier = SID_ATTR_CHAR_FONTHEIGHT ; \
        HelpId = CMD_SID_ATTR_CHAR_FONTHEIGHT ; \
        Text [ en-US ] = "~Size" ; \
	}; \
    MenuItem\
    {\
        Identifier = DUMMY ; \
        Command = ".uno:StyleMenu" ; \
        Text [ en-US ] = "St~yle" ; \
        SubMenu = Menu\
        {\
            ItemList = \
            {\
                MenuItem\
                {\
                    Identifier = SID_ATTR_CHAR_WEIGHT ; \
                    HelpId = CMD_SID_ATTR_CHAR_WEIGHT ; \
                    Text [ en-US ] = "Bold" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_ATTR_CHAR_POSTURE ; \
                    HelpId = CMD_SID_ATTR_CHAR_POSTURE ; \
                    Text [ en-US ] = "Italic" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_ATTR_CHAR_OVERLINE ; \
                    HelpId = CMD_SID_ATTR_CHAR_OVERLINE ; \
                    Text [ en-US ] = "Overline" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_ATTR_CHAR_UNDERLINE ; \
                    HelpId = CMD_SID_ATTR_CHAR_UNDERLINE ; \
                    Text [ en-US ] = "Underline" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_ATTR_CHAR_STRIKEOUT ; \
                    HelpId = CMD_SID_ATTR_CHAR_STRIKEOUT ; \
                    Text [ en-US ] = "Strikethrough" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_ATTR_CHAR_SHADOWED ; \
                    HelpId = CMD_SID_ATTR_CHAR_SHADOWED ; \
                    Text [ en-US ] = "Shadow" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_ATTR_CHAR_CONTOUR ; \
                    HelpId = CMD_SID_ATTR_CHAR_CONTOUR ; \
                    Text [ en-US ] = "~Contour" ; \
				}; \
            }; \
        }; \
	};

#define MN_LINESPACING_ATTR\
    MenuItem\
    {\
        Identifier = DUMMY + 1 ; \
        Command = ".uno:LineSpacingMenu" ; \
        Text [ en-US ] = "~Line Spacing" ; \
        SubMenu = Menu\
        {\
            ItemList = \
            {\
                MenuItem\
                {\
                    Identifier = SID_ATTR_PARA_LINESPACE_10 ; \
                    HelpId = CMD_SID_ATTR_PARA_LINESPACE_10 ; \
                    RadioCheck = TRUE ; \
                    Text [ en-US ] = "Single Line Spacing" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_ATTR_PARA_LINESPACE_15 ; \
                    HelpId = CMD_SID_ATTR_PARA_LINESPACE_15 ; \
                    RadioCheck = TRUE ; \
                    Text [ en-US ] = "1.5 Lines" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_ATTR_PARA_LINESPACE_20 ; \
                    HelpId = CMD_SID_ATTR_PARA_LINESPACE_20 ; \
                    RadioCheck = TRUE ; \
                    Text [ en-US ] = "~Double" ; \
				}; \
            }; \
        }; \
	};

#define MN_BULLET \
    MenuItem\
    {\
        Identifier = SID_CHARMAP ; \
        HelpId = CMD_SID_CHARMAP ; \
        Text [ en-US ] = "S~pecial Character..." ; \
	};

 // Text-Ausrichtung
#define MN_TEXT_ALIGN\
    MenuItem\
    {\
        Identifier = DUMMY + 2 ; \
        Command = ".uno:AlignTextMenu" ; \
        Text [ en-US ] = "A~lignment" ; \
        SubMenu = Menu\
        {\
            ItemList = \
            {\
                MenuItem\
                {\
                    Identifier = SID_ATTR_PARA_ADJUST_LEFT ; \
                    HelpId = CMD_SID_ATTR_PARA_ADJUST_LEFT ; \
                    RadioCheck = TRUE ; \
                    Text [ en-US ] = "~Left" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_ATTR_PARA_ADJUST_RIGHT ; \
                    HelpId = CMD_SID_ATTR_PARA_ADJUST_RIGHT ; \
                    RadioCheck = TRUE ; \
                    Text [ en-US ] = "~Right" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_ATTR_PARA_ADJUST_CENTER ; \
                    HelpId = CMD_SID_ATTR_PARA_ADJUST_CENTER ; \
                    RadioCheck = TRUE ; \
                    Text [ en-US ] = "~Centered" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_ATTR_PARA_ADJUST_BLOCK ; \
                    HelpId = CMD_SID_ATTR_PARA_ADJUST_BLOCK ; \
                    RadioCheck = TRUE ; \
                    Text [ en-US ] = "Justified" ; \
				}; \
            }; \
        }; \
	};

 // Objekt-Ausrichtung
#define MN_OBJECT_ALIGN \
    MenuItem\
    {\
        Identifier = SID_OBJECT_ALIGN ; \
        Command = ".uno:AlignObjetMenu" ; \
        HelpId = CMD_SID_OBJECT_ALIGN ; \
        Text [ en-US ] = "Al~ignment" ; \
        SubMenu = Menu\
        {\
            ItemList = \
            {\
                MenuItem\
                {\
                    Identifier = SID_OBJECT_ALIGN_LEFT ; \
                    HelpId = CMD_SID_OBJECT_ALIGN_LEFT ; \
                    Text [ en-US ] = "~Left" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_OBJECT_ALIGN_CENTER ; \
                    HelpId = CMD_SID_OBJECT_ALIGN_CENTER ; \
                    Text [ en-US ] = "~Centered" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_OBJECT_ALIGN_RIGHT ; \
                    HelpId = CMD_SID_OBJECT_ALIGN_RIGHT ; \
                    Text [ en-US ] = "~Right" ; \
				}; \
                SEPARATOR\
                MenuItem\
                {\
                    Identifier = SID_OBJECT_ALIGN_UP ; \
                    HelpId = CMD_SID_OBJECT_ALIGN_UP ; \
                    Text [ en-US ] = "~Top" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_OBJECT_ALIGN_MIDDLE ; \
                    HelpId = CMD_SID_OBJECT_ALIGN_MIDDLE ; \
                    Text [ en-US ] = "C~enter" ; \
				}; \
                MenuItem\
                {\
                    Identifier = SID_OBJECT_ALIGN_DOWN ; \
                    HelpId = CMD_SID_OBJECT_ALIGN_DOWN ; \
                    Text [ en-US ] = "~Bottom" ; \
				}; \
            }; \
        }; \
	};

 // Bezier-Funktionen
#define MN_CLOSE_OBJECT \
    MenuItem\
    {\
        Identifier = SID_OBJECT_CLOSE ; \
        HelpId = CMD_SID_OBJECT_CLOSE ; \
        Text [ en-US ] = "Close ~Object" ; \
	};

#define MN_BEZIER \
    MenuItem\
    {\
        Identifier = SID_BEZIER_EDIT ; \
        HelpId = CMD_SID_BEZIER_EDIT ; \
        Text [ en-US ] = "Edit ~Points" ; \
	}; \
    SEPARATOR\
    MenuItem\
    {\
        Identifier = SID_BEZIER_MOVE ; \
        HelpId = CMD_SID_BEZIER_MOVE ; \
        Text [ en-US ] = "~Move Points" ; \
	}; \
    MenuItem\
    {\
        Identifier = SID_BEZIER_INSERT ; \
        HelpId = CMD_SID_BEZIER_INSERT ; \
        Text [ en-US ] = "Insert ~Points" ; \
	}; \
    MenuItem\
    {\
        Identifier = SID_BEZIER_DELETE ; \
        HelpId = CMD_SID_BEZIER_DELETE ; \
        Text [ en-US ] = "~Delete Points" ; \
	}; \
    SEPARATOR\
    MenuItem\
    {\
        Identifier = SID_BEZIER_CLOSE ; \
        HelpId = CMD_SID_BEZIER_CLOSE ; \
        Text [ en-US ] = "Close ~Object" ; \
	}; \
    MenuItem\
    {\
        Identifier = SID_BEZIER_CUTLINE ; \
        HelpId = CMD_SID_BEZIER_CUTLINE ; \
        Text [ en-US ] = "~Split Curve" ; \
	}; \
    MenuItem\
    {\
        Identifier = SID_BEZIER_CONVERT ; \
        HelpId = CMD_SID_BEZIER_CONVERT ; \
        Text [ en-US ] = "Con~vert to Curve" ; \
	}; \
    SEPARATOR\
    MenuItem\
    {\
        Identifier = SID_BEZIER_EDGE ; \
        HelpId = CMD_SID_BEZIER_EDGE ; \
        Text [ en-US ] = "~Corner" ; \
	}; \
    MenuItem\
    {\
        Identifier = SID_BEZIER_SMOOTH ; \
        HelpId = CMD_SID_BEZIER_SMOOTH ; \
        Text [ en-US ] = "Smoot~h" ; \
	}; \
    MenuItem\
    {\
        Identifier = SID_BEZIER_SYMMTR ; \
        HelpId = CMD_SID_BEZIER_SYMMTR ; \
        Text [ en-US ] = "S~ymmetric" ; \
	}; \
    SEPARATOR\
    MenuItem\
    {\
        Identifier = SID_BEZIER_ELIMINATE_POINTS ; \
        HelpId = CMD_SID_BEZIER_ELIMINATE_POINTS ; \
        Text [ en-US ] = "~Reduce Points" ; \
	};

 // Gruppen-/Kombination-Funktionen
#define MN_GROUP \
    MenuItem\
    {\
        Identifier = SID_GROUP ; \
        HelpId = CMD_SID_GROUP ; \
        Text [ en-US ] = "~Group" ; \
	};

#define MN_UNGROUP \
    MenuItem\
    {\
        Identifier = SID_UNGROUP ; \
        HelpId = CMD_SID_UNGROUP ; \
        Text [ en-US ] = "~Ungroup" ; \
	};

#define MN_COMBINE \
    MenuItem\
    {\
        Identifier = SID_COMBINE ; \
        HelpId = CMD_SID_COMBINE ; \
        Text [ en-US ] = "Comb~ine" ; \
	};

#define MN_DISMANTLE \
    MenuItem\
    {\
        Identifier = SID_DISMANTLE ; \
        HelpId = CMD_SID_DISMANTLE ; \
        Text [ en-US ] = "~Split" ; \
	};

#define MN_ENTER_GROUP \
    MenuItem\
    {\
        Identifier = SID_ENTER_GROUP ; \
        HelpId = CMD_SID_ENTER_GROUP ; \
        Text [ en-US ] = "~Enter Group" ; \
	};

#define MN_LEAVE_GROUP \
    MenuItem\
    {\
        Identifier = SID_LEAVE_GROUP ; \
        HelpId = CMD_SID_LEAVE_GROUP ; \
        Text [ en-US ] = "E~xit Group" ; \
	};

#define MN_NAME_GROUP \
    MenuItem\
    {\
        Identifier = SID_NAME_GROUP ; \
        HelpId = CMD_SID_NAME_GROUP ; \
        Text [ en-US ] = "Name..." ; \
	};

#define MN_OBJECT_TITLE_DESCRIPTION \
    MenuItem\
    {\
        Identifier = SID_OBJECT_TITLE_DESCRIPTION; \
        HelpId = CMD_SID_OBJECT_TITLE_DESCRIPTION; \
        Text [ en-US ] = "Description..." ; \
	};

#define MN_EFFECT \
    MenuItem\
    {\
        Identifier = SID_CUSTOM_ANIMATION_PANEL ; \
        HelpId = CMD_SID_CUSTOM_ANIMATION_PANEL ; \
		Text [ en-US ] = "Custom Animation..." ; \
	};

#define MN_ACTION \
    MenuItem\
    {\
        Identifier = SID_ANIMATION_EFFECTS ; \
        HelpId = CMD_SID_ANIMATION_EFFECTS ; \
        Text [ en-US ] = "Int~eraction..." ; \
	};

#define MN_PRESENTATIONOBJECT \
    MenuItem\
    {\
        Identifier = SID_PRESENTATIONOBJECT ; \
        HelpId = CMD_SID_PRESENTATIONOBJECT ; \
        Text [ en-US ] = "Presentation ~Object..." ; \
	};

#define MN_SET_DEFAULT\
    MenuItem\
    {\
        Identifier = SID_SET_DEFAULT ; \
        HelpId = CMD_SID_SET_DEFAULT ; \
        Text [ en-US ] = "~Default" ; \
	};

#define MN_FONTWORK\
    MenuItem\
    {\
        Identifier = SID_FONTWORK ; \
        HelpId = CMD_SID_FONTWORK ; \
        Text [ en-US ] = "F~ontwork" ; \
	};

#define MN_OLE_OBJECT\
    MenuItem\
    {\
        Identifier = SID_OBJECT ; \
        HelpId = CMD_SID_OBJECT ; \
        Text [ en-US ] = "~OLE Object" ; \
	};

#define MN_ORIGINAL_SIZE\
    MenuItem\
    {\
        Identifier = SID_ORIGINAL_SIZE ; \
        HelpId = CMD_SID_ORIGINAL_SIZE ; \
        Text [ en-US ] = "~Original Size" ; \
	};

#define MN_SAVEGRAPHIC\
    MenuItem\
    {\
        Identifier = SID_SAVEGRAPHIC ; \
        HelpId = CMD_SID_SAVEGRAPHIC ; \
		Text [ en-US ] = "Save as Picture..." ; \
	};

#define MN_CROP\
	MenuItem\
	{\
		Identifier = SID_ATTR_GRAF_CROP ; \
		HelpId = CMD_SID_ATTR_GRAF_CROP ; \
		Text [ en-US ] = "Crop Picture..." ; \
	};

#define MN_NAVIGATOR\
    MenuItem\
    {\
		Identifier = SID_NAVIGATOR ; \
		Command = ".uno:Navigator" ; \
		HelpId = CMD_SID_NAVIGATOR ; \
		Text [ en-US ] = "Na~vigator" ; \
	};

#define MN_GLUE_INSERT_POINT\
    MenuItem\
    {\
        Identifier = SID_GLUE_INSERT_POINT ; \
        HelpId = CMD_SID_GLUE_INSERT_POINT ; \
        Text [ en-US ] = "Insert ~Point" ; \
	};

#define MN_GLUE_ESC_DIR_LEFT\
    MenuItem\
    {\
        Identifier = SID_GLUE_ESCDIR_LEFT ; \
        HelpId = CMD_SID_GLUE_ESCDIR_LEFT ; \
        Text [ en-US ] = "~Left" ; \
	};

#define MN_GLUE_ESC_DIR_TOP\
    MenuItem\
    {\
        Identifier = SID_GLUE_ESCDIR_TOP ; \
        HelpId = CMD_SID_GLUE_ESCDIR_TOP ; \
        Text [ en-US ] = "~Top" ; \
	};

#define MN_GLUE_ESC_DIR_RIGHT\
    MenuItem\
    {\
        Identifier = SID_GLUE_ESCDIR_RIGHT ; \
        HelpId = CMD_SID_GLUE_ESCDIR_RIGHT ; \
        Text [ en-US ] = "~Right" ; \
	};

#define MN_GLUE_ESC_DIR_BOTTOM\
    MenuItem\
    {\
        Identifier = SID_GLUE_ESCDIR_BOTTOM ; \
        HelpId = CMD_SID_GLUE_ESCDIR_BOTTOM ; \
        Text [ en-US ] = "~Bottom" ; \
	};

#define MN_GLUE_PERCENT\
    MenuItem\
    {\
        Identifier = SID_GLUE_PERCENT ; \
        HelpId = CMD_SID_GLUE_PERCENT ; \
        Text [ en-US ] = "~Adapt Position to Object" ; \
	};

#define MN_GLUE_HORZALIGN_LEFT\
    MenuItem\
    {\
        Identifier = SID_GLUE_HORZALIGN_LEFT ; \
        HelpId = CMD_SID_GLUE_HORZALIGN_LEFT ; \
        RadioCheck = TRUE ; \
        Text [ en-US ] = "Fixed ~Horizontal Left" ; \
	};

#define MN_GLUE_HORZALIGN_CENTER\
    MenuItem\
    {\
        Identifier = SID_GLUE_HORZALIGN_CENTER ; \
        HelpId = CMD_SID_GLUE_HORZALIGN_CENTER ; \
        RadioCheck = TRUE ; \
        Text [ en-US ] = "Fixed Horizontal ~Center" ; \
	};

#define MN_GLUE_HORZALIGN_RIGHT\
    MenuItem\
    {\
        Identifier = SID_GLUE_HORZALIGN_RIGHT ; \
        HelpId = CMD_SID_GLUE_HORZALIGN_RIGHT ; \
        RadioCheck = TRUE ; \
        Text [ en-US ] = "Fixed Hori~zontal Right" ; \
	};

#define MN_GLUE_VERTALIGN_TOP\
    MenuItem\
    {\
        Identifier = SID_GLUE_VERTALIGN_TOP ; \
        HelpId = CMD_SID_GLUE_VERTALIGN_TOP ; \
        RadioCheck = TRUE ; \
        Text [ en-US ] = "Fixed ~Vertical Top" ; \
	};

#define MN_GLUE_VERTALIGN_CENTER\
    MenuItem\
    {\
        Identifier = SID_GLUE_VERTALIGN_CENTER ; \
        HelpId = CMD_SID_GLUE_VERTALIGN_CENTER ; \
        RadioCheck = TRUE ; \
        Text [ en-US ] = "Fixed V~ertical Center" ; \
	};

#define MN_GLUE_VERTALIGN_BOTTOM\
    MenuItem\
    {\
        Identifier = SID_GLUE_VERTALIGN_BOTTOM ; \
        HelpId = CMD_SID_GLUE_VERTALIGN_BOTTOM ; \
        RadioCheck = TRUE ; \
        Text [ en-US ] = "Fixed Ver~tical Bottom" ; \
	};

#define MN_GRID_VISIBLE\
    MenuItem\
    {\
        Identifier = SID_GRID_VISIBLE ; \
        HelpId = CMD_SID_GRID_VISIBLE ; \
        Text [ en-US ] = "~Visible Grid" ; \
	};

#define MN_GRID_USE\
    MenuItem\
    {\
        Identifier = SID_GRID_USE ; \
        HelpId = CMD_SID_GRID_USE; \
		Text [ en-US ] = "Snap to Grid" ; \
	};

#define MN_GRID_FRONT\
    MenuItem\
    {\
        Identifier = SID_GRID_FRONT ; \
        HelpId = CMD_SID_GRID_FRONT ; \
        Text [ en-US ] = "Grid to ~Front" ; \
	};

#define MN_GRID \
    MenuItem\
    {\
        Identifier = DUMMY + 5 ; \
        Command = ".uno:GridMenu" ; \
        SubMenu = Menu\
        {\
            ItemList = \
            {\
                MN_GRID_VISIBLE\
                MN_GRID_USE\
                MN_GRID_FRONT\
            }; \
        }; \
		Text [ en-US ] = "~Grid" ; \
	};

#define MN_HELPLINES_VISIBLE\
    MenuItem\
    {\
        Identifier = SID_HELPLINES_VISIBLE ; \
        HelpId = CMD_SID_HELPLINES_VISIBLE ; \
        Text [ en-US ] = "~Snap Lines Visible" ; \
	};

#define MN_HELPLINES_USE\
    MenuItem\
    {\
        Identifier = SID_HELPLINES_USE ; \
        HelpId = CMD_SID_HELPLINES_USE ; \
		Text [ en-US ] = "Snap to Snap Lines" ; \
	};

#define MN_HELPLINES_FRONT\
    MenuItem\
    {\
        Identifier = SID_HELPLINES_FRONT ; \
        HelpId = CMD_SID_HELPLINES_FRONT ; \
        Text [ en-US ] = "Snap Lines to Front" ; \
	};

#define MN_HELPLINES \
    MenuItem\
    {\
        Identifier = DUMMY + 6 ; \
        Command = ".uno:SnapLinesMenu" ; \
        SubMenu = Menu\
        {\
            ItemList = \
            {\
                MN_HELPLINES_VISIBLE\
                MN_HELPLINES_USE\
                MN_HELPLINES_FRONT\
            }; \
        }; \
		Text [ en-US ] = "~Snap Lines" ; \
	};

#define MN_CONTROL_SHOW_BROWSER\
    MenuItem\
    {\
        Identifier = SID_SHOW_BROWSER ; \
        HelpId = CMD_SID_SHOW_BROWSER ; \
        Text [ en-US ] = "Propert~ies..." ; \
	};

#define MN_CONVERT_TO_1BIT_THRESHOLD\
    MenuItem\
    {\
        Identifier = SID_CONVERT_TO_1BIT_THRESHOLD ; \
        HelpId = CMD_SID_CONVERT_TO_1BIT_THRESHOLD ; \
        Text [ en-US ] = "1Bit ~Threshold" ; \
	};

#define MN_CONVERT_TO_1BIT_MATRIX\
    MenuItem\
    {\
        Identifier = SID_CONVERT_TO_1BIT_MATRIX ; \
        HelpId = CMD_SID_CONVERT_TO_1BIT_MATRIX ; \
        Text [ en-US ] = "1 Bit ~Dithering" ; \
	};

#define MN_CONVERT_TO_4BIT_GRAYS\
    MenuItem\
    {\
        Identifier = SID_CONVERT_TO_4BIT_GRAYS ; \
        HelpId = CMD_SID_CONVERT_TO_4BIT_GRAYS ; \
        Text [ en-US ] = "4 Bit G~rayscales" ; \
	};

#define MN_CONVERT_TO_4BIT_COLORS\
    MenuItem\
    {\
        Identifier = SID_CONVERT_TO_4BIT_COLORS ; \
        HelpId = CMD_SID_CONVERT_TO_4BIT_COLORS ; \
        Text [ en-US ] = "4 Bit ~Color Palette" ; \
	};

#define MN_CONVERT_TO_8BIT_GRAYS\
    MenuItem\
    {\
        Identifier = SID_CONVERT_TO_8BIT_GRAYS ; \
        HelpId = CMD_SID_CONVERT_TO_8BIT_GRAYS ; \
        Text [ en-US ] = "8 Bit Gr~ayscales" ; \
	};

#define MN_CONVERT_TO_8BIT_COLORS\
    MenuItem\
    {\
        Identifier = SID_CONVERT_TO_8BIT_COLORS ; \
        HelpId = CMD_SID_CONVERT_TO_8BIT_COLORS ; \
        Text [ en-US ] = "8 Bit C~olor Palette" ; \
	};

#define MN_CONVERT_TO_24BIT\
    MenuItem\
    {\
        Identifier = SID_CONVERT_TO_24BIT ; \
        HelpId = CMD_SID_CONVERT_TO_24BIT ; \
        Text [ en-US ] = "24 Bit ~True Colors" ; \
	};

#define MN_COLORRESOLUTION \
    MenuItem\
    {\
        Identifier = DUMMY + 4 ; \
        Command = ".uno:ColorResMenu" ; \
        SubMenu = Menu\
        {\
            ItemList = \
            {\
                MN_CONVERT_TO_1BIT_THRESHOLD\
                MN_CONVERT_TO_1BIT_MATRIX\
                MN_CONVERT_TO_4BIT_GRAYS\
                MN_CONVERT_TO_4BIT_COLORS\
                MN_CONVERT_TO_8BIT_GRAYS\
                MN_CONVERT_TO_8BIT_COLORS\
                MN_CONVERT_TO_24BIT\
            }; \
        }; \
        Text [ en-US ] = "~Color Resolution" ; \
	};

#define MNSUB_CONVERT \
    MenuItem\
    {\
        Identifier = SID_CONVERT ; \
        Command = ".uno:ConvertMenu" ; \
        HelpId = HID_MN_SUB_CONVERT ; \
        Text [ en-US ] = "Con~vert" ; \
        SubMenu = Menu\
        {\
            ItemList = \
            {\
                MN_CHANGEBEZIER\
                MN_CHANGEPOLYGON\
                MN_CONVERT_TO_CONTOUR\
                MN_CONVERT_TO_3D\
                MN_CONVERT_TO_3D_LATHE_FAST\
				MN_CONVERT_TO_BITMAP\
				MN_CONVERT_TO_METAFILE\
            }; \
        }; \
	};

#define MNSUB_MIRROR \
    MenuItem\
    {\
        Identifier = SID_MIRROR ; \
        HelpId = HID_MN_SUB_MIRROR ; \
        Command = ".uno:MirrorMenu" ; \
        Text [ en-US ] = "~Flip" ; \
        SubMenu = Menu\
        {\
            ItemList = \
            {\
                MN_VERTICAL\
                MN_HORIZONTAL\
            }; \
        }; \
	};

#define MNSUB_ROTATE \
    MenuItem\
    {\
		Identifier = SID_OBJECT_ROTATE ; \
		HelpId = CMD_SID_OBJECT_ROTATE ; \
		Text [ en-US ] = "~Rotate" ; \
	};

#define MN_CONNECT \
    MenuItem\
    {\
        Identifier = SID_CONNECT ; \
        HelpId = CMD_SID_CONNECT ; \
        Text [ en-US ] = "C~onnect" ; \
	};

#define MN_BREAK \
    MenuItem\
    {\
        Identifier = SID_BREAK ; \
        HelpId = CMD_SID_BREAK ; \
        Text [ en-US ] = "~Break" ; \
	};

#define MN_STYLEDT \
    MenuItem\
    {\
        Identifier = SID_STYLE_EDIT ; \
        HelpId = CMD_SID_STYLE_EDIT ; \
        Text [ en-US ] = "Edit Style..." ; \
	};

#define MN_EDIT_HYPERLINK \
    MenuItem\
    {\
        Identifier = SID_EDIT_HYPERLINK ; \
        HelpId = CMD_SID_EDIT_HYPERLINK ; \
        Text [ en-US ] = "H~yperlink..." ; \
	};

#define MN_POINT_EDITMODE \
    MenuItem\
    {\
        Identifier = SID_BEZIER_EDIT ; \
        HelpId = CMD_SID_BEZIER_EDIT ; \
		Text [ en-US ] = "Poi~nts" ; \
	};

#define MN_GLUE_EDITMODE \
    MenuItem\
    {\
		Identifier = SID_GLUE_EDITMODE ; \
		HelpId = CMD_SID_GLUE_EDITMODE ; \
		Text [ en-US ] = "~Glue Points" ; \
	};

#define MN_LAYER_EDITMODE \
    MenuItem\
	{\
        Identifier = DUMMY + 7 ; \
        Command = ".uno:LayerMenu" ; \
		Text [ en-US ] =  "La~yer" ; \
        SubMenu	= Menu \
		{\
            ItemList = \
            {\
				MenuItem \
				{\
					Identifier = SID_INSERTLAYER ; \
					HelpId = CMD_SID_INSERTLAYER ; \
					Text [ en-US ] = "~Insert" ; \
				}; \
				MenuItem \
				{\
					Identifier = SID_MODIFYLAYER ; \
					HelpId = CMD_SID_MODIFYLAYER ; \
					Text [ en-US ] = "~Modify" ; \
				}; \
				MenuItem \
				{\
					Identifier = SID_DELETE_LAYER ; \
					HelpId = CMD_SID_DELETE_LAYER ; \
					Text [ en-US ] = "Delete" ; \
				}; \
				MenuItem \
				{\
					Identifier = SID_RENAMELAYER ; \
					HelpId = CMD_SID_RENAMELAYER ; \
					Text [ en-US ] = "~Rename" ; \
				}; \
            }; \
        }; \
	};

// ------------------------------------------------------------------------------------------------
// impress popups
// ------------------------------------------------------------------------------------------------

Menu RID_DRAW_TEXTOBJ_POPUP
{
	ItemList =
	{
		MN_SET_DEFAULT
		SEPARATOR
		MN_LINE
		MN_AREA
		MN_TEXTATTR
		MN_TRANSFORM
		MN_FONTWORK
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_CONVERT
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_EFFECT
		MN_ACTION
		SEPARATOR
		MN_STYLEDT
	};
};

//
// GEOMOBJ_POPUP
//
	Menu RID_DRAW_GEOMOBJ_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_AREA
		MN_TEXTATTR
		MN_TRANSFORM
		MN_EDIT_POINTS
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_MIRROR
		MNSUB_CONVERT
		SEPARATOR
		MN_LEAVE_GROUP
		MN_DISMANTLE
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_EFFECT
		MN_ACTION
		SEPARATOR
		MN_STYLEDT
	};
};

//
// Customshape POPUP
//
	Menu RID_DRAW_CUSTOMSHAPE_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_AREA
		MN_TEXTATTR
		MN_TRANSFORM
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_MIRROR
		// #i37263#
		MNSUB_CONVERT
		SEPARATOR
		MN_LEAVE_GROUP
		MN_DISMANTLE
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_EFFECT
		MN_ACTION
		SEPARATOR
		MN_STYLEDT
		SEPARATOR
	};
};

//
// 3DOSCENE_POPUP
//
	Menu RID_DRAW_3DSCENE_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_AREA
		MN_TRANSFORM
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_CONVERT
		SEPARATOR
		MN_ENTER_GROUP
		MN_3D_WIN
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_EFFECT
		MN_ACTION
	};
};

//
// 3DOSCENE2_POPUP
//
	Menu RID_DRAW_3DSCENE2_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_AREA
		MN_TRANSFORM
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_CONVERT
		SEPARATOR
		MN_ENTER_GROUP
		MN_LEAVE_GROUP
		MN_3D_WIN
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_EFFECT
		MN_ACTION
	};
};

//
// 3DOBJ_POPUP
//
Menu RID_DRAW_3DOBJ_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_AREA
		MN_TRANSFORM
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_CONVERT
		SEPARATOR
		MN_LEAVE_GROUP
		MN_3D_WIN
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_EFFECT
		MN_ACTION
		SEPARATOR
		MN_STYLEDT
	};
};

//
// GROUPOBJ_POPUP
//
Menu RID_DRAW_GROUPOBJ_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_AREA
		MN_TRANSFORM
		MN_EDIT_POINTS
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_MIRROR
		MNSUB_CONVERT
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_UNGROUP
		MN_ENTER_GROUP
		SEPARATOR
		MN_EFFECT
		MN_ACTION
	};
};

//
// LINEOBJ_POPUP
//
Menu RID_DRAW_LINEOBJ_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_TRANSFORM
		MN_EDIT_POINTS
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_MIRROR
		MNSUB_CONVERT
		SEPARATOR
		MN_LEAVE_GROUP
		MN_DISMANTLE
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_EFFECT
		MN_ACTION
		SEPARATOR
		MN_STYLEDT
	};
};

//
// EDGEOBJ_POPUP
//
Menu RID_DRAW_EDGEOBJ_POPUP
{
	ItemList =
	{
		MN_NEW_ROUTING
		SEPARATOR
		MN_LINE
		MN_CONNECTION
		MN_TRANSFORM
		MN_EDIT_POINTS
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_CONVERT
		SEPARATOR
		MN_LEAVE_GROUP
		MN_DISMANTLE
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_EFFECT
		MN_ACTION
		SEPARATOR
		MN_STYLEDT
	};
};

//
// MEASUREOBJ_POPUP
//
Menu RID_DRAW_MEASUREOBJ_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_TEXTATTR
		MN_MEASURE
		MN_TRANSFORM
		MN_EDIT_POINTS
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_MIRROR
		MNSUB_CONVERT
		SEPARATOR
		MN_LEAVE_GROUP
		MN_DISMANTLE
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_EFFECT
		MN_ACTION
		SEPARATOR
		MN_STYLEDT
	};
};

//
// POLYLINEOBJ_POPUP
//
Menu RID_DRAW_POLYLINEOBJ_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_TRANSFORM
		MN_EDIT_POINTS
		MN_CLOSE_OBJECT
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_MIRROR
		MNSUB_CONVERT
		SEPARATOR
		MN_LEAVE_GROUP
		MN_DISMANTLE
		MN_BREAK
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_EFFECT
		MN_ACTION
		SEPARATOR
		MN_STYLEDT
	};
};

//
// NOSEL_POPUP
//
Menu RID_DRAW_NOSEL_POPUP
{
	ItemList =
	{
		MN_SLIDE_MENU
		SEPARATOR
		MN_CAPTUREPOINT
		SEPARATOR
		MN_LEAVE_GROUP
		SEPARATOR
		MN_NAVIGATOR
		SEPARATOR
		MN_GRID
		SEPARATOR
		MN_HELPLINES
		SEPARATOR
		MN_OUTLINEMODE
		MN_DIAMODE
		MN_PRESENTATION
	};
};

//
// MULTISELECTION_POPUP
//
Menu RID_DRAW_MULTISELECTION_POPUP
{
	ItemList =
	{
		MN_SET_DEFAULT
		SEPARATOR
		MN_LINE
		MN_AREA
		MN_TRANSFORM
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_MIRROR
		MNSUB_CONVERT
		SEPARATOR
		MN_GROUP
		MN_UNGROUP
		MN_LEAVE_GROUP
		MN_COMBINE
		MNSUB_FORMEN
		MN_DISMANTLE
		MN_CONNECT
		MN_BREAK
		SEPARATOR
		MN_EFFECT
		MN_ACTION
	};
};

//
// GRAPHIC_POPUP
//
Menu RID_DRAW_GRAPHIC_POPUP
{
	ItemList =
	{
		MN_TRANSFORM
		MN_ORIGINAL_SIZE
		MN_LINE
		MN_AREA
		MN_TEXTATTR
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_CROP
		MN_OBJECT_ALIGN
		MN_POSITION
		MN_DISTRIBUTE
		MNSUB_MIRROR
		MNSUB_CONVERT
		MN_BREAK
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_EFFECT
		MN_ACTION
		SEPARATOR
		MN_STYLEDT
		SEPARATOR
		MN_SAVEGRAPHIC
	};
};

//
// OLE2_POPUP
//
Menu RID_DRAW_OLE2_POPUP
{
	ItemList =
	{
		MN_TRANSFORM
		MN_ORIGINAL_SIZE
		MN_OLE_OBJECT
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MN_BREAK
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_EFFECT
		MN_ACTION
	};
};


//
// PAGETAB_POPUP
//
Menu RID_DRAW_PAGETAB_POPUP
{
	ItemList =
	{
		MN_INSERT_SLIDE
		MN_DELETE_SLIDE
		MN_MODIFY_PAGE
		MN_RENAME_PAGE
	};
};

//
// Media_POPUP
//
Menu RID_DRAW_MEDIA_POPUP
{
	ItemList =
	{
		MN_TRANSFORM
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MN_BREAK
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_EFFECT
		MN_ACTION
	};
};

//
// Table shape context menu
//
Menu RID_DRAW_TABLE_POPUP
{
	ItemList =
	{
		MN_SET_DEFAULT
		SEPARATOR
		MN_TRANSFORM
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MenuItem
		{
			Identifier = SID_FORMAT_TABLE_DLG ;
			HelpId = CMD_SID_FORMAT_TABLE_DLG ;
			Text [ en-US ] = "~Table..." ;
		};
		MenuItem
		{
			Identifier = DUMMY + 10 ;
			Command = ".uno:CellMenu" ;
			Text [ en-US ] = "~Cell" ;
			SubMenu = Menu
			{
				ItemList =
				{
					MenuItem
					{
						Identifier = SID_TABLE_MERGE_CELLS ;
						HelpId = CMD_SID_TABLE_MERGE_CELLS ;
						Text [ en-US ] = "~Merge" ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_SPLIT_CELLS ;
						HelpId = CMD_SID_TABLE_SPLIT_CELLS ;
						Text [ en-US ] = "~Split..." ;
					};
					SEPARATOR
					MenuItem
					{
						Identifier = SID_TABLE_VERT_NONE ;
						HelpId = CMD_SID_TABLE_VERT_NONE ;
						Text [ en-US ] = "~Top" ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_VERT_CENTER ;
						HelpId = CMD_SID_TABLE_VERT_CENTER ;
						Text [ en-US ] = "C~enter" ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_VERT_BOTTOM ;
						HelpId = CMD_SID_TABLE_VERT_BOTTOM ;
						Text [ en-US ] = "~Bottom" ;
					};
				};
			};
		};
		MenuItem
		{
			Identifier = DUMMY + 11 ;
			Command = ".uno:RowMenu" ;
			Text [ en-US ] = "~Row" ;
			SubMenu = Menu
			{
				ItemList =
				{
					MenuItem
					{
						Identifier = SID_TABLE_DISTRIBUTE_ROWS ;
						HelpId = CMD_SID_TABLE_DISTRIBUTE_ROWS ;
						Text [ en-US ] = "Space ~Equally" ;
					};
					SEPARATOR
					MenuItem
					{
						Identifier = SID_TABLE_SELECT_ROW ;
						HelpId = CMD_SID_TABLE_SELECT_ROW ;
						Text [ en-US ] = "~Select" ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_INSERT_ROW_DLG ;
						HelpId = CMD_SID_TABLE_INSERT_ROW_DLG ;
						Text [ en-US ] = "~Insert..." ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_DELETE_ROW ;
						HelpId = CMD_SID_TABLE_DELETE_ROW ;
						Text [ en-US ] = "~Delete" ;
					};
				};
			};
		};
		MenuItem
		{
			Identifier = DUMMY + 12 ;
			Command = ".uno:ColumnMenu" ;
			Text [ en-US ] = "Colu~mn" ;
			SubMenu = Menu
			{
				ItemList =
				{
					MenuItem
					{
						Identifier = SID_TABLE_DISTRIBUTE_COLUMNS ;
						HelpId = CMD_SID_TABLE_DISTRIBUTE_COLUMNS ;
						Text [ en-US ] = "Space ~Equally" ;
					};
					SEPARATOR
					MenuItem
					{
						Identifier = SID_TABLE_SELECT_COL ;
						HelpId = CMD_SID_TABLE_SELECT_COL ;
						Text [ en-US ] = "~Select" ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_INSERT_COL_DLG ;
						HelpId = CMD_SID_TABLE_INSERT_COL_DLG ;
						Text [ en-US ] = "~Insert..." ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_DELETE_COL ;
						HelpId = CMD_SID_TABLE_DELETE_COL ;
						Text [ en-US ] = "~Delete" ;
					};
				};
			};
		};
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_CONVERT
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_EFFECT
		MN_ACTION
		SEPARATOR
		MN_STYLEDT
	};
};

// ------------------------------------------------------------------------------------------------
// draw popups
// ------------------------------------------------------------------------------------------------
//
// TEXTOBJ_POPUP
//
Menu RID_GRAPHIC_TEXTOBJ_POPUP
{
	ItemList =
	{
		MN_SET_DEFAULT
		SEPARATOR
		MN_LINE
		MN_AREA
		MN_TEXTATTR
		MN_TRANSFORM
		MN_FONTWORK
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_CONVERT
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_STYLEDT
	};
};

//
// GEOMOBJ_POPUP
//
Menu RID_GRAPHIC_GEOMOBJ_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_AREA
		MN_TEXTATTR
		MN_TRANSFORM
		MN_EDIT_POINTS
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_MIRROR
		MNSUB_CONVERT
		SEPARATOR
		MN_LEAVE_GROUP
		MN_DISMANTLE
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_STYLEDT
	};
};

//
// Customshape POPUP
//
Menu RID_GRAPHIC_CUSTOMSHAPE_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_AREA
		MN_TEXTATTR
		MN_TRANSFORM
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_MIRROR
		// #i37263#
		MNSUB_CONVERT
		SEPARATOR
		MN_LEAVE_GROUP
		MN_DISMANTLE
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_STYLEDT
		SEPARATOR

	};
};

//
// 3DOSCENE_POPUP
//
Menu RID_GRAPHIC_3DSCENE_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_AREA
		MN_TRANSFORM
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_CONVERT
		SEPARATOR
		MN_ENTER_GROUP
		MN_3D_WIN
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
	};
};

//
// 3DOSCENE2_POPUP
//
Menu RID_GRAPHIC_3DSCENE2_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_AREA
		MN_TRANSFORM
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_CONVERT
		SEPARATOR
		MN_ENTER_GROUP
		MN_LEAVE_GROUP
		MN_3D_WIN
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
	};
};

//
// 3DOBJ_POPUP
//
Menu RID_GRAPHIC_3DOBJ_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_AREA
		MN_TRANSFORM
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_CONVERT
		SEPARATOR
		MN_LEAVE_GROUP
		MN_3D_WIN
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_STYLEDT
	};
};

//
// GROUPOBJ_POPUP
//
Menu RID_GRAPHIC_GROUPOBJ_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_AREA
		MN_TRANSFORM
		MN_EDIT_POINTS
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_MIRROR
		MNSUB_CONVERT
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_UNGROUP
		MN_ENTER_GROUP
	};
};

//
// LINEOBJ_POPUP
//
Menu RID_GRAPHIC_LINEOBJ_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_TRANSFORM
		MN_EDIT_POINTS
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_MIRROR
		MNSUB_CONVERT
		SEPARATOR
		MN_LEAVE_GROUP
		MN_DISMANTLE
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_STYLEDT
	};
};

//
// EDGEOBJ_POPUP
//
Menu RID_GRAPHIC_EDGEOBJ_POPUP
{
	ItemList =
	{
		MN_NEW_ROUTING
		SEPARATOR
		MN_LINE
		MN_CONNECTION
		MN_TRANSFORM
		MN_EDIT_POINTS
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_CONVERT
		SEPARATOR
		MN_LEAVE_GROUP
		MN_DISMANTLE
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_STYLEDT
	};
};

//
// MEASUREOBJ_POPUP
//
Menu RID_GRAPHIC_MEASUREOBJ_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_TEXTATTR
		MN_MEASURE
		MN_TRANSFORM
		MN_EDIT_POINTS
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_MIRROR
		MNSUB_CONVERT
		SEPARATOR
		MN_LEAVE_GROUP
		MN_DISMANTLE
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_STYLEDT
	};
};


//
// POLYLINEOBJ_POPUP
//
Menu RID_GRAPHIC_POLYLINEOBJ_POPUP
{
	ItemList =
	{
		MN_LINE
		MN_TRANSFORM
		MN_EDIT_POINTS
		MN_CLOSE_OBJECT
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_MIRROR
		MNSUB_CONVERT
		SEPARATOR
		MN_LEAVE_GROUP
		MN_DISMANTLE
		MN_BREAK
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_STYLEDT
	};
};

//
// NOSEL_POPUP
//
Menu RID_GRAPHIC_NOSEL_POPUP
{
	ItemList =
	{
		MN_PAGE_MENU
		SEPARATOR
		MN_CAPTUREPOINT
		SEPARATOR
		MN_LEAVE_GROUP
		SEPARATOR
		MN_NAVIGATOR
		SEPARATOR
		MN_GRID
		SEPARATOR
		MN_HELPLINES
	};
};

//
// MULTISELECTION_POPUP
//
Menu RID_GRAPHIC_MULTISELECTION_POPUP
{
	ItemList =
	{
		MN_SET_DEFAULT
		SEPARATOR
		MN_LINE
		MN_AREA
		MN_TRANSFORM
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_MIRROR
		MNSUB_CONVERT
		SEPARATOR
		MN_GROUP
		MN_UNGROUP
		MN_LEAVE_GROUP
		MN_COMBINE
		MNSUB_FORMEN
		MN_DISMANTLE
		MN_CONNECT
		MN_BREAK
	};
};

//
// GRAPHIC_POPUP
//
Menu RID_GRAPHIC_GRAPHIC_POPUP
{
	ItemList =
	{
		MN_TRANSFORM
		MN_ORIGINAL_SIZE
		MN_LINE
		MN_AREA
		MN_TEXTATTR
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_CROP
		MN_OBJECT_ALIGN
		MN_POSITION
		MN_DISTRIBUTE
		MNSUB_MIRROR
		MNSUB_CONVERT
		MN_BREAK
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_STYLEDT
		SEPARATOR
		MN_SAVEGRAPHIC
	};
};

//
// OLE2_POPUP
//
Menu RID_GRAPHIC_OLE2_POPUP
{
	ItemList =
	{
		MN_TRANSFORM
		MN_ORIGINAL_SIZE
		MN_OLE_OBJECT
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MN_BREAK
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
	};
};


//
// PAGETAB_POPUP
//
Menu RID_GRAPHIC_PAGETAB_POPUP
{
	ItemList =
	{
		MN_INSERT_PAGE
		MN_DELETE_PAGE
		MN_RENAME_PAGE
	};
};

//
// Media_POPUP
//
Menu RID_GRAPHIC_MEDIA_POPUP
{
	ItemList =
	{
		MN_TRANSFORM
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MN_BREAK
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
	};
};

//
// Table shape context menu
//
Menu RID_GRAPHIC_TABLE_POPUP
{
	ItemList =
	{
		MN_SET_DEFAULT
		SEPARATOR
		MN_TRANSFORM
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MenuItem
		{
			Identifier = SID_FORMAT_TABLE_DLG ;
			HelpId = CMD_SID_FORMAT_TABLE_DLG ;
			Text [ en-US ] = "~Table..." ;
		};
		MenuItem
		{
			Identifier = DUMMY + 10 ;
			Command = ".uno:CellMenu" ;
			Text [ en-US ] = "~Cell" ;
			SubMenu = Menu
			{
				ItemList =
				{
					MenuItem
					{
						Identifier = SID_TABLE_MERGE_CELLS ;
						HelpId = CMD_SID_TABLE_MERGE_CELLS ;
						Text [ en-US ] = "~Merge" ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_SPLIT_CELLS ;
						HelpId = CMD_SID_TABLE_SPLIT_CELLS ;
						Text [ en-US ] = "~Split..." ;
					};
					SEPARATOR
					MenuItem
					{
						Identifier = SID_TABLE_VERT_NONE ;
						HelpId = CMD_SID_TABLE_VERT_NONE ;
						Text [ en-US ] = "~Top" ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_VERT_CENTER ;
						HelpId = CMD_SID_TABLE_VERT_CENTER ;
						Text [ en-US ] = "C~enter" ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_VERT_BOTTOM ;
						HelpId = CMD_SID_TABLE_VERT_BOTTOM ;
						Text [ en-US ] = "~Bottom" ;
					};
				};
			};
		};
		MenuItem
		{
			Identifier = DUMMY + 11 ;
			Command = ".uno:RowMenu" ;
			Text [ en-US ] = "~Row" ;
			SubMenu = Menu
			{
				ItemList =
				{
					MenuItem
					{
						Identifier = SID_TABLE_DISTRIBUTE_ROWS ;
						HelpId = CMD_SID_TABLE_DISTRIBUTE_ROWS ;
						Text [ en-US ] = "Space ~Equally" ;
					};
					SEPARATOR
					MenuItem
					{
						Identifier = SID_TABLE_SELECT_ROW ;
						HelpId = CMD_SID_TABLE_SELECT_ROW ;
						Text [ en-US ] = "~Select" ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_INSERT_ROW_DLG ;
						HelpId = CMD_SID_TABLE_INSERT_ROW_DLG ;
						Text [ en-US ] = "~Insert..." ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_DELETE_ROW ;
						HelpId = CMD_SID_TABLE_DELETE_ROW ;
						Text [ en-US ] = "~Delete" ;
					};
				};
			};
		};
		MenuItem
		{
			Identifier = DUMMY + 12 ;
			Command = ".uno:ColumnMenu" ;
			Text [ en-US ] = "Colu~mn" ;
			SubMenu = Menu
			{
				ItemList =
				{
					MenuItem
					{
						Identifier = SID_TABLE_DISTRIBUTE_COLUMNS ;
						HelpId = CMD_SID_TABLE_DISTRIBUTE_COLUMNS ;
						Text [ en-US ] = "Space ~Equally" ;
					};
					SEPARATOR
					MenuItem
					{
						Identifier = SID_TABLE_SELECT_COL ;
						HelpId = CMD_SID_TABLE_SELECT_COL ;
						Text [ en-US ] = "~Select" ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_INSERT_COL_DLG ;
						HelpId = CMD_SID_TABLE_INSERT_COL_DLG ;
						Text [ en-US ] = "~Insert..." ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_DELETE_COL ;
						HelpId = CMD_SID_TABLE_DELETE_COL ;
						Text [ en-US ] = "~Delete" ;
					};
				};
			};
		};
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		MN_DISTRIBUTE
		MNSUB_CONVERT
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
		SEPARATOR
		MN_STYLEDT
	};
};


// ------------------------------------------------------------------------------------------------
// common popups
// ------------------------------------------------------------------------------------------------

Menu RID_DRAW_TEXTOBJ_INSIDE_POPUP
{
	ItemList =
	{
		MN_SET_DEFAULT
		SEPARATOR
		MN_TEXTATTR
		SEPARATOR
		MN_TEXT_ATTR
		MN_TEXT_ALIGN
		MN_LINESPACING_ATTR
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MenuItem
		{
			ITEM_OPEN_HYPERLINK
		};
		SEPARATOR
		MN_BULLET
		ITEM_FORMAT_NUMBERING
		ITEM_TRANSLITERATE_MENU
		SEPARATOR
		MN_STYLEDT
	};
};

Menu RID_DRAW_TABLEOBJ_INSIDE_POPUP
{
	ItemList =
	{
		MN_SET_DEFAULT
		SEPARATOR
		MN_TEXTATTR
		SEPARATOR
		MN_TEXT_ATTR
		MN_TEXT_ALIGN
		MN_LINESPACING_ATTR
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MenuItem
		{
			Identifier = SID_FORMAT_TABLE_DLG ;
			HelpId = CMD_SID_FORMAT_TABLE_DLG ;
			Text [ en-US ] = "~Table..." ;
		};
		MenuItem
		{
			Identifier = DUMMY + 10 ;
			Command = ".uno:CellMenu" ;
			Text [ en-US ] = "~Cell" ;
			SubMenu = Menu
			{
				ItemList =
				{
					MenuItem
					{
						Identifier = SID_TABLE_MERGE_CELLS ;
						HelpId = CMD_SID_TABLE_MERGE_CELLS ;
						Text [ en-US ] = "~Merge" ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_SPLIT_CELLS ;
						HelpId = CMD_SID_TABLE_SPLIT_CELLS ;
						Text [ en-US ] = "~Split..." ;
					};
					SEPARATOR
					MenuItem
					{
						Identifier = SID_TABLE_VERT_NONE ;
						HelpId = CMD_SID_TABLE_VERT_NONE ;
						Text [ en-US ] = "~Top" ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_VERT_CENTER ;
						HelpId = CMD_SID_TABLE_VERT_CENTER ;
						Text [ en-US ] = "C~enter" ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_VERT_BOTTOM ;
						HelpId = CMD_SID_TABLE_VERT_BOTTOM ;
						Text [ en-US ] = "~Bottom" ;
					};
				};
			};
		};
		MenuItem
		{
			Identifier = DUMMY + 11 ;
			Command = ".uno:RowMenu" ;
			Text [ en-US ] = "~Row" ;
			SubMenu = Menu
			{
				ItemList =
				{
					MenuItem
					{
						Identifier = SID_TABLE_DISTRIBUTE_ROWS ;
						HelpId = CMD_SID_TABLE_DISTRIBUTE_ROWS ;
						Text [ en-US ] = "Space ~Equally" ;
					};
					SEPARATOR
					MenuItem
					{
						Identifier = SID_TABLE_SELECT_ROW ;
						HelpId = CMD_SID_TABLE_SELECT_ROW ;
						Text [ en-US ] = "~Select" ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_INSERT_ROW_DLG ;
						HelpId = CMD_SID_TABLE_INSERT_ROW_DLG ;
						Text [ en-US ] = "~Insert..." ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_DELETE_ROW ;
						HelpId = CMD_SID_TABLE_DELETE_ROW ;
						Text [ en-US ] = "~Delete" ;
					};
				};
			};
		};
		MenuItem
		{
			Identifier = DUMMY + 12 ;
			Command = ".uno:ColumnMenu" ;
			Text [ en-US ] = "Colu~mn" ;
			SubMenu = Menu
			{
				ItemList =
				{
					MenuItem
					{
						Identifier = SID_TABLE_DISTRIBUTE_COLUMNS ;
						HelpId = CMD_SID_TABLE_DISTRIBUTE_COLUMNS ;
						Text [ en-US ] = "Space ~Equally" ;
					};
					SEPARATOR
					MenuItem
					{
						Identifier = SID_TABLE_SELECT_COL ;
						HelpId = CMD_SID_TABLE_SELECT_COL ;
						Text [ en-US ] = "~Select" ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_INSERT_COL_DLG ;
						HelpId = CMD_SID_TABLE_INSERT_COL_DLG ;
						Text [ en-US ] = "~Insert..." ;
					};
					MenuItem
					{
						Identifier = SID_TABLE_DELETE_COL ;
						HelpId = CMD_SID_TABLE_DELETE_COL ;
						Text [ en-US ] = "~Delete" ;
					};
				};
			};
		};
		SEPARATOR
		MenuItem
		{
			ITEM_OPEN_HYPERLINK
		};
		SEPARATOR
		MN_BULLET
		ITEM_FORMAT_NUMBERING
		ITEM_TRANSLITERATE_MENU
		SEPARATOR
		MN_STYLEDT
	};
};

Menu RID_FORM_CONTROL_POPUP
{
	ItemList =
	{
		MN_TRANSFORM
		MenuItem { ITEM_FORM_CONTROL_PROPERTIES };
		MenuItem { ITEM_FORM_PROPERTIES };
		MenuItem { ITEM_REPLACE_CONTROL };
		SEPARATOR
		MN_POSITION
		MN_OBJECT_ALIGN
		SEPARATOR
		MN_LEAVE_GROUP
		MN_DISMANTLE
		SEPARATOR
		MN_OBJECT_TITLE_DESCRIPTION
		MN_NAME_GROUP
	};
};



Menu RID_DRAW_SNAPOBJECT_POPUP
{
	ItemList =
	{
		MN_SET_SNAPITEM
		SEPARATOR
		MN_DELETE_SNAPITEM
	};
};


Menu RID_DRAW_GLUEPOINT_POPUP
{
	ItemList =
	{
		MN_GLUE_INSERT_POINT
		SEPARATOR
		MN_GLUE_ESC_DIR_LEFT
		MN_GLUE_ESC_DIR_TOP
		MN_GLUE_ESC_DIR_RIGHT
		MN_GLUE_ESC_DIR_BOTTOM
		SEPARATOR
		MN_GLUE_PERCENT
		SEPARATOR
		MN_GLUE_HORZALIGN_LEFT
		MN_GLUE_HORZALIGN_CENTER
		MN_GLUE_HORZALIGN_RIGHT
		SEPARATOR
		MN_GLUE_VERTALIGN_TOP
		MN_GLUE_VERTALIGN_CENTER
		MN_GLUE_VERTALIGN_BOTTOM
	};
};


Menu RID_SLIDE_SORTER_IMPRESS_SEL_POPUP
{
	ItemList =
	{
		MN_INSERT_SLIDE
		MN_DELETE_SLIDE
		MN_RENAME_SLIDE
		SEPARATOR
        MN_PRESENTATION_LAYOUT
		MN_MODIFY_PAGE
		SEPARATOR
		MN_DIA
		MN_SHOW_SLIDE
		MN_HIDE_SLIDE
	};
};


Menu RID_SLIDE_SORTER_IMPRESS_NOSEL_POPUP
{
	ItemList =
	{
		MN_INSERT_SLIDE
	};
};

Menu RID_SLIDE_SORTER_DRAW_SEL_POPUP
{
	ItemList =
	{
		MN_INSERT_PAGE
		MN_DELETE_PAGE
		MN_RENAME_PAGE
	};
};


Menu RID_SLIDE_SORTER_DRAW_NOSEL_POPUP
{
	ItemList =
	{
		MN_INSERT_PAGE
	};
};

Menu RID_SLIDE_SORTER_MASTER_SEL_POPUP
{
	ItemList =
	{
		MN_INSERT_MASTER
		MN_DELETE_MASTER
		MN_RENAME_MASTER
		SEPARATOR
        MN_PRESENTATION_LAYOUT
	};
};


Menu RID_SLIDE_SORTER_MASTER_NOSEL_POPUP
{
	ItemList =
	{
        MN_INSERT_MASTER
    };
};

Menu RID_MASTERPAGE_POPUP
{
	ItemList =
	{
		MN_SET_DEFAULT
		SEPARATOR
		MN_LINE
		MN_AREA
		MN_TRANSFORM
		SEPARATOR
		MN_CHAR_PARAGRAPH
		SEPARATOR
		MN_POSITION
	};
};


Menu RID_OUTLINE_POPUP
{
	ItemList =
	{
		MN_SET_DEFAULT
		SEPARATOR
		MN_TEXT_ATTR
		SEPARATOR
		MN_CHAR
		ITEM_FORMAT_NUMBERING
		ITEM_TRANSLITERATE_MENU
		MN_PRESENTATIONOBJECT
		SEPARATOR
		MN_DRAWINGMODE
		MN_DIAMODE
		MN_PRESENTATION
	};
};

/*
RID_MASTERPAGE_POPUP
*/

Menu RID_BEZIER_POPUP
{
	ItemList =
	{
		MN_BEZIER
	};
};


Menu RID_LAYERTAB_POPUP
{
	ItemList =
	{
		MenuItem
		{
			Identifier = SID_INSERTLAYER ;
			HelpId = CMD_SID_INSERTLAYER ;
			Text [ en-US ] = "~Insert Layer..." ;
		};
		MenuItem
		{
			Identifier = SID_MODIFYLAYER ;
			HelpId = CMD_SID_MODIFYLAYER ;
			Text [ en-US ] = "Modify La~yer..." ;
		};
		MenuItem
		{
			Identifier = SID_DELETE_LAYER ;
			HelpId = CMD_SID_DELETE_LAYER ;
			Text [ en-US ] = "Delete ~Layer..." ;
		};
		MN_RENAME_LAYER
	};
};

Menu RID_TASKPANE_MASTERPAGESSELECTOR_POPUP
{
	ItemList =
	{
		MenuItem
		{
			Identifier = SID_TP_APPLY_TO_ALL_SLIDES ;
			HelpId = CMD_SID_TP_APPLY_TO_ALL_SLIDES ;
			Text [ en-US ] = "~Apply to All Slides" ;
        };
		MenuItem
		{
			Identifier = SID_TP_APPLY_TO_SELECTED_SLIDES ;
			HelpId = CMD_SID_TP_APPLY_TO_SELECTED_SLIDES ;
			Text [ en-US ] = "Apply to ~Selected Slides" ;
        };

		SEPARATOR

		MenuItem
		{
			Identifier = SID_TP_SHOW_LARGE_PREVIEW ;
			HelpId = CMD_SID_TP_SHOW_LARGE_PREVIEW ;
            Text [ en-US ] = "Show ~Large Preview" ;
        };
        MenuItem
        {
            Identifier = SID_TP_SHOW_SMALL_PREVIEW ;
            HelpId = CMD_SID_TP_SHOW_SMALL_PREVIEW ;
            Text [ en-US ] = "Show S~mall Preview" ;
        };
	};
};

Menu RID_TASKPANE_CURRENT_MASTERPAGESSELECTOR_POPUP
{
	ItemList =
	{
		MenuItem
		{
			Identifier = SID_TP_APPLY_TO_ALL_SLIDES ;
			HelpId = CMD_SID_TP_APPLY_TO_ALL_SLIDES ;
			Text [ en-US ] = "~Apply to All Slides" ;
        };
		MenuItem
		{
			Identifier = SID_TP_APPLY_TO_SELECTED_SLIDES ;
			HelpId = CMD_SID_TP_APPLY_TO_SELECTED_SLIDES ;
			Text [ en-US ] = "Apply to ~Selected Slides" ;
        };


		SEPARATOR

        MenuItem
        {
            Identifier = SID_TP_EDIT_MASTER ;
            HelpId = CMD_SID_TP_EDIT_MASTER ;
            Text [ en-US ] = "~Edit Master..." ;
        };

		MN_DELETE_MASTER

		SEPARATOR

		MenuItem
		{
			Identifier = SID_TP_SHOW_LARGE_PREVIEW ;
			HelpId = CMD_SID_TP_SHOW_LARGE_PREVIEW ;
            Text [ en-US ] = "Show ~Large Preview" ;
        };
        MenuItem
        {
            Identifier = SID_TP_SHOW_SMALL_PREVIEW ;
            HelpId = CMD_SID_TP_SHOW_SMALL_PREVIEW ;
            Text [ en-US ] = "Show S~mall Preview" ;
        };
	};
};

Menu RID_TASKPANE_LAYOUTMENU_POPUP
{
	ItemList =
	{
		MenuItem
		{
			Identifier = SID_TP_APPLY_TO_SELECTED_SLIDES ;
			HelpId = CMD_SID_TP_APPLY_TO_SELECTED_SLIDES ;
			Text [ en-US ] = "Apply to ~Selected Slides" ;
        };

		SEPARATOR

		MenuItem
		{
			Identifier = SID_INSERTPAGE_LAYOUT_MENU ;
			HelpId = CMD_SID_INSERTPAGE_LAYOUT_MENU ;
            Text [ en-US ] = "~Insert Slide" ;
        };
	};
};

// ********************************************************************** EOF
