/*
-Copyright (C) 2001-2006, William Joseph.
-All Rights Reserved.
+ Copyright (C) 2001-2006, William Joseph.
+ All Rights Reserved.
-This file is part of GtkRadiant.
+ This file is part of GtkRadiant.
-GtkRadiant is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
+ GtkRadiant is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
-GtkRadiant is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+ GtkRadiant is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with GtkRadiant; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-*/
+ You should have received a copy of the GNU General Public License
+ along with GtkRadiant; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
#include "grid.h"
#include "preferences.h"
-
Signal0 g_gridChange_callbacks;
-void AddGridChangeCallback(const SignalHandler& handler)
+void AddGridChangeCallback(const SignalHandler &handler)
{
- g_gridChange_callbacks.connectLast(handler);
- handler();
+ g_gridChange_callbacks.connectLast(handler);
+ handler();
}
void GridChangeNotify()
{
- g_gridChange_callbacks();
+ g_gridChange_callbacks();
}
-enum GridPower
-{
- GRIDPOWER_0125 = -3,
- GRIDPOWER_025 = -2,
- GRIDPOWER_05 = -1,
- GRIDPOWER_1 = 0,
- GRIDPOWER_2 = 1,
- GRIDPOWER_4 = 2,
- GRIDPOWER_8 = 3,
- GRIDPOWER_16 = 4,
- GRIDPOWER_32 = 5,
- GRIDPOWER_64 = 6,
- GRIDPOWER_128 = 7,
- GRIDPOWER_256 = 8,
+enum GridPower {
+ GRIDPOWER_0125 = -3,
+ GRIDPOWER_025 = -2,
+ GRIDPOWER_05 = -1,
+ GRIDPOWER_1 = 0,
+ GRIDPOWER_2 = 1,
+ GRIDPOWER_4 = 2,
+ GRIDPOWER_8 = 3,
+ GRIDPOWER_16 = 4,
+ GRIDPOWER_32 = 5,
+ GRIDPOWER_64 = 6,
+ GRIDPOWER_128 = 7,
+ GRIDPOWER_256 = 8,
};
-typedef const char* GridName;
+typedef const char *GridName;
// this must match the GridPower enumeration
const GridName g_gridnames[] = {
- "0.125",
- "0.25",
- "0.5",
- "1",
- "2",
- "4",
- "8",
- "16",
- "32",
- "64",
- "128",
- "256",
+ "0.125",
+ "0.25",
+ "0.5",
+ "1",
+ "2",
+ "4",
+ "8",
+ "16",
+ "32",
+ "64",
+ "128",
+ "256",
};
inline GridPower GridPower_forGridDefault(int gridDefault)
{
- return static_cast<GridPower>(gridDefault - 3);
+ return static_cast<GridPower>( gridDefault - 3 );
}
inline int GridDefault_forGridPower(GridPower gridPower)
{
- return gridPower + 3;
+ return gridPower + 3;
}
int g_grid_default = GridDefault_forGridPower(GRIDPOWER_8);
int Grid_getPower()
{
- return g_grid_power;
+ return g_grid_power;
}
inline float GridSize_forGridPower(int gridPower)
{
- return pow(2.0f, gridPower);
+ return pow(2.0f, gridPower);
}
float g_gridsize = GridSize_forGridPower(g_grid_power);
float GetSnapGridSize()
{
- return g_grid_snap ? g_gridsize : 0;
+ return g_grid_snap ? g_gridsize : 0;
}
float GetGridSize()
{
- return g_gridsize;
+ return g_gridsize;
}
void setGridPower(GridPower power);
-class GridMenuItem
-{
- GridPower m_id;
+class GridMenuItem {
+ GridPower m_id;
- GridMenuItem(const GridMenuItem& other); // NOT COPYABLE
- GridMenuItem& operator=(const GridMenuItem& other); // NOT ASSIGNABLE
+ GridMenuItem(const GridMenuItem &other); // NOT COPYABLE
+ GridMenuItem &operator=(const GridMenuItem &other); // NOT ASSIGNABLE
public:
- ToggleItem m_item;
-
- GridMenuItem(GridPower id) : m_id(id), m_item(ExportCaller(*this))
- {
- }
- void set()
- {
- g_grid_power = m_id;
- m_item.update();
- setGridPower(m_id);
- }
- typedef MemberCaller<GridMenuItem, &GridMenuItem::set> SetCaller;
- void active(const BoolImportCallback& importCallback)
- {
- importCallback(g_grid_power == m_id);
- }
- typedef MemberCaller1<GridMenuItem, const BoolImportCallback&, &GridMenuItem::active> ExportCaller;
+ ToggleItem m_item;
+
+ GridMenuItem(GridPower id) : m_id(id), m_item(ExportCaller(*this))
+ {
+ }
+
+ void set()
+ {
+ g_grid_power = m_id;
+ m_item.update();
+ setGridPower(m_id);
+ }
+
+ typedef MemberCaller<GridMenuItem, void(), &GridMenuItem::set> SetCaller;
+
+ void active(const Callback<void(bool)> &importCallback)
+ {
+ importCallback(g_grid_power == m_id);
+ }
+
+ typedef MemberCaller<GridMenuItem, void(const Callback<void(bool)> &), &GridMenuItem::active> ExportCaller;
};
GridMenuItem g_gridMenu0125(GRIDPOWER_0125);
void setGridPower(GridPower power)
{
- g_grid_snap = true;
- g_gridsize = GridSize_forGridPower(power);
-
- g_gridMenu0125.m_item.update();
- g_gridMenu025.m_item.update();
- g_gridMenu05.m_item.update();
- g_gridMenu1.m_item.update();
- g_gridMenu2.m_item.update();
- g_gridMenu4.m_item.update();
- g_gridMenu8.m_item.update();
- g_gridMenu16.m_item.update();
- g_gridMenu32.m_item.update();
- g_gridMenu64.m_item.update();
- g_gridMenu128.m_item.update();
- g_gridMenu256.m_item.update();
- GridChangeNotify();
+ g_grid_snap = true;
+ g_gridsize = GridSize_forGridPower(power);
+
+ g_gridMenu0125.m_item.update();
+ g_gridMenu025.m_item.update();
+ g_gridMenu05.m_item.update();
+ g_gridMenu1.m_item.update();
+ g_gridMenu2.m_item.update();
+ g_gridMenu4.m_item.update();
+ g_gridMenu8.m_item.update();
+ g_gridMenu16.m_item.update();
+ g_gridMenu32.m_item.update();
+ g_gridMenu64.m_item.update();
+ g_gridMenu128.m_item.update();
+ g_gridMenu256.m_item.update();
+ GridChangeNotify();
}
void GridPrev()
{
- g_grid_snap = true;
- if(g_grid_power > GRIDPOWER_0125)
- {
- setGridPower(static_cast<GridPower>(--g_grid_power));
- }
+ g_grid_snap = true;
+ if (g_grid_power > GRIDPOWER_0125) {
+ setGridPower(static_cast<GridPower>( --g_grid_power ));
+ }
}
void GridNext()
{
- g_grid_snap = true;
- if(g_grid_power < GRIDPOWER_256)
- {
- setGridPower(static_cast<GridPower>(++g_grid_power));
- }
+ g_grid_snap = true;
+ if (g_grid_power < GRIDPOWER_256) {
+ setGridPower(static_cast<GridPower>( ++g_grid_power ));
+ }
}
void ToggleGridSnap()
{
- g_grid_snap = !g_grid_snap;
- GridChangeNotify();
+ g_grid_snap = !g_grid_snap;
+ GridChangeNotify();
}
void Grid_registerCommands()
{
- GlobalCommands_insert("GridDown", FreeCaller<GridPrev>(), Accelerator('['));
- GlobalCommands_insert("GridUp", FreeCaller<GridNext>(), Accelerator(']'));
-
- GlobalCommands_insert("ToggleGridSnap", FreeCaller<ToggleGridSnap>());
-
- GlobalToggles_insert("SetGrid0.125", GridMenuItem::SetCaller(g_gridMenu0125), ToggleItem::AddCallbackCaller(g_gridMenu0125.m_item));
- GlobalToggles_insert("SetGrid0.25", GridMenuItem::SetCaller(g_gridMenu025), ToggleItem::AddCallbackCaller(g_gridMenu025.m_item));
- GlobalToggles_insert("SetGrid0.5", GridMenuItem::SetCaller(g_gridMenu05), ToggleItem::AddCallbackCaller(g_gridMenu05.m_item));
- GlobalToggles_insert("SetGrid1", GridMenuItem::SetCaller(g_gridMenu1), ToggleItem::AddCallbackCaller(g_gridMenu1.m_item), Accelerator('1'));
- GlobalToggles_insert("SetGrid2", GridMenuItem::SetCaller(g_gridMenu2), ToggleItem::AddCallbackCaller(g_gridMenu2.m_item), Accelerator('2'));
- GlobalToggles_insert("SetGrid4", GridMenuItem::SetCaller(g_gridMenu4), ToggleItem::AddCallbackCaller(g_gridMenu4.m_item), Accelerator('3'));
- GlobalToggles_insert("SetGrid8", GridMenuItem::SetCaller(g_gridMenu8), ToggleItem::AddCallbackCaller(g_gridMenu8.m_item), Accelerator('4'));
- GlobalToggles_insert("SetGrid16", GridMenuItem::SetCaller(g_gridMenu16), ToggleItem::AddCallbackCaller(g_gridMenu16.m_item), Accelerator('5'));
- GlobalToggles_insert("SetGrid32", GridMenuItem::SetCaller(g_gridMenu32), ToggleItem::AddCallbackCaller(g_gridMenu32.m_item), Accelerator('6'));
- GlobalToggles_insert("SetGrid64", GridMenuItem::SetCaller(g_gridMenu64), ToggleItem::AddCallbackCaller(g_gridMenu64.m_item), Accelerator('7'));
- GlobalToggles_insert("SetGrid128", GridMenuItem::SetCaller(g_gridMenu128), ToggleItem::AddCallbackCaller(g_gridMenu128.m_item), Accelerator('8'));
- GlobalToggles_insert("SetGrid256", GridMenuItem::SetCaller(g_gridMenu256), ToggleItem::AddCallbackCaller(g_gridMenu256.m_item), Accelerator('9'));
+ GlobalCommands_insert("GridDown", makeCallbackF(GridPrev), Accelerator('['));
+ GlobalCommands_insert("GridUp", makeCallbackF(GridNext), Accelerator(']'));
+
+ GlobalCommands_insert("ToggleGridSnap", makeCallbackF(ToggleGridSnap));
+
+ GlobalToggles_insert("SetGrid0.125", GridMenuItem::SetCaller(g_gridMenu0125),
+ ToggleItem::AddCallbackCaller(g_gridMenu0125.m_item));
+ GlobalToggles_insert("SetGrid0.25", GridMenuItem::SetCaller(g_gridMenu025),
+ ToggleItem::AddCallbackCaller(g_gridMenu025.m_item));
+ GlobalToggles_insert("SetGrid0.5", GridMenuItem::SetCaller(g_gridMenu05),
+ ToggleItem::AddCallbackCaller(g_gridMenu05.m_item));
+ GlobalToggles_insert("SetGrid1", GridMenuItem::SetCaller(g_gridMenu1),
+ ToggleItem::AddCallbackCaller(g_gridMenu1.m_item), Accelerator('1'));
+ GlobalToggles_insert("SetGrid2", GridMenuItem::SetCaller(g_gridMenu2),
+ ToggleItem::AddCallbackCaller(g_gridMenu2.m_item), Accelerator('2'));
+ GlobalToggles_insert("SetGrid4", GridMenuItem::SetCaller(g_gridMenu4),
+ ToggleItem::AddCallbackCaller(g_gridMenu4.m_item), Accelerator('3'));
+ GlobalToggles_insert("SetGrid8", GridMenuItem::SetCaller(g_gridMenu8),
+ ToggleItem::AddCallbackCaller(g_gridMenu8.m_item), Accelerator('4'));
+ GlobalToggles_insert("SetGrid16", GridMenuItem::SetCaller(g_gridMenu16),
+ ToggleItem::AddCallbackCaller(g_gridMenu16.m_item), Accelerator('5'));
+ GlobalToggles_insert("SetGrid32", GridMenuItem::SetCaller(g_gridMenu32),
+ ToggleItem::AddCallbackCaller(g_gridMenu32.m_item), Accelerator('6'));
+ GlobalToggles_insert("SetGrid64", GridMenuItem::SetCaller(g_gridMenu64),
+ ToggleItem::AddCallbackCaller(g_gridMenu64.m_item), Accelerator('7'));
+ GlobalToggles_insert("SetGrid128", GridMenuItem::SetCaller(g_gridMenu128),
+ ToggleItem::AddCallbackCaller(g_gridMenu128.m_item), Accelerator('8'));
+ GlobalToggles_insert("SetGrid256", GridMenuItem::SetCaller(g_gridMenu256),
+ ToggleItem::AddCallbackCaller(g_gridMenu256.m_item), Accelerator('9'));
}
-void Grid_constructMenu(GtkMenu* menu)
+void Grid_constructMenu(ui::Menu menu)
{
- create_check_menu_item_with_mnemonic(menu, "Grid0.125", "SetGrid0.125");
- create_check_menu_item_with_mnemonic(menu, "Grid0.25", "SetGrid0.25");
- create_check_menu_item_with_mnemonic(menu, "Grid0.5", "SetGrid0.5");
- create_check_menu_item_with_mnemonic(menu, "Grid1", "SetGrid1");
- create_check_menu_item_with_mnemonic(menu, "Grid2", "SetGrid2");
- create_check_menu_item_with_mnemonic(menu, "Grid4", "SetGrid4");
- create_check_menu_item_with_mnemonic(menu, "Grid8", "SetGrid8");
- create_check_menu_item_with_mnemonic(menu, "Grid16", "SetGrid16");
- create_check_menu_item_with_mnemonic(menu, "Grid32", "SetGrid32");
- create_check_menu_item_with_mnemonic(menu, "Grid64", "SetGrid64");
- create_check_menu_item_with_mnemonic(menu, "Grid128", "SetGrid128");
- create_check_menu_item_with_mnemonic(menu, "Grid256", "SetGrid256");
+ create_check_menu_item_with_mnemonic(menu, "Grid0.125", "SetGrid0.125");
+ create_check_menu_item_with_mnemonic(menu, "Grid0.25", "SetGrid0.25");
+ create_check_menu_item_with_mnemonic(menu, "Grid0.5", "SetGrid0.5");
+ create_check_menu_item_with_mnemonic(menu, "Grid1", "SetGrid1");
+ create_check_menu_item_with_mnemonic(menu, "Grid2", "SetGrid2");
+ create_check_menu_item_with_mnemonic(menu, "Grid4", "SetGrid4");
+ create_check_menu_item_with_mnemonic(menu, "Grid8", "SetGrid8");
+ create_check_menu_item_with_mnemonic(menu, "Grid16", "SetGrid16");
+ create_check_menu_item_with_mnemonic(menu, "Grid32", "SetGrid32");
+ create_check_menu_item_with_mnemonic(menu, "Grid64", "SetGrid64");
+ create_check_menu_item_with_mnemonic(menu, "Grid128", "SetGrid128");
+ create_check_menu_item_with_mnemonic(menu, "Grid256", "SetGrid256");
}
void Grid_registerShortcuts()
{
- command_connect_accelerator("ToggleGrid");
- command_connect_accelerator("GridDown");
- command_connect_accelerator("GridUp");
- command_connect_accelerator("ToggleGridSnap");
+ command_connect_accelerator("ToggleGrid");
+ command_connect_accelerator("GridDown");
+ command_connect_accelerator("GridUp");
+ command_connect_accelerator("ToggleGridSnap");
}
-void Grid_constructPreferences(PreferencesPage& page)
+void Grid_constructPreferences(PreferencesPage &page)
{
- page.appendCombo(
- "Default grid spacing",
- g_grid_default,
- ARRAY_RANGE(g_gridnames)
- );
+ page.appendCombo(
+ "Default grid spacing",
+ g_grid_default,
+ ARRAY_RANGE(g_gridnames)
+ );
}
-void Grid_constructPage(PreferenceGroup& group)
+
+void Grid_constructPage(PreferenceGroup &group)
{
- PreferencesPage page(group.createPage("Grid", "Grid Settings"));
- Grid_constructPreferences(page);
+ PreferencesPage page(group.createPage("Grid", "Grid Settings"));
+ Grid_constructPreferences(page);
}
+
void Grid_registerPreferencesPage()
{
- PreferencesDialog_addSettingsPage(FreeCaller1<PreferenceGroup&, Grid_constructPage>());
+ PreferencesDialog_addSettingsPage(makeCallbackF(Grid_constructPage));
}
void Grid_construct()
{
- Grid_registerPreferencesPage();
+ Grid_registerPreferencesPage();
- g_grid_default = GridDefault_forGridPower(GRIDPOWER_8);
+ g_grid_default = GridDefault_forGridPower(GRIDPOWER_8);
- GlobalPreferenceSystem().registerPreference("GridDefault", IntImportStringCaller(g_grid_default), IntExportStringCaller(g_grid_default));
+ GlobalPreferenceSystem().registerPreference("GridDefault", make_property_string(g_grid_default));
- g_grid_power = GridPower_forGridDefault(g_grid_default);
- g_gridsize = GridSize_forGridPower(g_grid_power);
+ g_grid_power = GridPower_forGridDefault(g_grid_default);
+ g_gridsize = GridSize_forGridPower(g_grid_power);
}
void Grid_destroy()