本文整理汇总了C++中Control类的典型用法代码示例。如果您正苦于以下问题:C++ Control类的具体用法?C++ Control怎么用?C++ Control使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Control类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
//
// NOTE: run this sample from the repo/tests directory.
//
int main(int argc, char** argv)
{
osg::ArgumentParser arguments(&argc,argv);
osgViewer::Viewer viewer(arguments);
s_viewer = &viewer;
// Start by creating the map:
s_mapNode = MapNode::load(arguments);
if ( !s_mapNode )
{
Map* map = new Map();
// Start with a basemap imagery layer; we'll be using the GDAL driver
// to load a local GeoTIFF file:
GDALOptions basemapOpt;
basemapOpt.url() = "../data/world.tif";
map->addImageLayer( new ImageLayer( ImageLayerOptions("basemap", basemapOpt) ) );
// That's it, the map is ready; now create a MapNode to render the Map:
MapNodeOptions mapNodeOptions;
mapNodeOptions.enableLighting() = false;
s_mapNode = new MapNode( map, mapNodeOptions );
}
s_mapNode->setNodeMask( 0x01 );
// Define a style for the feature data. Since we are going to render the
// vectors as lines, configure the line symbolizer:
StyleSheet* styleSheet = buildStyleSheet( Color::Yellow, 2.0f );
// create a feature list source with the map extents as the default extent.
s_source = new FeatureListSource( s_mapNode->getMap()->getProfile()->getExtent() );
LineString* line = new LineString();
line->push_back( osg::Vec3d(-60, 20, 0) );
line->push_back( osg::Vec3d(-120, 20, 0) );
line->push_back( osg::Vec3d(-120, 60, 0) );
line->push_back( osg::Vec3d(-60, 60, 0) );
Feature* feature = new Feature(line, s_mapNode->getMapSRS(), Style(), s_fid++);
s_source->insertFeature( feature );
s_activeFeature = feature;
s_root = new osg::Group;
s_root->addChild( s_mapNode.get() );
Session* session = new Session(s_mapNode->getMap(), styleSheet, s_source.get());
FeatureModelGraph* graph = new FeatureModelGraph(
session,
FeatureModelSourceOptions(),
new GeomFeatureNodeFactory() );
graph->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
graph->getOrCreateStateSet()->setMode(GL_DEPTH_TEST, osg::StateAttribute::OFF);
s_root->addChild( graph );
//Setup the controls
ControlCanvas* canvas = ControlCanvas::get( &viewer );
s_root->addChild( canvas );
Grid *toolbar = createToolBar( );
canvas->addControl( toolbar );
canvas->setNodeMask( 0x1 << 1 );
int col = 0;
LabelControl* addVerts = new LabelControl("Add Verts");
toolbar->setControl(col++, 0, addVerts );
addVerts->addEventHandler( new AddVertsModeHandler( graph ));
LabelControl* edit = new LabelControl("Edit");
toolbar->setControl(col++, 0, edit );
edit->addEventHandler(new EditModeHandler( graph ));
unsigned int row = 0;
Grid *styleBar = createToolBar( );
styleBar->setPosition(0, 50);
canvas->addControl( styleBar );
//Make a list of styles
styleBar->setControl(0, row++, new LabelControl("Styles") );
unsigned int numStyles = 8;
for (unsigned int i = 0; i < numStyles; ++i)
{
float w = 50;
osg::Vec4 color = randomColor();
float widths[3] = {2, 4, 8};
unsigned int r = row++;
for (unsigned int j = 0; j < 3; j++)
{
Control* l = new Control();
//.........这里部分代码省略.........
示例2: createGroupHeaderNode
// 2. 加载骨骼数据
void M2Importer::importBoneObject()
{
// Bone Group Header Node
INode* groupHeadNode = createGroupHeaderNode();
groupHeadNode->SetGroupHead(TRUE);
groupHeadNode->SetGroupMember(FALSE);
if (m_modelHeader->nameLength > 1)
{
TCHAR* modelName = (TCHAR*)(m_m2FileData + m_modelHeader->nameOfs);
TCHAR boneGroupName[256];
sprintf(boneGroupName, "%s_bone", modelName);
groupHeadNode->SetName(boneGroupName);
}
else
groupHeadNode->SetName("BoneGroup");
// Bone
// 一个Bone构造一个Node, 并且加入到组中
ModelBoneDef* boneData = (ModelBoneDef*)(m_m2FileData + m_modelHeader->ofsBones);
m_boneNodeList.reserve(m_modelHeader->nBones);
for (unsigned int i = 0; i < m_modelHeader->nBones; ++i)
{
ModelBoneDef& boneDef = boneData[i];
// create bone node
HelperObject* obj = (HelperObject*)CreateInstance(HELPER_CLASS_ID, Class_ID(BONE_CLASS_ID, 0));
ImpNode* node = m_impInterface->CreateNode();
TCHAR boneName[256];
sprintf(boneName, "bone_%02d", i);
node->SetName(boneName);
node->SetPivot(*(Point3*)&(boneDef.pivot));
node->Reference(obj);
m_impInterface->AddNodeToScene(node);
// 设置变换矩阵
Matrix3 tm;
tm.IdentityMatrix();
tm.SetTrans(*(Point3*)&(boneDef.pivot));
node->SetTransform(0, tm);
// 添加到组
INode* realINode = node->GetINode();
realINode->SetGroupHead(FALSE);
realINode->SetGroupMember(TRUE);
groupHeadNode->AttachChild(realINode);
// 设置Bone父子关系
realINode->ShowBone(2);
m_boneNodeList.push_back(realINode);
if (boneDef.parent != -1)
{
INode* parentNode = m_boneNodeList[boneDef.parent];
parentNode->AttachChild(realINode);
}
realINode->EvalWorldState(0);
}
// 导入每根骨骼的关键桢数据
for (unsigned int i = 0; i < m_modelHeader->nBones; ++i)
{
ModelBoneDef& boneDef = boneData[i];
INode* realINode = m_boneNodeList[i];
Control* tmControl = realINode->GetTMController();
// Position
if (boneDef.translation.nKeys)
{
// 设置动画控制器为线性控制器
Control* posControl = createPositionController();
tmControl->SetPositionController(posControl);
unsigned int* timeData = (unsigned int*)(m_m2FileData + boneDef.translation.ofsTimes);
Point3* keyData = (Point3*)(m_m2FileData + boneDef.translation.ofsKeys);
// 设置动画时间范围
bool animRangeChanged = false;
Interval animRange = m_maxInterface->GetAnimRange();
for (unsigned int j = 0; j < boneDef.translation.nKeys; ++j)
{
if (timeData[j] < animRange.Start())
{
animRange.SetStart(timeData[j]);
animRangeChanged = true;
}
else if (timeData[j] > animRange.End())
{
animRange.SetEnd(timeData[j]);
animRangeChanged = true;
}
//.........这里部分代码省略.........
示例3: while
//.........这里部分代码省略.........
String project = item.project;
String path = item.path;
String conf = item.conf;
bool is_favorite = item.favorite;
Ref<ConfigFile> cf = memnew( ConfigFile );
Error err = cf->load(conf);
ERR_CONTINUE(err!=OK);
String project_name=TTR("Unnamed Project");
if (cf->has_section_key("application","name")) {
project_name = static_cast<String>(cf->get_value("application","name")).xml_unescape();
}
if (filter_option==ProjectListFilter::FILTER_NAME && search_term!="" && project_name.findn(search_term)==-1)
continue;
Ref<Texture> icon;
if (cf->has_section_key("application","icon")) {
String appicon = cf->get_value("application","icon");
if (appicon!="") {
Image img;
Error err = img.load(appicon.replace_first("res://",path+"/"));
if (err==OK) {
img.resize(64,64);
Ref<ImageTexture> it = memnew( ImageTexture );
it->create_from_image(img);
icon=it;
}
}
}
if (icon.is_null()) {
icon=get_icon("DefaultProjectIcon","EditorIcons");
}
String main_scene;
if (cf->has_section_key("application","main_scene")) {
main_scene = cf->get_value("application","main_scene");
}
selected_list_copy.erase(project);
HBoxContainer *hb = memnew( HBoxContainer );
hb->set_meta("name",project);
hb->set_meta("main_scene",main_scene);
hb->set_meta("favorite",is_favorite);
hb->connect("draw",this,"_panel_draw",varray(hb));
hb->connect("gui_input",this,"_panel_input",varray(hb));
hb->add_constant_override("separation",10*EDSCALE);
VBoxContainer *favorite_box = memnew( VBoxContainer );
TextureButton *favorite = memnew( TextureButton );
favorite->set_normal_texture(favorite_icon);
if (!is_favorite)
favorite->set_modulate(Color(1,1,1,0.2));
favorite->set_v_size_flags(SIZE_EXPAND);
favorite->connect("pressed",this,"_favorite_pressed",varray(hb));
favorite_box->add_child(favorite);
hb->add_child(favorite_box);
TextureRect *tf = memnew( TextureRect );
tf->set_texture(icon);
hb->add_child(tf);
VBoxContainer *vb = memnew(VBoxContainer);
vb->set_name("project");
hb->add_child(vb);
Control *ec = memnew( Control );
ec->set_custom_minimum_size(Size2(0,1));
vb->add_child(ec);
Label *title = memnew( Label(project_name) );
title->add_font_override("font", gui_base->get_font("large","Fonts"));
title->add_color_override("font_color",font_color);
vb->add_child(title);
Label *fpath = memnew( Label(path) );
fpath->set_name("path");
vb->add_child(fpath);
fpath->set_modulate(Color(1,1,1,0.5));
fpath->add_color_override("font_color",font_color);
scroll_childs->add_child(hb);
}
for (Map<String,String>::Element *E = selected_list_copy.front();E;E = E->next()) {
String key = E->key();
selected_list.erase(key);
}
scroll->set_v_scroll(0);
_update_project_buttons();
EditorSettings::get_singleton()->save();
tabs->set_current_tab(0);
}
示例4: ERR_FAIL_COND
void SceneTreeDock::_create() {
if (current_option==TOOL_NEW) {
Node *parent=NULL;
if (edited_scene) {
parent = scene_tree->get_selected();
ERR_FAIL_COND(!parent);
} else {
parent = scene_root;
ERR_FAIL_COND(!parent);
}
Object *c = create_dialog->instance_selected();
ERR_FAIL_COND(!c);
Node *child=c->cast_to<Node>();
ERR_FAIL_COND(!child);
editor_data->get_undo_redo().create_action("Create Node");
if (edited_scene) {
editor_data->get_undo_redo().add_do_method(parent,"add_child",child);
editor_data->get_undo_redo().add_do_method(child,"set_owner",edited_scene);
editor_data->get_undo_redo().add_do_method(editor_selection,"clear");
editor_data->get_undo_redo().add_do_method(editor_selection,"add_node",child);
editor_data->get_undo_redo().add_do_reference(child);
editor_data->get_undo_redo().add_undo_method(parent,"remove_child",child);
} else {
editor_data->get_undo_redo().add_do_method(editor,"set_edited_scene",child);
editor_data->get_undo_redo().add_do_reference(child);
editor_data->get_undo_redo().add_undo_method(editor,"set_edited_scene",(Object*)NULL);
}
editor_data->get_undo_redo().commit_action();
editor->push_item(c);
if (c->cast_to<Control>()) {
//make editor more comfortable, so some controls don't appear super shrunk
Control *ct = c->cast_to<Control>();
Size2 ms = ct->get_minimum_size();
if (ms.width<4)
ms.width=40;
if (ms.height<4)
ms.height=40;
ct->set_size(ms);
}
} else if (current_option==TOOL_REPLACE) {
Node * n = scene_tree->get_selected();
ERR_FAIL_COND(!n);
Object *c = create_dialog->instance_selected();
ERR_FAIL_COND(!c);
Node *newnode=c->cast_to<Node>();
ERR_FAIL_COND(!newnode);
List<PropertyInfo> pinfo;
n->get_property_list(&pinfo);
for(List<PropertyInfo>::Element *E=pinfo.front();E;E=E->next()) {
if (!(E->get().usage&PROPERTY_USAGE_STORAGE))
continue;
newnode->set(E->get().name,n->get(E->get().name));
}
editor->push_item(NULL);
//reconnect signals
List<MethodInfo> sl;
n->get_signal_list(&sl);
for (List<MethodInfo>::Element *E=sl.front();E;E=E->next()) {
List<Object::Connection> cl;
n->get_signal_connection_list(E->get().name,&cl);
for(List<Object::Connection>::Element *F=cl.front();F;F=F->next()) {
Object::Connection &c=F->get();
if (!(c.flags&Object::CONNECT_PERSIST))
continue;
newnode->connect(c.signal,c.target,c.method,varray(),Object::CONNECT_PERSIST);
}
}
String newname=n->get_name();
//.........这里部分代码省略.........
示例5: switch
bool Cursynth::textInput(int key) {
if (state_ == PATCH_LOADING) {
int num_patches = patches_.size();
switch(key) {
case '\n':
// Finish loading patches.
state_ = STANDARD;
gui_.clearPatches();
return true;
case KEY_UP:
// Go to previous patch.
patch_load_index_ = CLAMP(patch_load_index_ - 1, 0, num_patches - 1);
gui_.drawPatchLoading(patches_, patch_load_index_);
loadFromFile(patches_[patch_load_index_]);
return true;
case KEY_DOWN:
// Go to next patch.
patch_load_index_ = CLAMP(patch_load_index_ + 1, 0, num_patches - 1);
gui_.drawPatchLoading(patches_, patch_load_index_);
loadFromFile(patches_[patch_load_index_]);
return true;
}
}
std::string current_control = gui_.getCurrentControl();
Control* control = controls_.at(current_control);
bool should_redraw_control = false;
lock();
switch(key) {
case 'H':
case KEY_F(1):
startHelp();
break;
case 'S':
startSave();
break;
case 'L':
startLoad();
break;
case 'M':
case 'm':
if (state_ != MIDI_LEARN)
state_ = MIDI_LEARN;
else
state_ = STANDARD;
should_redraw_control = true;
break;
case 'C':
case 'c':
eraseMidiLearn(control);
state_ = STANDARD;
should_redraw_control = true;
break;
case KEY_UP:
current_control = gui_.getPrevControl();
state_ = STANDARD;
gui_.drawControl(control, false);
should_redraw_control = true;
break;
case KEY_DOWN:
current_control = gui_.getNextControl();
state_ = STANDARD;
gui_.drawControl(control, false);
should_redraw_control = true;
break;
case KEY_RIGHT:
control->increment();
should_redraw_control = true;
break;
case KEY_LEFT:
control->decrement();
should_redraw_control = true;
break;
default:
// Check if they pressed the slider keys and change the current value.
size_t slider_size = strlen(SLIDER) - 1;
for (size_t i = 0; i <= slider_size; ++i) {
if (SLIDER[i] == key) {
control->setPercentage((1.0 * i) / slider_size);
should_redraw_control = true;
break;
}
}
// Check if they pressed note keys and play the corresponding note.
for (size_t i = 0; i < strlen(KEYBOARD); ++i) {
if (KEYBOARD[i] == key) {
synth_.noteOn(48 + i);
break;
}
}
}
if (should_redraw_control) {
control = controls_.at(current_control);
gui_.drawControl(control, true);
gui_.drawControlStatus(control, state_ == MIDI_LEARN);
}
unlock();
//.........这里部分代码省略.........
示例6: ImageControl
void GlobePlugin::setupControls()
{
std::string imgDir = QDir::cleanPath( QgsApplication::pkgDataPath() + "/globe/gui" ).toStdString();
if ( QgsApplication::isRunningFromBuildDir() )
{
imgDir = QDir::cleanPath( QgsApplication::buildSourcePath() + "/src/plugins/globe/images/gui" ).toStdString();
}
osgEarth::Util::EarthManipulator* manip = dynamic_cast<osgEarth::Util::EarthManipulator*>( mOsgViewer->getCameraManipulator() );
osg::Image* yawPitchWheelImg = osgDB::readImageFile( imgDir + "/YawPitchWheel.png" );
ImageControl* yawPitchWheel = new ImageControl( yawPitchWheelImg );
int imgLeft = 16;
int imgTop = 20;
yawPitchWheel->setPosition( imgLeft, imgTop );
mControlCanvas->addControl( yawPitchWheel );
//ROTATE CONTROLS
Control* rotateCCW = new NavigationControl();
rotateCCW->setHeight( 22 );
rotateCCW->setWidth( 20 );
rotateCCW->setPosition( imgLeft + 0, imgTop + 18 );
rotateCCW->addEventHandler( new RotateControlHandler( manip, MOVE_OFFSET, 0 ) );
mControlCanvas->addControl( rotateCCW );
Control* rotateCW = new NavigationControl();
rotateCW->setHeight( 22 );
rotateCW->setWidth( 20 );
rotateCW->setPosition( imgLeft + 36, imgTop + 18 );
rotateCW->addEventHandler( new RotateControlHandler( manip, -MOVE_OFFSET, 0 ) );
mControlCanvas->addControl( rotateCW );
//Rotate Reset
Control* rotateReset = new NavigationControl();
rotateReset->setHeight( 22 );
rotateReset->setWidth( 16 );
rotateReset->setPosition( imgLeft + 20, imgTop + 18 );
rotateReset->addEventHandler( new RotateControlHandler( manip, 0, 0 ) );
mControlCanvas->addControl( rotateReset );
//TILT CONTROLS
Control* tiltUp = new NavigationControl();
tiltUp->setHeight( 19 );
tiltUp->setWidth( 24 );
tiltUp->setPosition( imgLeft + 20, imgTop + 0 );
tiltUp->addEventHandler( new RotateControlHandler( manip, 0, MOVE_OFFSET ) );
mControlCanvas->addControl( tiltUp );
Control* tiltDown = new NavigationControl();
tiltDown->setHeight( 19 );
tiltDown->setWidth( 24 );
tiltDown->setPosition( imgLeft + 16, imgTop + 36 );
tiltDown->addEventHandler( new RotateControlHandler( manip, 0, -MOVE_OFFSET ) );
mControlCanvas->addControl( tiltDown );
// -------
osg::Image* moveWheelImg = osgDB::readImageFile( imgDir + "/MoveWheel.png" );
ImageControl* moveWheel = new ImageControl( moveWheelImg );
imgTop = 80;
moveWheel->setPosition( imgLeft, imgTop );
mControlCanvas->addControl( moveWheel );
//MOVE CONTROLS
Control* moveLeft = new NavigationControl();
moveLeft->setHeight( 22 );
moveLeft->setWidth( 20 );
moveLeft->setPosition( imgLeft + 0, imgTop + 18 );
moveLeft->addEventHandler( new PanControlHandler( manip, -MOVE_OFFSET, 0 ) );
mControlCanvas->addControl( moveLeft );
Control* moveRight = new NavigationControl();
moveRight->setHeight( 22 );
moveRight->setWidth( 20 );
moveRight->setPosition( imgLeft + 36, imgTop + 18 );
moveRight->addEventHandler( new PanControlHandler( manip, MOVE_OFFSET, 0 ) );
mControlCanvas->addControl( moveRight );
Control* moveUp = new NavigationControl();
moveUp->setHeight( 19 );
moveUp->setWidth( 24 );
moveUp->setPosition( imgLeft + 20, imgTop + 0 );
moveUp->addEventHandler( new PanControlHandler( manip, 0, MOVE_OFFSET ) );
mControlCanvas->addControl( moveUp );
Control* moveDown = new NavigationControl();
moveDown->setHeight( 19 );
moveDown->setWidth( 24 );
moveDown->setPosition( imgLeft + 16, imgTop + 36 );
moveDown->addEventHandler( new PanControlHandler( manip, 0, -MOVE_OFFSET ) );
mControlCanvas->addControl( moveDown );
//Zoom Reset
Control* zoomHome = new NavigationControl();
zoomHome->setHeight( 22 );
zoomHome->setWidth( 16 );
zoomHome->setPosition( imgLeft + 20, imgTop + 18 );
zoomHome->addEventHandler( new HomeControlHandler( manip ) );
mControlCanvas->addControl( zoomHome );
// -------
//.........这里部分代码省略.........
示例7: Exit
/**
* @brief
* Called when a control event has occurred
*/
void Application65::OnControl(Control &cControl)
{
// Is it a button and was it just hit?
if (cControl.GetType() == ControlButton && reinterpret_cast<Button&>(cControl).IsHit()) {
// Check whether the escape key was pressed
if (cControl.GetName() == "KeyboardEscape") {
// Shut down the application
Exit(0);
// Show/hide the help text
} else if (cControl.GetName() == "KeyboardF1") {
// Get the info text scene node
SceneNode *pSceneNode = GetRootScene() ? GetRootScene()->GetByName("InfoText") : nullptr;
if (pSceneNode) {
// Toggle the active state of the scene node
pSceneNode->SetActive(!pSceneNode->IsActive());
}
// Toggle post processing
} else if (cControl.GetName() == "KeyboardSpace") {
// Get the currently used camera
SceneNode *pCamera = reinterpret_cast<SceneNode*>(GetCamera());
if (pCamera) {
// Loop through all available post process scene node modifiers
uint32 nIndex = 0;
SceneNodeModifier *pModifier = pCamera->GetModifier("PLCompositing::SNMPostProcess", nIndex);
while (pModifier) {
// Toggle the active state of the post process scene node modifier
pModifier->SetActive(!pModifier->IsActive());
// Next modifier, please
pModifier = pCamera->GetModifier("PLCompositing::SNMPostProcess", ++nIndex);
}
}
// Next post process effect
} else if (cControl.GetName() == "KeyboardPageUp") {
// Get the currently used camera
SceneNode *pCamera = reinterpret_cast<SceneNode*>(GetCamera());
if (pCamera) {
// Increase the current selected modifier index
m_nCurrentSelectedModifier++;
if (m_nCurrentSelectedModifier >= m_lstModifierClasses.GetNumOfElements())
m_nCurrentSelectedModifier = 0;
// Remove all old modifiers add the new one
pCamera->ClearModifiers();
pCamera->AddModifier(m_lstModifierClasses[m_nCurrentSelectedModifier]->GetClassName());
}
// Previous post process effect
} else if (cControl.GetName() == "KeyboardPageDown") {
// Get the currently used camera
SceneNode *pCamera = reinterpret_cast<SceneNode*>(GetCamera());
if (pCamera) {
// Decrease the current selected modifier index
if (m_nCurrentSelectedModifier)
m_nCurrentSelectedModifier--;
else
m_nCurrentSelectedModifier = m_lstModifierClasses.GetNumOfElements()-1;
// Remove all old modifiers add the new one
pCamera->ClearModifiers();
pCamera->AddModifier(m_lstModifierClasses[m_nCurrentSelectedModifier]->GetClassName());
}
// Custom post process effect: "Rainbow"
} else if (cControl.GetName() == "Keyboard1") {
// Get the currently used camera
SceneNode *pCamera = reinterpret_cast<SceneNode*>(GetCamera());
if (pCamera) {
// Remove all old modifiers add the new one
pCamera->ClearModifiers();
pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessCrazyBars", "ColorScaleY=\"0.002\"");
}
// Custom post process effect: "Cartoon"
} else if (cControl.GetName() == "Keyboard2") {
// Get the currently used camera
SceneNode *pCamera = reinterpret_cast<SceneNode*>(GetCamera());
if (pCamera) {
// Remove all old modifiers add the new ones
pCamera->ClearModifiers();
pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessEdgeDetect", "LuminanceConvert=\"-0.2125 -0.7154 -0.0721\"");
pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessCombineMultiplicate");
}
// Custom post process effect: "Animated cartoon"
} else if (cControl.GetName() == "Keyboard3") {
// Get the currently used camera
SceneNode *pCamera = reinterpret_cast<SceneNode*>(GetCamera());
if (pCamera) {
// Remove all old modifiers add the new ones
pCamera->ClearModifiers();
pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessEdgeDetect", "LuminanceConvert=\"-0.2125 -0.7154 -0.0721\"");
pCamera->AddModifier("PLPostProcessEffects::SNMPostProcessOldFilm");
//.........这里部分代码省略.........
示例8: DlgProc
INT_PTR DlgProc(TimeValue t, IParamMap2 *map, HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
OrientConstRotation* p = (OrientConstRotation*)map->GetParamBlock()->GetOwner();
UpdateOrientName(p);
p->hWnd = hWnd;
int ct = p->pblock->Count(orientation_target_list);
// int ctf = p->pblock->Count(orientation_target_weight);
switch (msg)
{
case WM_INITDIALOG:
{
int selection = p->last_selection;
ICustButton *iBut = GetICustButton(GetDlgItem(hWnd,IDC_ORIENT_TARG_PICKNODE));
iBut->SetType(CBT_CHECK);
iBut->SetHighlightColor(GREEN_WASH);
ReleaseICustButton(iBut);
ISpinnerControl* spin = SetupFloatSpinner(hWnd, IDC_ORIENT_CONS_WEIGHT_SPINNER, IDC_ORIENT_CONS_WEIGHT_EDIT, 0.0f, 100.0f, 50.0f, 1.0f);
spin = GetISpinner(GetDlgItem(hWnd, IDC_ORIENT_CONS_WEIGHT_SPINNER));
// CAL-09/10/02: automatically set last_selection to 0 when there're targets
if (p->pblock->Count(orientation_target_list) < 1) {
// nothing is selected OR there are no targets
// all buttons - target_delete, weight_edit, weight_spinner -- are disabled
EnableWindow(GetDlgItem(p->hWnd, IDC_ORIENT_CONS_WEIGHT_EDIT), FALSE);
EnableWindow(GetDlgItem(p->hWnd, IDC_ORIENT_CONS_WEIGHT_SPINNER), FALSE);
ICustButton *iPickOb1;
iPickOb1 = GetICustButton(GetDlgItem(p->hWnd, IDC_REMOVE_ORIENT_TARG));
if (iPickOb1 != NULL){
iPickOb1->Enable(FALSE);
ReleaseICustButton(iPickOb1);
}
spin->SetValue(0.0f, FALSE);
} else {
if (selection < 0)
p->last_selection = selection = 0;
// there is a valid selection
// automatically means there is AT LEAST one target
Control *cont = p->pblock->GetControllerByID(orientation_target_weight, selection);
// until it is animated, paramblock doesn't have a controller assigned in it yet.
if (spin) {
if ((cont != NULL) && cont->IsKeyAtTime(t,KEYAT_ROTATION))
spin->SetKeyBrackets(TRUE);
else
spin->SetKeyBrackets(FALSE);
}
if(p->pickWorldFlag){
ICustButton *iPickOb;
iPickOb = GetICustButton(GetDlgItem(p->hWnd, IDC_ORIENT_PICK_WORLD));
if (iPickOb != NULL){
iPickOb->Enable(FALSE);
ReleaseICustButton(iPickOb);
}
}
if (p->pblock->Count(orientation_target_list) == 1){// there is only one target
// the "delete" button should be enabled
ICustButton *iPickOb1;
iPickOb1 = GetICustButton(GetDlgItem(p->hWnd, IDC_REMOVE_ORIENT_TARG));
if (iPickOb1 != NULL){
iPickOb1->Enable(TRUE);
ReleaseICustButton(iPickOb1);
}
// the rest are disabled
// EnableWindow(GetDlgItem(p->hWnd, IDC_ORIENT_CONS_WEIGHT_EDIT), FALSE);
// EnableWindow(GetDlgItem(p->hWnd, IDC_ORIENT_CONS_WEIGHT_SPINNER), FALSE);
}
else if (p->pblock->Count(orientation_target_list) > 1){
// there are more than one targets
// all buttons - delete, weight_edit, weight_spinner -- are enabled
EnableWindow(GetDlgItem(p->hWnd, IDC_ORIENT_CONS_WEIGHT_EDIT), TRUE);
EnableWindow(GetDlgItem(p->hWnd, IDC_ORIENT_CONS_WEIGHT_SPINNER), TRUE);
ICustButton *iPickOb1;
iPickOb1 = GetICustButton(GetDlgItem(p->hWnd, IDC_REMOVE_ORIENT_TARG));
if (iPickOb1 != NULL){
iPickOb1->Enable(TRUE);
ReleaseICustButton(iPickOb1);
}
}
}
ReleaseISpinner(spin);
p->RedrawListbox(GetCOREInterface()->GetTime(), selection);
return TRUE;
}
break;
case WM_COMMAND:
{
int selection;
if (LOWORD(wParam) == IDC_ORIENT_TARG_LIST && HIWORD(wParam) == LBN_SELCHANGE)
{
//.........这里部分代码省略.........
示例9: GetWindowLong
// Process window messages
LRESULT CALLBACK Daemon::WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) {
// This is a static method, so we don't know which instantiation we're
// dealing with. We have stored a pseudo-this in the window user data,
// though.
Daemon *_this = (Daemon *) GetWindowLong(hwnd, GWL_USERDATA);
switch (iMsg) {
case WM_CREATE:
{
return 0;
}
case WM_SOCKEVENT:
{
assert(HIWORD(lParam) == 0);
// A new socket created by accept might send messages to
// this procedure. We can ignore them.
if(wParam != _this->m_sock) {
return 0;
}
switch(lParam) {
case FD_ACCEPT:
{
SOCKET hNewSock;
hNewSock = accept(_this->m_sock, NULL, NULL);
WSAAsyncSelect(hNewSock, hwnd, 0, 0);
unsigned long nbarg = 0;
ioctlsocket(hNewSock, FIONBIO, &nbarg);
pApp->NewConnection(hNewSock);
break;
}
case FD_READ:
{
unsigned long numbytes;
ioctlsocket(_this->m_sock, FIONREAD, &numbytes);
recv(_this->m_sock, _this->netbuf, numbytes, 0);
break;
}
case FD_CLOSE:
Log::info(_T("Daemon connection closed\n"));
DestroyWindow(hwnd);
break;
}
return 0;
}
case WM_COMMAND:
switch (LOWORD(wParam)) {
case ID_NEWCONN:
pApp->NewConnection();
break;
case IDC_OPTIONBUTTON:
{
Control ctrlThis;
ctrlThis.setWindow(_this->m_hwnd);
ConnectionConfigDialog conConfDialog;
conConfDialog.setParent(&ctrlThis);
conConfDialog.setConnectionConfig(&_this->m_conConf);
if (conConfDialog.showModal() == IDOK) {
ConnectionConfigSM ccsm(_T(".listen"));
_this->m_conConf.saveToStorage(&ccsm);
}
}
break;
case ID_CLOSEDAEMON:
PostQuitMessage(0);
break;
case IDD_APP_ABOUT:
ShowAboutBox();
break;
case IDD_CONFIGURATION:
g_vncViewerConfigDialog.showModal();
break;
}
return 0;
case WM_TRAYNOTIFY:
{
HMENU hSubMenu = GetSubMenu(_this->m_hmenu, 0);
if (lParam==WM_LBUTTONDBLCLK) {
// double click: execute first menu item
::SendMessage(_this->m_nid.hWnd, WM_COMMAND,
GetMenuItemID(hSubMenu, 0), 0);
} else if (lParam==WM_RBUTTONUP) {
if (hSubMenu == NULL) {
Log::warning(_T("No systray submenu\n"));
return 0;
}
// Make first menu item the default (bold font)
::SetMenuDefaultItem(hSubMenu, 0, TRUE);
// Display the menu at the current mouse location. There's a "bug"
// (Microsoft calls it a feature) in Windows 95 that requires calling
// SetForegroundWindow. To find out more, search for Q135788 in MSDN.
//
//.........这里部分代码省略.........
示例10:
/**
* @brief
* Called when a control event has occurred
*/
void Application60::OnControl(Control &cControl)
{
// Check whether the escape key was pressed
if (cControl.GetType() == ControlButton && cControl.GetName() == "KeyboardEscape")
Exit(0); // Shut down the application
}
示例11: pos
void TabContainer::_input_event(const InputEvent& p_event) {
if (p_event.type==InputEvent::MOUSE_BUTTON &&
p_event.mouse_button.pressed &&
p_event.mouse_button.button_index==BUTTON_LEFT) {
// clicks
Point2 pos( p_event.mouse_button.x, p_event.mouse_button.y );
int top_margin = _get_top_margin();
if (pos.y>top_margin)
return; // no click (too far down)
if (pos.x<tabs_ofs_cache)
return; // no click (too far left)
Ref<StyleBox> tab_bg = get_stylebox("tab_bg");
Ref<StyleBox> tab_fg = get_stylebox("tab_fg");
Ref<Font> font = get_font("font");
Ref<Texture> incr = get_icon("increment");
Ref<Texture> decr = get_icon("decrement");
Ref<Texture> menu = get_icon("menu");
Ref<Texture> menu_hl = get_icon("menu_hl");
if (popup && pos.x>get_size().width-menu->get_width()) {
emit_signal("pre_popup_pressed");
Vector2 pp_pos = get_global_pos();
pp_pos.x+=get_size().width;
pp_pos.x-=popup->get_size().width;
pp_pos.y+=menu->get_height();
popup->set_global_pos( pp_pos );
popup->popup();;
return;
}
pos.x-=tabs_ofs_cache;
int idx=0;
int found=-1;
bool rightroom=false;
for(int i=0;i<get_child_count();i++) {
Control *c = get_child(i)->cast_to<Control>();
if (!c)
continue;
if (c->is_set_as_toplevel())
continue;
if (idx<tab_display_ofs) {
idx++;
continue;
}
if (idx>last_tab_cache) {
rightroom=true;
break;
}
String s = c->has_meta("_tab_name")?String(XL_MESSAGE(String(c->get_meta("_tab_name")))):String(c->get_name());
int tab_width=font->get_string_size(s).width;
if (c->has_meta("_tab_icon")) {
Ref<Texture> icon = c->get_meta("_tab_icon");
if (icon.is_valid()) {
tab_width+=icon->get_width();
if (s!="")
tab_width+=get_constant("hseparation");
}
}
if (idx==current) {
tab_width+=tab_fg->get_minimum_size().width;
} else {
tab_width+=tab_bg->get_minimum_size().width;
}
if (pos.x < tab_width) {
found=idx;
break;
}
pos.x-=tab_width;
idx++;
}
if (buttons_visible_cache) {
if (p_event.mouse_button.x>get_size().width-incr->get_width()) {
if (rightroom) {
tab_display_ofs+=1;
update();
}
} else if (p_event.mouse_button.x>get_size().width-incr->get_width()-decr->get_width()) {
//.........这里部分代码省略.........
示例12: switch
void TabContainer::_notification(int p_what) {
switch(p_what) {
case NOTIFICATION_DRAW: {
RID ci = get_canvas_item();
Ref<StyleBox> panel = get_stylebox("panel");
Size2 size = get_size();
if (!tabs_visible) {
panel->draw(ci, Rect2( 0, 0, size.width, size.height));
return;
}
Ref<StyleBox> tab_bg = get_stylebox("tab_bg");
Ref<StyleBox> tab_fg = get_stylebox("tab_fg");
Ref<Texture> incr = get_icon("increment");
Ref<Texture> incr_hl = get_icon("increment_hilite");
Ref<Texture> decr = get_icon("decrement");
Ref<Texture> decr_hl = get_icon("decrement_hilite");
Ref<Texture> menu = get_icon("menu");
Ref<Texture> menu_hl = get_icon("menu_hl");
Ref<Font> font = get_font("font");
Color color_fg = get_color("font_color_fg");
Color color_bg = get_color("font_color_bg");
int side_margin = get_constant("side_margin");
int top_margin = _get_top_margin();
int label_valign_fg = get_constant("label_valign_fg");
int label_valign_bg = get_constant("label_valign_bg");
Size2 top_size = Size2( size.width, top_margin );
int w=0;
int idx=0;
Vector<int> offsets;
Vector<Control*> controls;
int from=0;
int limit=get_size().width;
if (popup) {
top_size.width-=menu->get_width();
limit-=menu->get_width();
}
bool notdone=false;
last_tab_cache=-1;
for(int i=0;i<get_child_count();i++) {
Control *c = get_child(i)->cast_to<Control>();
if (!c)
continue;
if (c->is_set_as_toplevel())
continue;
if (idx<tab_display_ofs) {
idx++;
from=idx;
continue;
}
if (w>=get_size().width) {
buttons_visible_cache=true;
notdone=true;
break;
}
offsets.push_back(w);
controls.push_back(c);
String s = c->has_meta("_tab_name")?String(XL_MESSAGE(String(c->get_meta("_tab_name")))):String(c->get_name());
w+=font->get_string_size(s).width;
if (c->has_meta("_tab_icon")) {
Ref<Texture> icon = c->get_meta("_tab_icon");
if (icon.is_valid()) {
w+=icon->get_width();
if (s!="")
w+=get_constant("hseparation");
}
}
if (idx==current) {
w+=tab_fg->get_minimum_size().width;
} else {
w+=tab_bg->get_minimum_size().width;
}
if (idx<tab_display_ofs) {
//.........这里部分代码省略.........
示例13: GetTickCount
/** BroadCast Mouse Move Event */
void EventMgr::MouseDown(unsigned short x, unsigned short y, unsigned short Button,
unsigned short Mod)
{
std::vector< int>::iterator t;
std::vector< Window*>::iterator m;
Control *ctrl;
unsigned long thisTime;
thisTime = GetTickCount();
if (ClickMatch(x, y, thisTime)) {
Button |= GEM_MB_DOUBLECLICK;
dc_x = 0;
dc_y = 0;
dc_time = 0;
} else {
dc_x = x;
dc_y = y;
dc_time = thisTime+dc_delay;
}
MButtons |= Button;
for (t = topwin.begin(); t != topwin.end(); ++t) {
m = windows.begin();
m += ( *t );
if (( *m ) == NULL)
continue;
if (!( *m )->Visible)
continue;
if (( ( *m )->XPos <= x ) && ( ( *m )->YPos <= y )) {
//Maybe we are on the window, let's check
if (( ( *m )->XPos + ( *m )->Width >= x ) &&
( ( *m )->YPos + ( *m )->Height >= y )) {
//Yes, we are on the Window
//Let's check if we have a Control under the Mouse Pointer
ctrl = ( *m )->GetControl( x, y, true );
if (!ctrl) {
ctrl = ( *m )->GetControl( x, y, false);
}
last_win_mousefocused = *m;
if (ctrl != NULL) {
last_win_mousefocused->SetMouseFocused( ctrl );
ctrl->OnMouseDown( x - last_win_mousefocused->XPos - ctrl->XPos, y - last_win_mousefocused->YPos - ctrl->YPos,
Button, Mod );
if (!ctrl->WantsDragOperation()) {
focusLock = ctrl;
}
if (last_win_mousefocused) {
RefreshCursor(last_win_mousefocused->Cursor);
}
return;
}
}
}
if (( *m )->Visible == WINDOW_FRONT) //stop looking further
break;
}
if ((Button == GEM_MB_SCRLUP || Button == GEM_MB_SCRLDOWN) && last_win_mousefocused) {
ctrl = last_win_mousefocused->GetScrollControl();
if (ctrl) {
ctrl->OnMouseDown( x - last_win_mousefocused->XPos - ctrl->XPos, y - last_win_mousefocused->YPos - ctrl->YPos, Button, Mod );
}
}
if (last_win_mousefocused) {
last_win_mousefocused->SetMouseFocused(NULL);
}
}
示例14: getControl
Sprite * Controls::getControlSprite(int id)
{
Control *pc = getControl(id);
if (pc) return pc->getSprite();
return 0; //nullptr
}
示例15: if
/** Special Key Press Event */
void EventMgr::OnSpecialKeyPress(unsigned char Key)
{
if (!last_win_focused) {
return;
}
Control *ctrl = NULL;
// tab shows tooltips
if (Key == GEM_TAB) {
if (last_win_over != NULL) {
Control *ctrl = last_win_over->GetOver();
if (ctrl != NULL) {
ctrl->DisplayTooltip();
}
}
}
//the default control will get only GEM_RETURN
else if (Key == GEM_RETURN) {
ctrl = last_win_focused->GetDefaultControl(0);
}
//the default cancel control will get only GEM_ESCAPE
else if (Key == GEM_ESCAPE) {
ctrl = last_win_focused->GetDefaultControl(1);
} else if (Key >= GEM_FUNCTION1 && Key <= GEM_FUNCTION16) {
if (function_bar) {
ctrl = function_bar->GetFunctionControl(Key-GEM_FUNCTION1);
} else {
ctrl = last_win_focused->GetFunctionControl(Key-GEM_FUNCTION1);
}
}
//if there was no default button set, then the current focus will get it (except function keys)
if (!ctrl) {
if (Key<GEM_FUNCTION1 || Key > GEM_FUNCTION16) {
ctrl = last_win_focused->GetFocus();
}
}
//if one is under focus, use the default scroll focus
if (!ctrl) {
if (Key == GEM_UP || Key == GEM_DOWN) {
ctrl = last_win_focused->GetScrollControl();
}
}
if (ctrl) {
switch (ctrl->ControlType) {
//scrollbars will receive only mousewheel events
case IE_GUI_SCROLLBAR:
if (Key != GEM_UP && Key != GEM_DOWN) {
return;
}
break;
//buttons will receive only GEM_RETURN
case IE_GUI_BUTTON:
if (Key >= GEM_FUNCTION1 && Key <= GEM_FUNCTION16) {
//fake mouse button
ctrl->OnMouseDown(0,0,GEM_MB_ACTION,0);
ctrl->OnMouseUp(0,0,GEM_MB_ACTION,0);
return;
}
if (Key != GEM_RETURN && Key!=GEM_ESCAPE) {
return;
}
break;
// shouldnt be any harm in sending these events to any control
}
ctrl->OnSpecialKeyPress( Key );
}
}