- Added check for existing worldspawn if a new one should be added with the entity menu (Shaderman)
- Fixed Entity -> Ungroup (Topsun)
- Fixed hotkey collision ALT+M (filter botclip/Modify menu). New Modify shortcut = ALT+O (Shaderman)
- Updated Window Layout images (Shaderman)
- Fixed (TODO) XYWindow: save show-workzone option (Shaderman)
- Fixed (TODO) Toolbar: add shortcut to tooltips for toolbar buttons (Shaderman)
- Fixed (TODO) GUI: detachable submenus (Shaderman)
git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@117
8a3a26a2-13c4-0310-b231-
cf6edde360e5
This is the changelog for developers, != changelog for the end user
that we distribute with the binaries. (see changelog)
This is the changelog for developers, != changelog for the end user
that we distribute with the binaries. (see changelog)
+12/10/2006
+namespace
+- Updated help menu web links (removed map-center.com, added ETB documentation) (Shaderman)
+- Added check for existing worldspawn if a new one should be added with the entity menu (Shaderman)
+- Fixed Entity -> Ungroup (Topsun)
+- Fixed hotkey collision ALT+M (filter botclip/Modify menu). New Modify shortcut = ALT+O (Shaderman)
+- Updated Window Layout images (Shaderman)
+- Fixed (TODO) XYWindow: save show-workzone option (Shaderman)
+- Fixed (TODO) Toolbar: add shortcut to tooltips for toolbar buttons (Shaderman)
+- Fixed (TODO) GUI: detachable submenus (Shaderman)
+
09/10/2006
namespace
- Added option to toggle the camera window stats on/off (Shaderman)
09/10/2006
namespace
- Added option to toggle the camera window stats on/off (Shaderman)
Brush: warn when a brush is dragged into a configuration with <0 volume
Textures: add option to give new brushes a specific texture instead of the last selected.
? QE-tool: click anywhere on xy view to drag entity instead of requiring clicking directly on entity.
Brush: warn when a brush is dragged into a configuration with <0 volume
Textures: add option to give new brushes a specific texture instead of the last selected.
? QE-tool: click anywhere on xy view to drag entity instead of requiring clicking directly on entity.
-Camera: option to toggle stats on/off.
UserDocs: how to use multi-vertex selection - replaces vertex-edit-splits-faces option:
UserDocs: how to use parent-selection:
Parent-selection works like Maya: it allows you to 'reparent' brushes
UserDocs: how to use multi-vertex selection - replaces vertex-edit-splits-faces option:
UserDocs: how to use parent-selection:
Parent-selection works like Maya: it allows you to 'reparent' brushes
Preferences: allow preference settings to be shared across games.
Preferences: add colour 'theme' files using prefs format.
Preferences: sensible default size for prefs window.
Preferences: allow preference settings to be shared across games.
Preferences: add colour 'theme' files using prefs format.
Preferences: sensible default size for prefs window.
-GUI: detachable submenus.
Doom3: add model browser.
Doom3: s_diversity light key.
HalfLife: enable HL-mode on linux/osx.
Doom3: add model browser.
Doom3: s_diversity light key.
HalfLife: enable HL-mode on linux/osx.
Selection: visibly distinguish between entity and brush selections
Selection: need 'add to selection' and 'subtract from selection' modifiers
Selection: Finish scale manipulator.
Selection: visibly distinguish between entity and brush selections
Selection: need 'add to selection' and 'subtract from selection' modifiers
Selection: Finish scale manipulator.
-Toolbar: add shortcut to tooltips for toolbar buttons
FaceCopy/PasteTexture: Make face-copy/paste-texture shortcuts customisable.
Manual: add documentation about search paths for .ent/.def/.fgd, shaders etc for each game.
Halflife: add support for cstrike fgd.
FaceCopy/PasteTexture: Make face-copy/paste-texture shortcuts customisable.
Manual: add documentation about search paths for .ent/.def/.fgd, shaders etc for each game.
Halflife: add support for cstrike fgd.
Patch: fix insert/remove rows/cols indicated by current selected patch vertices.
Autosave/Snapshots: Add support for multi-file maps.
Quake2: Q2 hint transparency support
Patch: fix insert/remove rows/cols indicated by current selected patch vertices.
Autosave/Snapshots: Add support for multi-file maps.
Quake2: Q2 hint transparency support
-XYWindow: save show-workzone option
Shortcuts: make shortcut list editable within radiant.
Shortcuts: convert shortcuts.ini to xml.
Shortcuts: warn when duplicate shortcuts are registered
Shortcuts: make shortcut list editable within radiant.
Shortcuts: convert shortcuts.ini to xml.
Shortcuts: warn when duplicate shortcuts are registered
menu_separator (menu);
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "CSG");
menu_separator (menu);
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "CSG");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
create_menu_item_with_mnemonic(menu_in_menu, "Make _Hollow", "CSGHollow");
create_menu_item_with_mnemonic(menu_in_menu, "CSG _Subtract", "CSGSubtract");
create_menu_item_with_mnemonic(menu_in_menu, "CSG _Merge", "CSGMerge");
create_menu_item_with_mnemonic(menu_in_menu, "Make _Hollow", "CSGHollow");
create_menu_item_with_mnemonic(menu_in_menu, "CSG _Subtract", "CSGSubtract");
create_menu_item_with_mnemonic(menu_in_menu, "CSG _Merge", "CSGMerge");
menu_separator(menu);
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Clipper");
menu_separator(menu);
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Clipper");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
create_menu_item_with_mnemonic(menu_in_menu, "Clip selection", "ClipSelected");
create_menu_item_with_mnemonic(menu_in_menu, "Split selection", "SplitSelected");
create_menu_item_with_mnemonic(menu_in_menu, "Clip selection", "ClipSelected");
create_menu_item_with_mnemonic(menu_in_menu, "Split selection", "SplitSelected");
void CamWnd_constructToolbar(GtkToolbar* toolbar)
{
void CamWnd_constructToolbar(GtkToolbar* toolbar)
{
- toolbar_append_toggle_button(toolbar, "Cubic clip the camera view", "view_cubicclipping.bmp", "ToggleCubicClip");
+ toolbar_append_toggle_button(toolbar, "Cubic clip the camera view (\\)", "view_cubicclipping.bmp", "ToggleCubicClip");
}
void CamWnd_registerShortcuts()
}
void CamWnd_registerShortcuts()
-class EntityUngroupVisitor : public SelectionSystem::Visitor
-{
- const scene::Path& m_parent;
-public:
- EntityUngroupVisitor(const scene::Path& parent) : m_parent(parent)
- {
- }
- void visit(scene::Instance& instance) const
- {
- if(Node_getEntity(instance.path().top()) != 0
- && node_is_group(instance.path().top()))
- {
- if(m_parent.top().get_pointer() != instance.path().top().get_pointer())
- {
- parentBrushes(instance.path().top(), m_parent.top());
- Path_deleteTop(instance.path());
- }
- }
- }
-};
-
void Entity_ungroupSelected()
{
void Entity_ungroupSelected()
{
+ if (GlobalSelectionSystem().countSelected() < 1) return;
+
UndoableCommand undo("ungroupSelectedEntities");
scene::Path world_path(makeReference(GlobalSceneGraph().root()));
world_path.push(makeReference(Map_FindOrInsertWorldspawn(g_map)));
UndoableCommand undo("ungroupSelectedEntities");
scene::Path world_path(makeReference(GlobalSceneGraph().root()));
world_path.push(makeReference(Map_FindOrInsertWorldspawn(g_map)));
- GlobalSelectionSystem().foreachSelected(EntityUngroupVisitor(world_path));
+ scene::Instance &instance = GlobalSelectionSystem().ultimateSelected();
+ scene::Path path = instance.path();
+
+ if (!Node_isEntity(path.top())) path.pop();
+
+ if(Node_getEntity(path.top()) != 0
+ && node_is_group(path.top()))
+ {
+ if(world_path.top().get_pointer() != path.top().get_pointer())
+ {
+ parentBrushes(path.top(), world_path.top());
+ Path_deleteTop(path);
+ }
+ }
globalOutputStream() << "Processing .xlink file '" << filename << "'\n";
// create sub menu
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic(menu, menu_name);
globalOutputStream() << "Processing .xlink file '" << filename << "'\n";
// create sub menu
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic(menu, menu_name);
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
// start walking the nodes, find the 'links' one
xmlNodePtr pNode = pDoc->children;
while (pNode && strcmp((const char*)pNode->name, "links"))
// start walking the nodes, find the 'links' one
xmlNodePtr pNode = pDoc->children;
while (pNode && strcmp((const char*)pNode->name, "links"))
{
GtkMenuItem* colours_menu_item = new_sub_menu_item_with_mnemonic("Colors");
GtkMenu* menu_in_menu = GTK_MENU(gtk_menu_item_get_submenu(colours_menu_item));
{
GtkMenuItem* colours_menu_item = new_sub_menu_item_with_mnemonic("Colors");
GtkMenu* menu_in_menu = GTK_MENU(gtk_menu_item_get_submenu(colours_menu_item));
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
GtkMenu* menu_3 = create_sub_menu_with_mnemonic(menu_in_menu, "Themes");
GtkMenu* menu_3 = create_sub_menu_with_mnemonic(menu_in_menu, "Themes");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_3);
create_menu_item_with_mnemonic(menu_3, "QE4 Original", "ColorSchemeOriginal");
create_menu_item_with_mnemonic(menu_3, "Q3Radiant Original", "ColorSchemeQER");
create_menu_item_with_mnemonic(menu_3, "QE4 Original", "ColorSchemeOriginal");
create_menu_item_with_mnemonic(menu_3, "Q3Radiant Original", "ColorSchemeQER");
create_menu_item_with_mnemonic(menu, "Select _touching", "SelectTouching");
GtkMenu* convert_menu = create_sub_menu_with_mnemonic(menu, "E_xpand Selection");
create_menu_item_with_mnemonic(menu, "Select _touching", "SelectTouching");
GtkMenu* convert_menu = create_sub_menu_with_mnemonic(menu, "E_xpand Selection");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (convert_menu);
create_menu_item_with_mnemonic(convert_menu, "To Whole _Entities", "ExpandSelectionToEntities");
menu_separator(menu);
create_menu_item_with_mnemonic(convert_menu, "To Whole _Entities", "ExpandSelectionToEntities");
menu_separator(menu);
menu_separator(menu);
{
GtkMenu* camera_menu = create_sub_menu_with_mnemonic (menu, "Camera");
menu_separator(menu);
{
GtkMenu* camera_menu = create_sub_menu_with_mnemonic (menu, "Camera");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (camera_menu);
create_menu_item_with_mnemonic(camera_menu, "_Center", "CenterView");
create_menu_item_with_mnemonic(camera_menu, "_Up Floor", "UpFloor");
create_menu_item_with_mnemonic(camera_menu, "_Down Floor", "DownFloor");
create_menu_item_with_mnemonic(camera_menu, "_Center", "CenterView");
create_menu_item_with_mnemonic(camera_menu, "_Up Floor", "UpFloor");
create_menu_item_with_mnemonic(camera_menu, "_Down Floor", "DownFloor");
menu_separator(menu);
{
GtkMenu* orthographic_menu = create_sub_menu_with_mnemonic(menu, "Orthographic");
menu_separator(menu);
{
GtkMenu* orthographic_menu = create_sub_menu_with_mnemonic(menu, "Orthographic");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (orthographic_menu);
if(style == MainFrame::eRegular || style == MainFrame::eRegularLeft || style == MainFrame::eFloating)
{
create_menu_item_with_mnemonic(orthographic_menu, "_Next (XY, YZ, XY)", "NextView");
if(style == MainFrame::eRegular || style == MainFrame::eRegularLeft || style == MainFrame::eFloating)
{
create_menu_item_with_mnemonic(orthographic_menu, "_Next (XY, YZ, XY)", "NextView");
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Show");
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Show");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
create_check_menu_item_with_mnemonic(menu_in_menu, "Show _Angles", "ShowAngles");
create_check_menu_item_with_mnemonic(menu_in_menu, "Show _Names", "ShowNames");
create_check_menu_item_with_mnemonic(menu_in_menu, "Show Blocks", "ShowBlocks");
create_check_menu_item_with_mnemonic(menu_in_menu, "Show _Angles", "ShowAngles");
create_check_menu_item_with_mnemonic(menu_in_menu, "Show _Names", "ShowNames");
create_check_menu_item_with_mnemonic(menu_in_menu, "Show Blocks", "ShowBlocks");
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Filter");
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Filter");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
Filters_constructMenu(menu_in_menu);
}
menu_separator(menu);
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Hide/Show");
Filters_constructMenu(menu_in_menu);
}
menu_separator(menu);
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Hide/Show");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
create_menu_item_with_mnemonic(menu_in_menu, "Hide Selected", "HideSelected");
create_menu_item_with_mnemonic(menu_in_menu, "Show Hidden", "ShowHidden");
}
menu_separator(menu);
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Region");
create_menu_item_with_mnemonic(menu_in_menu, "Hide Selected", "HideSelected");
create_menu_item_with_mnemonic(menu_in_menu, "Show Hidden", "ShowHidden");
}
menu_separator(menu);
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Region");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
create_menu_item_with_mnemonic(menu_in_menu, "_Off", "RegionOff");
create_menu_item_with_mnemonic(menu_in_menu, "_Set XY", "RegionSetXY");
create_menu_item_with_mnemonic(menu_in_menu, "Set _Brush", "RegionSetBrush");
create_menu_item_with_mnemonic(menu_in_menu, "_Off", "RegionOff");
create_menu_item_with_mnemonic(menu_in_menu, "_Set XY", "RegionSetXY");
create_menu_item_with_mnemonic(menu_in_menu, "Set _Brush", "RegionSetBrush");
GtkMenuItem* create_selection_menu()
{
// Selection menu
GtkMenuItem* create_selection_menu()
{
// Selection menu
- GtkMenuItem* selection_menu_item = new_sub_menu_item_with_mnemonic("_Modify");
+ GtkMenuItem* selection_menu_item = new_sub_menu_item_with_mnemonic("M_odify");
GtkMenu* menu = GTK_MENU(gtk_menu_item_get_submenu(selection_menu_item));
if (g_Layout_enableDetachableMenus.m_value)
menu_tearoff (menu);
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Components");
GtkMenu* menu = GTK_MENU(gtk_menu_item_get_submenu(selection_menu_item));
if (g_Layout_enableDetachableMenus.m_value)
menu_tearoff (menu);
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Components");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
create_check_menu_item_with_mnemonic(menu_in_menu, "_Edges", "DragEdges");
create_check_menu_item_with_mnemonic(menu_in_menu, "_Vertices", "DragVertices");
create_check_menu_item_with_mnemonic(menu_in_menu, "_Faces", "DragFaces");
create_check_menu_item_with_mnemonic(menu_in_menu, "_Edges", "DragEdges");
create_check_menu_item_with_mnemonic(menu_in_menu, "_Vertices", "DragVertices");
create_check_menu_item_with_mnemonic(menu_in_menu, "_Faces", "DragFaces");
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic(menu, "Nudge");
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic(menu, "Nudge");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
create_menu_item_with_mnemonic(menu_in_menu, "Nudge Left", "SelectNudgeLeft");
create_menu_item_with_mnemonic(menu_in_menu, "Nudge Right", "SelectNudgeRight");
create_menu_item_with_mnemonic(menu_in_menu, "Nudge Up", "SelectNudgeUp");
create_menu_item_with_mnemonic(menu_in_menu, "Nudge Left", "SelectNudgeLeft");
create_menu_item_with_mnemonic(menu_in_menu, "Nudge Right", "SelectNudgeRight");
create_menu_item_with_mnemonic(menu_in_menu, "Nudge Up", "SelectNudgeUp");
}
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Rotate");
}
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Rotate");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
create_menu_item_with_mnemonic(menu_in_menu, "Rotate X", "RotateSelectionX");
create_menu_item_with_mnemonic(menu_in_menu, "Rotate Y", "RotateSelectionY");
create_menu_item_with_mnemonic(menu_in_menu, "Rotate Z", "RotateSelectionZ");
}
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Flip");
create_menu_item_with_mnemonic(menu_in_menu, "Rotate X", "RotateSelectionX");
create_menu_item_with_mnemonic(menu_in_menu, "Rotate Y", "RotateSelectionY");
create_menu_item_with_mnemonic(menu_in_menu, "Rotate Z", "RotateSelectionZ");
}
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Flip");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
create_menu_item_with_mnemonic(menu_in_menu, "Flip _X", "MirrorSelectionX");
create_menu_item_with_mnemonic(menu_in_menu, "Flip _Y", "MirrorSelectionY");
create_menu_item_with_mnemonic(menu_in_menu, "Flip _Z", "MirrorSelectionZ");
create_menu_item_with_mnemonic(menu_in_menu, "Flip _X", "MirrorSelectionX");
create_menu_item_with_mnemonic(menu_in_menu, "Flip _Y", "MirrorSelectionY");
create_menu_item_with_mnemonic(menu_in_menu, "Flip _Z", "MirrorSelectionZ");
void File_constructToolbar(GtkToolbar* toolbar)
{
void File_constructToolbar(GtkToolbar* toolbar)
{
- toolbar_append_button(toolbar, "Open an existing map", "file_open.bmp", "OpenMap");
- toolbar_append_button(toolbar, "Save the active map", "file_save.bmp", "SaveMap");
+ toolbar_append_button(toolbar, "Open an existing map (CTRL + O)", "file_open.bmp", "OpenMap");
+ toolbar_append_button(toolbar, "Save the active map (CTRL + S)", "file_save.bmp", "SaveMap");
}
void RotateFlip_constructToolbar(GtkToolbar* toolbar)
}
void RotateFlip_constructToolbar(GtkToolbar* toolbar)
void CSG_constructToolbar(GtkToolbar* toolbar)
{
void CSG_constructToolbar(GtkToolbar* toolbar)
{
- toolbar_append_button(toolbar, "CSG Subtract", "selection_csgsubtract.bmp", "CSGSubtract");
- toolbar_append_button(toolbar, "CSG Merge", "selection_csgmerge.bmp", "CSGMerge");
+ toolbar_append_button(toolbar, "CSG Subtract (SHIFT + U)", "selection_csgsubtract.bmp", "CSGSubtract");
+ toolbar_append_button(toolbar, "CSG Merge (CTRL + U)", "selection_csgmerge.bmp", "CSGMerge");
toolbar_append_button(toolbar, "Hollow", "selection_makehollow.bmp", "CSGHollow");
}
void ComponentModes_constructToolbar(GtkToolbar* toolbar)
{
toolbar_append_button(toolbar, "Hollow", "selection_makehollow.bmp", "CSGHollow");
}
void ComponentModes_constructToolbar(GtkToolbar* toolbar)
{
- toolbar_append_toggle_button(toolbar, "Select Vertices", "modify_vertices.bmp", "DragVertices");
- toolbar_append_toggle_button(toolbar, "Select Edges", "modify_edges.bmp", "DragEdges");
- toolbar_append_toggle_button(toolbar, "Select Faces", "modify_faces.bmp", "DragFaces");
+ toolbar_append_toggle_button(toolbar, "Select Vertices (V)", "modify_vertices.bmp", "DragVertices");
+ toolbar_append_toggle_button(toolbar, "Select Edges (E)", "modify_edges.bmp", "DragEdges");
+ toolbar_append_toggle_button(toolbar, "Select Faces (F)", "modify_faces.bmp", "DragFaces");
}
void Clipper_constructToolbar(GtkToolbar* toolbar)
{
}
void Clipper_constructToolbar(GtkToolbar* toolbar)
{
- toolbar_append_toggle_button(toolbar, "Clipper", "view_clipper.bmp", "ToggleClipper");
+ toolbar_append_toggle_button(toolbar, "Clipper (X)", "view_clipper.bmp", "ToggleClipper");
}
void XYWnd_constructToolbar(GtkToolbar* toolbar)
}
void XYWnd_constructToolbar(GtkToolbar* toolbar)
void Manipulators_constructToolbar(GtkToolbar* toolbar)
{
void Manipulators_constructToolbar(GtkToolbar* toolbar)
{
- toolbar_append_toggle_button(toolbar, "Translate", "select_mousetranslate.bmp", "MouseTranslate");
- toolbar_append_toggle_button(toolbar, "Rotate", "select_mouserotate.bmp", "MouseRotate");
+ toolbar_append_toggle_button(toolbar, "Translate (W)", "select_mousetranslate.bmp", "MouseTranslate");
+ toolbar_append_toggle_button(toolbar, "Rotate (R)", "select_mouserotate.bmp", "MouseRotate");
toolbar_append_toggle_button(toolbar, "Scale", "select_mousescale.bmp", "MouseScale");
toolbar_append_toggle_button(toolbar, "Scale", "select_mousescale.bmp", "MouseScale");
- toolbar_append_toggle_button(toolbar, "Resize", "select_mouseresize.bmp", "MouseDrag");
+ toolbar_append_toggle_button(toolbar, "Resize (Q)", "select_mouseresize.bmp", "MouseDrag");
Clipper_constructToolbar(toolbar);
}
Clipper_constructToolbar(toolbar);
}
gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
- toolbar_append_toggle_button(toolbar, "Texture Lock", "texture_lock.bmp", "TogTexLock");
+ toolbar_append_toggle_button(toolbar, "Texture Lock (SHIFT +T)", "texture_lock.bmp", "TogTexLock");
gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
- GtkButton* g_view_entities_button = toolbar_append_button(toolbar, "Entities", "entities.bmp", "ToggleEntityInspector");
- GtkButton* g_view_console_button = toolbar_append_button(toolbar, "Console", "console.bmp", "ToggleConsole");
- GtkButton* g_view_textures_button = toolbar_append_button(toolbar, "Texture Browser", "texture_browser.bmp", "ToggleTextures");
+ GtkButton* g_view_entities_button = toolbar_append_button(toolbar, "Entities (N)", "entities.bmp", "ToggleEntityInspector");
+ GtkButton* g_view_console_button = toolbar_append_button(toolbar, "Console (O)", "console.bmp", "ToggleConsole");
+ GtkButton* g_view_textures_button = toolbar_append_button(toolbar, "Texture Browser (T)", "texture_browser.bmp", "ToggleTextures");
// TODO: call light inspector
//GtkButton* g_view_lightinspector_button = toolbar_append_button(toolbar, "Light Inspector", "lightinspector.bmp", "ToggleLightInspector");
// TODO: call light inspector
//GtkButton* g_view_lightinspector_button = toolbar_append_button(toolbar, "Light Inspector", "lightinspector.bmp", "ToggleLightInspector");
void Patch_constructToolbar(GtkToolbar* toolbar)
{
void Patch_constructToolbar(GtkToolbar* toolbar)
{
- toolbar_append_button(toolbar, "Put caps on the current patch", "curve_cap.bmp", "CapCurrentCurve");
+ toolbar_append_button(toolbar, "Put caps on the current patch (SHIFT + C)", "curve_cap.bmp", "CapCurrentCurve");
}
void Patch_constructMenu(GtkMenu* menu)
}
void Patch_constructMenu(GtkMenu* menu)
create_menu_item_with_mnemonic(menu, "Cylinder", "PatchCylinder");
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "More Cylinders");
create_menu_item_with_mnemonic(menu, "Cylinder", "PatchCylinder");
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "More Cylinders");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
create_menu_item_with_mnemonic(menu_in_menu, "Dense Cylinder", "PatchDenseCylinder");
create_menu_item_with_mnemonic(menu_in_menu, "Very Dense Cylinder", "PatchVeryDenseCylinder");
create_menu_item_with_mnemonic(menu_in_menu, "Square Cylinder", "PatchSquareCylinder");
create_menu_item_with_mnemonic(menu_in_menu, "Dense Cylinder", "PatchDenseCylinder");
create_menu_item_with_mnemonic(menu_in_menu, "Very Dense Cylinder", "PatchVeryDenseCylinder");
create_menu_item_with_mnemonic(menu_in_menu, "Square Cylinder", "PatchSquareCylinder");
create_menu_item_with_mnemonic(menu, "Bevel", "PatchBevel");
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "More End caps, Bevels");
create_menu_item_with_mnemonic(menu, "Bevel", "PatchBevel");
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "More End caps, Bevels");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
create_menu_item_with_mnemonic(menu_in_menu, "Square Endcap", "PatchSquareBevel");
create_menu_item_with_mnemonic(menu_in_menu, "Square Bevel", "PatchSquareEndcap");
}
create_menu_item_with_mnemonic(menu_in_menu, "Square Endcap", "PatchSquareBevel");
create_menu_item_with_mnemonic(menu_in_menu, "Square Bevel", "PatchSquareEndcap");
}
menu_separator (menu);
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Insert");
menu_separator (menu);
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Insert");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
create_menu_item_with_mnemonic(menu_in_menu, "Insert (2) Columns", "PatchInsertInsertColumn");
create_menu_item_with_mnemonic(menu_in_menu, "Add (2) Columns", "PatchInsertAddColumn");
menu_separator (menu_in_menu);
create_menu_item_with_mnemonic(menu_in_menu, "Insert (2) Columns", "PatchInsertInsertColumn");
create_menu_item_with_mnemonic(menu_in_menu, "Add (2) Columns", "PatchInsertAddColumn");
menu_separator (menu_in_menu);
}
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Delete");
}
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Delete");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
create_menu_item_with_mnemonic(menu_in_menu, "First (2) Columns", "PatchDeleteFirstColumn");
create_menu_item_with_mnemonic(menu_in_menu, "Last (2) Columns", "PatchDeleteLastColumn");
menu_separator (menu_in_menu);
create_menu_item_with_mnemonic(menu_in_menu, "First (2) Columns", "PatchDeleteFirstColumn");
create_menu_item_with_mnemonic(menu_in_menu, "Last (2) Columns", "PatchDeleteLastColumn");
menu_separator (menu_in_menu);
menu_separator (menu);
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Matrix");
menu_separator (menu);
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Matrix");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
create_menu_item_with_mnemonic(menu_in_menu, "Invert", "InvertCurve");
GtkMenu* menu_3 = create_sub_menu_with_mnemonic (menu_in_menu, "Re-disperse");
create_menu_item_with_mnemonic(menu_in_menu, "Invert", "InvertCurve");
GtkMenu* menu_3 = create_sub_menu_with_mnemonic (menu_in_menu, "Re-disperse");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_3);
create_menu_item_with_mnemonic(menu_3, "Rows", "RedisperseRows");
create_menu_item_with_mnemonic(menu_3, "Columns", "RedisperseCols");
create_menu_item_with_mnemonic(menu_in_menu, "Transpose", "MatrixTranspose");
create_menu_item_with_mnemonic(menu_3, "Rows", "RedisperseRows");
create_menu_item_with_mnemonic(menu_3, "Columns", "RedisperseCols");
create_menu_item_with_mnemonic(menu_in_menu, "Transpose", "MatrixTranspose");
menu_separator (menu);
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Overlay");
menu_separator (menu);
{
GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Overlay");
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (menu_in_menu);
create_menu_item_with_mnemonic(menu_in_menu, "Set", "MakeOverlayPatch");
create_menu_item_with_mnemonic(menu_in_menu, "Clear", "ClearPatchOverlays");
}
create_menu_item_with_mnemonic(menu_in_menu, "Set", "MakeOverlayPatch");
create_menu_item_with_mnemonic(menu_in_menu, "Clear", "ClearPatchOverlays");
}
if (nCount > 0)
{
menu = gtk_menu_new();
if (nCount > 0)
{
menu = gtk_menu_new();
+ if (g_Layout_enableDetachableMenus.m_value)
+ menu_tearoff (GTK_MENU(menu));
while (nCount > 0)
{
menuText = pPlugIn->getCommandTitle(--nCount);
while (nCount > 0)
{
menuText = pPlugIn->getCommandTitle(--nCount);
void entitycreate_activated(GtkWidget* item)
{
void entitycreate_activated(GtkWidget* item)
{
- g_pParentWnd->ActiveXY()->OnEntityCreate(gtk_label_get_text(GTK_LABEL(GTK_BIN(item)->child)));
+ scene::Node* world_node = Map_FindWorldspawn(g_map);
+ const char* entity_name = gtk_label_get_text(GTK_LABEL(GTK_BIN(item)->child));
+
+ if(!(world_node && string_equal(entity_name, "worldspawn")))
+ {
+ g_pParentWnd->ActiveXY()->OnEntityCreate(entity_name);
+ } else {
+ GlobalRadiant().m_pfnMessageBox(GTK_WIDGET(MainFrame_getWindow()), "There's already a worldspawn in your map!"
+ "",
+ "Info",
+ eMB_OK,
+ eMB_ICONDEFAULT);
+ }
}
void EntityClassMenu_addItem(GtkMenu* menu, const char* name)
}
void EntityClassMenu_addItem(GtkMenu* menu, const char* name)
GlobalPreferenceSystem().registerPreference("SI_ShowOutlines", BoolImportStringCaller(g_xywindow_globals_private.show_outline), BoolExportStringCaller(g_xywindow_globals_private.show_outline));
GlobalPreferenceSystem().registerPreference("SI_ShowAxis", BoolImportStringCaller(g_xywindow_globals_private.show_axis), BoolExportStringCaller(g_xywindow_globals_private.show_axis));
GlobalPreferenceSystem().registerPreference("CamXYUpdate", BoolImportStringCaller(g_xywindow_globals_private.m_bCamXYUpdate), BoolExportStringCaller(g_xywindow_globals_private.m_bCamXYUpdate));
GlobalPreferenceSystem().registerPreference("SI_ShowOutlines", BoolImportStringCaller(g_xywindow_globals_private.show_outline), BoolExportStringCaller(g_xywindow_globals_private.show_outline));
GlobalPreferenceSystem().registerPreference("SI_ShowAxis", BoolImportStringCaller(g_xywindow_globals_private.show_axis), BoolExportStringCaller(g_xywindow_globals_private.show_axis));
GlobalPreferenceSystem().registerPreference("CamXYUpdate", BoolImportStringCaller(g_xywindow_globals_private.m_bCamXYUpdate), BoolExportStringCaller(g_xywindow_globals_private.m_bCamXYUpdate));
+ GlobalPreferenceSystem().registerPreference("ShowWorkzone", BoolImportStringCaller(g_xywindow_globals_private.d_show_work), BoolExportStringCaller(g_xywindow_globals_private.d_show_work));
GlobalPreferenceSystem().registerPreference("SI_AxisColors0", Vector3ImportStringCaller(g_xywindow_globals.AxisColorX), Vector3ExportStringCaller(g_xywindow_globals.AxisColorX));
GlobalPreferenceSystem().registerPreference("SI_AxisColors1", Vector3ImportStringCaller(g_xywindow_globals.AxisColorY), Vector3ExportStringCaller(g_xywindow_globals.AxisColorY));
GlobalPreferenceSystem().registerPreference("SI_AxisColors0", Vector3ImportStringCaller(g_xywindow_globals.AxisColorX), Vector3ExportStringCaller(g_xywindow_globals.AxisColorX));
GlobalPreferenceSystem().registerPreference("SI_AxisColors1", Vector3ImportStringCaller(g_xywindow_globals.AxisColorY), Vector3ExportStringCaller(g_xywindow_globals.AxisColorY));
<links>
<item name="Web Links & Misc" url="links.htm"/>
<item name="GtkRadiant Bugzilla - Report Bug" url="http://zerowing.idsoftware.com/bugzilla/index.cgi"/>
<links>
<item name="Web Links & Misc" url="links.htm"/>
<item name="GtkRadiant Bugzilla - Report Bug" url="http://zerowing.idsoftware.com/bugzilla/index.cgi"/>
-<item name="MapCenter's GtkRadiant Forum" url="http://www.map-center.com/modules.php?name=Forums&file=viewforum&f=8"/>
<item name="q3map2 handbook (web)" url="http://shaderlab.com/q3map2/manual/default.htm"/>
<item name="q3map2 handbook (web)" url="http://shaderlab.com/q3map2/manual/default.htm"/>
+<item name="ETB documentation (web)" url="http://www.map-craft.com/modules.php?name=ETB"/>
<item name="ChangeLog" url="changelog.txt"/>
<item name="Q3Map2 ChangeLog" url="changelog.q3map2.txt"/>
<item name="Credits" url="credits.html"/>
<item name="ChangeLog" url="changelog.txt"/>
<item name="Q3Map2 ChangeLog" url="changelog.q3map2.txt"/>
<item name="Credits" url="credits.html"/>