gecko-dev/cmd/xfe/XfeWidgets/tests/Xfe/FrameShellTest.c

278 строки
7.0 KiB
C

/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*-----------------------------------------*/
/* */
/* Name: FrameShellTest.c */
/* Description: Test for XfeFrameShell widget. */
/* Author: Ramiro Estrugo <ramiro@netscape.com> */
/* */
/*----------------------------------------------------------------------*/
#include <Xfe/XfeTest.h>
static Widget create_control (String);
static Widget create_dummy (String);
static void first_map_cb (Widget,XtPointer,XtPointer);
static void map_cb (Widget,XtPointer,XtPointer);
static void unmap_cb (Widget,XtPointer,XtPointer);
static void track_cb (Widget,XtPointer,XtPointer);
static void operation_cb (Widget,XtPointer,XtPointer);
static void message_output (String);
static String message_create (Widget,String);
/*----------------------------------------------------------------------*/
static XfeMenuItemRec file_items[] =
{
{ "Open", XfeMENU_PUSH },
{ "Save", XfeMENU_PUSH },
{ "Sep", XfeMENU_SEP },
{ "Exit", XfeMENU_PUSH, XfeExitCallback },
{ NULL }
};
/*----------------------------------------------------------------------*/
static XfeMenuItemRec track_items[] =
{
{ "Editres", XfeMENU_TOGGLE, track_cb },
{ "DeleteWindow", XfeMENU_TOGGLE, track_cb },
{ "SaveYourself", XfeMENU_TOGGLE, track_cb },
{ "Mapping", XfeMENU_TOGGLE, track_cb },
{ "Position", XfeMENU_TOGGLE, track_cb },
{ "Size", XfeMENU_TOGGLE, track_cb },
{ NULL }
};
/*----------------------------------------------------------------------*/
static XfeMenuItemRec operations_items[] =
{
{ "Popup", XfeMENU_PUSH, operation_cb },
{ "Popdown", XfeMENU_PUSH, operation_cb },
{ "Sep", XfeMENU_SEP },
{ "Map", XfeMENU_PUSH, operation_cb },
{ "Unmap", XfeMENU_PUSH, operation_cb },
{ "Realize", XfeMENU_PUSH, operation_cb },
{ "Sep", XfeMENU_SEP },
{ "Raise", XfeMENU_PUSH, operation_cb },
{ "Lower", XfeMENU_PUSH, operation_cb },
{ "Sep", XfeMENU_SEP },
{ "Destroy", XfeMENU_PUSH, operation_cb },
{ "Create", XfeMENU_PUSH, operation_cb },
{ NULL }
};
/*----------------------------------------------------------------------*/
static XfeMenuPaneRec pane_items[] =
{
{ "File", file_items },
{ "Track", track_items },
{ "Operations", operations_items },
{ NULL }
};
/*----------------------------------------------------------------------*/
static Widget _control = NULL;
static Widget _dummy = NULL;
static Widget _tool_bar = NULL;
static Widget _log_list = NULL;
/*----------------------------------------------------------------------*/
int
main(int argc,char *argv[])
{
XfeAppCreate("FrameShellTest",&argc,argv);
_control = create_control("Control");
_dummy = create_dummy("Dummy");
_tool_bar = XfeDescendantFindByName(_control,"ToolBar",XfeFIND_ANY,False);
_log_list = XfeDescendantFindByName(_control,"List",XfeFIND_ANY,False);
/* XtPopup(_dummy,XtGrabNone); */
XtPopup(_control,XtGrabNone);
XfeAppMainLoop();
return 0;
}
/*----------------------------------------------------------------------*/
static Widget
create_control(String name)
{
Widget frame = NULL;
Widget form = NULL;
Widget tool_bar;
Widget list;
Arg av[20];
Cardinal ac = 0;
XtSetArg(av[ac],XmNtrackEditres,False); ac++;
frame = XfeFrameCreate(name,av,ac);
form = XfeDescendantFindByName(frame,"MainForm",XfeFIND_ANY,False);
tool_bar = XfeToolBarCreate(form,"ToolBar",pane_items,NULL);
list = XmCreateScrolledList(form,"List",NULL,0);
XtManageChild(list);
return frame;
}
/*----------------------------------------------------------------------*/
static Widget
create_dummy(String name)
{
Widget frame = NULL;
Widget form = NULL;
frame = XfeFrameCreate(name,NULL,0);
form = XfeDescendantFindByName(frame,"MainForm",XfeFIND_ANY,False);
XtAddCallback(frame,XmNfirstMapCallback,first_map_cb,NULL);
XtAddCallback(frame,XmNmapCallback,map_cb,NULL);
XtAddCallback(frame,XmNunmapCallback,unmap_cb,NULL);
return frame;
}
/*----------------------------------------------------------------------*/
static void
first_map_cb(Widget w,XtPointer client_data,XtPointer call_data)
{
message_output(message_create(w,"FirstMap"));
}
/*----------------------------------------------------------------------*/
static void
map_cb(Widget w,XtPointer client_data,XtPointer call_data)
{
message_output(message_create(w,"Map"));
}
/*----------------------------------------------------------------------*/
static void
unmap_cb(Widget w,XtPointer client_data,XtPointer call_data)
{
message_output(message_create(w,"Unmap"));
}
/*----------------------------------------------------------------------*/
static void
track_cb(Widget w,XtPointer client_data,XtPointer call_data)
{
String name = XtName(w);
if (!XfeIsAlive(_dummy))
{
return;
}
if (strcmp(name,"Editres") == 0)
{
XfeResourceToggleBoolean(_dummy,XmNtrackEditres);
}
else if (strcmp(name,"DeleteWindow") == 0)
{
XfeResourceToggleBoolean(_dummy,XmNtrackDeleteWindow);
}
else if (strcmp(name,"Mapping") == 0)
{
XfeResourceToggleBoolean(_dummy,XmNtrackMapping);
}
}
/*----------------------------------------------------------------------*/
static void
operation_cb(Widget w,XtPointer client_data,XtPointer call_data)
{
String name = XtName(w);
if (!XfeIsAlive(_dummy))
{
return;
}
if (strcmp(name,"Popup") == 0)
{
XtPopup(_dummy,XtGrabNone);
}
else if (strcmp(name,"Popdown") == 0)
{
XtPopdown(_dummy);
}
else if (strcmp(name,"Map") == 0)
{
XtMapWidget(_dummy);
}
else if (strcmp(name,"Unmap") == 0)
{
XtUnmapWidget(_dummy);
}
else if (strcmp(name,"Realize") == 0)
{
XtRealizeWidget(_dummy);
}
}
/*----------------------------------------------------------------------*/
static void
message_output(String message)
{
XmString item;
assert( XfeIsAlive(_log_list) );
if (!message)
{
message = "NULL";
}
item = XmStringCreate(message,XmFONTLIST_DEFAULT_TAG);
XmListAddItem(_log_list,item,0);
XmStringFree(item);
}
/*----------------------------------------------------------------------*/
static String
message_create(Widget w,String message)
{
String name;
static char buf[4096];
static int count = 1;
if (XfeIsAlive(w))
{
name = XtName(w);
}
else
{
name = "NULL";
}
sprintf(buf,"%3d. %s(%s)",count,message,name);
count++;
return buf;
}
/*----------------------------------------------------------------------*/