|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Motif
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Copyright (c) 1987-2012, The Open Group. All rights reserved.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are free software; you can
|
|
Packit |
b099d7 |
* redistribute them and/or modify them under the terms of the GNU
|
|
Packit |
b099d7 |
* Lesser General Public License as published by the Free Software
|
|
Packit |
b099d7 |
* Foundation; either version 2 of the License, or (at your option)
|
|
Packit |
b099d7 |
* any later version.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are distributed in the hope that
|
|
Packit |
b099d7 |
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
Packit |
b099d7 |
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
Packit |
b099d7 |
* PURPOSE. See the GNU Lesser General Public License for more
|
|
Packit |
b099d7 |
* details.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
b099d7 |
* License along with these librararies and programs; if not, write
|
|
Packit |
b099d7 |
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
Packit |
b099d7 |
* Floor, Boston, MA 02110-1301 USA
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include <Xm/Xm.h>
|
|
Packit |
b099d7 |
#include <Xm/Ext.h>
|
|
Packit |
b099d7 |
#include <Xm/TabList.h>
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct _XmTabbedStackListRec {
|
|
Packit |
b099d7 |
int allocated;
|
|
Packit |
b099d7 |
int used;
|
|
Packit |
b099d7 |
XmTabAttributes tabs;
|
|
Packit |
b099d7 |
} XmTabbedStackListRec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define XmLIST_GROWTH_FACTOR 10
|
|
Packit |
b099d7 |
#define XiXmStringCopy(s) (((s) == (XmString)NULL) ? NULL : XmStringCopy(s))
|
|
Packit |
b099d7 |
#define XiXmStringCompare(s1,s2) (((s1) == (s2)) ? True \
|
|
Packit |
b099d7 |
: ((s1) != NULL && (s2) != NULL) \
|
|
Packit |
b099d7 |
? XmStringCompare(s1,s2) : False)
|
|
Packit |
b099d7 |
#define XiXmStringFree(s) if((s)!=(XmString)NULL)XmStringFree(s);else(s)=NULL
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* TabListCreate(void)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* Allocates and initializes an empty XmTabbedStackList structure and returns
|
|
Packit |
b099d7 |
* a pointer to the structure.
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* None.
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* XmTabbedStackList - an empty allocated XiTablist
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
XmTabbedStackList
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
XmTabbedStackListCreate(void)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmTabbedStackListCreate()
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmTabbedStackList tabList;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Allocate the structure and zero it. Then give it back to the
|
|
Packit |
b099d7 |
* caller.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
tabList = (XmTabbedStackList) XtMalloc(sizeof(XmTabbedStackListRec));
|
|
Packit |
b099d7 |
tabList->allocated = tabList->used = 0;
|
|
Packit |
b099d7 |
tabList->tabs = (XmTabAttributes) NULL;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return( tabList );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* XmTabbedStackListCopy(tab_list)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* This makes a copy of the given XmTabbedStackList and returns the
|
|
Packit |
b099d7 |
* copy.
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* tab_list : XmTabbedStackList - the XmTabbedStackList to copy
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* XmTabbedStackList - the copy of the given list
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
XmTabbedStackList
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
XmTabbedStackListCopy(XmTabbedStackList tab_list)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmTabbedStackListCopy(tab_list)
|
|
Packit |
b099d7 |
XmTabbedStackList tab_list;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmTabbedStackList newList;
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* First if they gave us nothing, then lets return nothing to
|
|
Packit |
b099d7 |
* them.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( tab_list == NULL ) return( NULL );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Now allocate the new structure and set its allocated and used
|
|
Packit |
b099d7 |
* to the number of items we need.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
newList = (XmTabbedStackList) XtMalloc(sizeof(XmTabbedStackListRec));
|
|
Packit |
b099d7 |
newList->allocated = newList->used = tab_list->used;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Now check if we have any items and if not just zero the
|
|
Packit |
b099d7 |
* data, else we will have to copy item by item.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( newList->used == 0 )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
newList->tabs = (XmTabAttributes) NULL;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* First allocate the memory for all the entries. and then copy
|
|
Packit |
b099d7 |
* item by item the list.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
newList->tabs = (XmTabAttributes)
|
|
Packit |
b099d7 |
XtMalloc(sizeof(XmTabAttributeRec) * newList->used);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for( i = 0; i < newList->used; ++i )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
newList->tabs[i].label_string =
|
|
Packit |
b099d7 |
XiXmStringCopy(tab_list->tabs[i].label_string);
|
|
Packit |
b099d7 |
newList->tabs[i].label_pixmap = tab_list->tabs[i].label_pixmap;
|
|
Packit |
b099d7 |
newList->tabs[i].string_direction =
|
|
Packit |
b099d7 |
tab_list->tabs[i].string_direction;
|
|
Packit |
b099d7 |
newList->tabs[i].pixmap_placement =
|
|
Packit |
b099d7 |
tab_list->tabs[i].pixmap_placement;
|
|
Packit |
b099d7 |
newList->tabs[i].label_alignment =
|
|
Packit |
b099d7 |
tab_list->tabs[i].label_alignment;
|
|
Packit |
b099d7 |
newList->tabs[i].foreground = tab_list->tabs[i].foreground;
|
|
Packit |
b099d7 |
newList->tabs[i].background = tab_list->tabs[i].background;
|
|
Packit |
b099d7 |
newList->tabs[i].background_pixmap =
|
|
Packit |
b099d7 |
tab_list->tabs[i].background_pixmap;
|
|
Packit |
b099d7 |
newList->tabs[i].sensitive = tab_list->tabs[i].sensitive;
|
|
Packit |
b099d7 |
newList->tabs[i].value_mode = XmTAB_VALUE_COPY;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return( newList );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* XmTabbedStackListFree(tab_list)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* Deallocates the memory associated with the given tab list.
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* tab_list : XiTablist - the XmTabbedStackList to deallocate
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* None.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
XmTabbedStackListFree(XmTabbedStackList tab_list)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmTabbedStackListFree(tab_list)
|
|
Packit |
b099d7 |
XmTabbedStackList tab_list;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* If we do not have anything to deallocate the lets just
|
|
Packit |
b099d7 |
* get out of here.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( tab_list == NULL ) return;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* If we have used items then lets walk through the list and
|
|
Packit |
b099d7 |
* deallocate anything we have to.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( tab_list->used != 0 )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
for( i = 0; i < tab_list->used; ++i )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( tab_list->tabs[i].value_mode == XmTAB_VALUE_SHARE ) continue;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XiXmStringFree(tab_list->tabs[i].label_string);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* If we have any allocated slots lets deallocate them and finally
|
|
Packit |
b099d7 |
* deallocate the parent structure.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( tab_list->allocated != 0 )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XtFree((XtPointer) tab_list->tabs);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
XtFree((XtPointer) tab_list);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* XmTabbedStackListRemove(tab_list, position)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* Remove and deallocate the tab at the specified position in
|
|
Packit |
b099d7 |
* the list.
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* tab_list : XmTabbedStackList - the XmTabbedStackList to work with
|
|
Packit |
b099d7 |
* position : int - the position of the tab to remove
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* None.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
XmTabbedStackListRemove(XmTabbedStackList tab_list, int position)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmTabbedStackListRemove(tab_list, position)
|
|
Packit |
b099d7 |
XmTabbedStackList tab_list;
|
|
Packit |
b099d7 |
int position;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmTabAttributes to, from;
|
|
Packit |
b099d7 |
int count;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( tab_list == NULL || position < 0 ||
|
|
Packit |
b099d7 |
(position > 0 && position >= tab_list->used) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
to = &(tab_list->tabs[position]);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Now deallocate the data associated with this tab, if needed.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( to->value_mode == XmTAB_VALUE_COPY )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmStringFree(to->label_string);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Now decrement the number of used slots and shift down any slots
|
|
Packit |
b099d7 |
* above the one that is being deleted.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
tab_list->used--;
|
|
Packit |
b099d7 |
if( position != tab_list->used )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
from = &(tab_list->tabs[position+1]);
|
|
Packit |
b099d7 |
count = tab_list->used - position;
|
|
Packit |
b099d7 |
memmove((XtPointer) to, (XtPointer) from,
|
|
Packit |
b099d7 |
sizeof(XmTabAttributeRec) * count);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* XmTabbedStackListInsert(tab_list, position, mask, attributes)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* Adds a tab with the specified attributes to the given
|
|
Packit |
b099d7 |
* XmTabbedStackList.
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* tab_list : XmTabbedStackList - the XmTabbedStackList to add the new tab to
|
|
Packit |
b099d7 |
* position : int - the position to place the new tab at
|
|
Packit |
b099d7 |
* mask : XtValueMask - the mask of attributes to set on the
|
|
Packit |
b099d7 |
* new tab
|
|
Packit |
b099d7 |
* attributes : XmTabAttributes - the list of attributes to set on the
|
|
Packit |
b099d7 |
* new tab
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* int - the position of the new tab in the list
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
int
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
XmTabbedStackListInsert(XmTabbedStackList tab_list, int position, XtValueMask mask,
|
|
Packit |
b099d7 |
XmTabAttributes attributes)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmTabbedStackListInsert(tab_list, position, mask, attributes)
|
|
Packit |
b099d7 |
XmTabbedStackList tab_list;
|
|
Packit |
b099d7 |
int position;
|
|
Packit |
b099d7 |
XtValueMask mask;
|
|
Packit |
b099d7 |
XmTabAttributes attributes;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmTabAttributes newTab;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* First let's see if they gave us a valid XmTabbedStackList and position
|
|
Packit |
b099d7 |
* and if not let's just leave.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( tab_list == NULL || position < XmTAB_LAST_POSITION ||
|
|
Packit |
b099d7 |
(position > 0 && position >= tab_list->used) ) return XmTAB_NOT_FOUND;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Now lets add our new tab to the list in the correct position.
|
|
Packit |
b099d7 |
* If the list is not large enough to hold our new tab we will
|
|
Packit |
b099d7 |
* grow the list.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( tab_list->allocated == tab_list->used )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Our list is not large enough to take another tab, so lets
|
|
Packit |
b099d7 |
* grow the list by XmLIST_GROWTH_FACTOR.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
tab_list->allocated += XmLIST_GROWTH_FACTOR;
|
|
Packit |
b099d7 |
tab_list->tabs = (XmTabAttributes)
|
|
Packit |
b099d7 |
XtRealloc((XtPointer) tab_list->tabs,
|
|
Packit |
b099d7 |
sizeof(XmTabAttributeRec) * tab_list->allocated);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Once here we know that the list is large enough to hold our new
|
|
Packit |
b099d7 |
* item so now lets move any existing items up to make room for our
|
|
Packit |
b099d7 |
* new kiddie.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( position == XmTAB_LAST_POSITION )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
newTab = &(tab_list->tabs[tab_list->used]);
|
|
Packit |
b099d7 |
position = tab_list->used;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmTabAttributes to, from;
|
|
Packit |
b099d7 |
int count;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
from = &(tab_list->tabs[position]);
|
|
Packit |
b099d7 |
to = &(tab_list->tabs[position+1]);
|
|
Packit |
b099d7 |
count = tab_list->used - position;
|
|
Packit |
b099d7 |
memmove(to, from, sizeof(XmTabAttributeRec) * count);
|
|
Packit |
b099d7 |
newTab = &(tab_list->tabs[position]);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
tab_list->used++;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Now lets initialize the new tab. After that we will take a look
|
|
Packit |
b099d7 |
* at the mask and see what attributes were customized.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
newTab->label_string = (XmString) NULL;
|
|
Packit |
b099d7 |
newTab->string_direction = XmSTRING_DIRECTION_L_TO_R;
|
|
Packit |
b099d7 |
newTab->label_pixmap = XmUNSPECIFIED_PIXMAP;
|
|
Packit |
b099d7 |
newTab->label_alignment = XmALIGNMENT_CENTER;
|
|
Packit |
b099d7 |
newTab->pixmap_placement = XmPIXMAP_RIGHT;
|
|
Packit |
b099d7 |
newTab->foreground = XmCOLOR_DYNAMIC;
|
|
Packit |
b099d7 |
newTab->background = XmCOLOR_DYNAMIC;
|
|
Packit |
b099d7 |
newTab->background_pixmap = XmPIXMAP_DYNAMIC;
|
|
Packit |
b099d7 |
newTab->sensitive = True;
|
|
Packit |
b099d7 |
newTab->value_mode = XmTAB_VALUE_COPY;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_VALUE_MODE )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
newTab->value_mode = attributes->value_mode;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_LABEL_STRING )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( newTab->value_mode == XmTAB_VALUE_COPY )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
newTab->label_string = XiXmStringCopy(attributes->label_string);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
newTab->label_string = attributes->label_string;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_STRING_DIRECTION )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
newTab->string_direction = attributes->string_direction;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_LABEL_PIXMAP )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
newTab->label_pixmap = attributes->label_pixmap;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_PIXMAP_PLACEMENT )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
newTab->pixmap_placement = attributes->pixmap_placement;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_BACKGROUND )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
newTab->background = attributes->background;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_BACKGROUND_PIXMAP )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
newTab->background_pixmap = attributes->background_pixmap;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask * XmTAB_SENSITIVE )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
newTab->sensitive = attributes->sensitive;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_FOREGROUND )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
newTab->foreground = attributes->foreground;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_LABEL_ALIGNMENT )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
newTab->label_alignment = attributes->label_alignment;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return( position );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* XmTabbedStackListAppend(tab_list, mask, attributes)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* Appends a new tab with the given attributes.
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* tab_list : XmTabbedStackList - the XmTabbedStackList to append a tab to
|
|
Packit |
b099d7 |
* mask : XtValueMask - the mask of attributes to set on the
|
|
Packit |
b099d7 |
* new tab
|
|
Packit |
b099d7 |
* attributes : XmTabAttributes - the list of attributes to set on the
|
|
Packit |
b099d7 |
* new tab
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* int - the position of the new tab
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
int
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
XmTabbedStackListAppend(XmTabbedStackList tab_list, XtValueMask mask,
|
|
Packit |
b099d7 |
XmTabAttributes attributes)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmTabbedStackListAppend(tab_list, mask, attributes)
|
|
Packit |
b099d7 |
XmTabbedStackList tab_list;
|
|
Packit |
b099d7 |
XtValueMask mask;
|
|
Packit |
b099d7 |
XmTabAttributes attributes;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* So we cheat a little here. All we need to do is call insert and
|
|
Packit |
b099d7 |
* lets that function know that we want it at the end of the list.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
return( XmTabbedStackListInsert(tab_list, XmTAB_LAST_POSITION, mask, attributes) );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* XmTabbedStackListModify(tab_list, position, mask, attributes)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* Change the specified attributes for the tab at the given position
|
|
Packit |
b099d7 |
* in the given XmTabbedStackList.
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* tab_list : XmTabbedStackList - the XmTabbedStackList that contains the
|
|
Packit |
b099d7 |
* tab to modify.
|
|
Packit |
b099d7 |
* position : int - the index of the tab to modify
|
|
Packit |
b099d7 |
* mask : XtValueMask - the mask of attributes to modify
|
|
Packit |
b099d7 |
* attributes : XmTabAttributes - the list of attributes to modify
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* None.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
XmTabbedStackListModify(XmTabbedStackList tab_list, int position, XtValueMask mask,
|
|
Packit |
b099d7 |
XmTabAttributes attributes)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmTabbedStackListModify(tab_list, position, mask, attributes)
|
|
Packit |
b099d7 |
XmTabbedStackList tab_list;
|
|
Packit |
b099d7 |
int position;
|
|
Packit |
b099d7 |
XtValueMask mask;
|
|
Packit |
b099d7 |
XmTabAttributes attributes;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmTabAttributes tab;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* First lets see if they gave us anything valid to work with and
|
|
Packit |
b099d7 |
* if they did not lets vacate the premises.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( tab_list == NULL || position < 0 || position >= tab_list->used )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
tab = &(tab_list->tabs[position]);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Now lets check the various flags and see what we need to
|
|
Packit |
b099d7 |
* change.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( mask & XmTAB_VALUE_MODE && tab->value_mode != attributes->value_mode &&
|
|
Packit |
b099d7 |
attributes->value_mode == XmTAB_VALUE_COPY )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Can only change this mode from share to copy, NOT from copy
|
|
Packit |
b099d7 |
* to share.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
tab->value_mode = attributes->value_mode;
|
|
Packit |
b099d7 |
tab->label_string = XiXmStringCopy(attributes->label_string);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_LABEL_STRING )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( tab->value_mode == XmTAB_VALUE_COPY )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XiXmStringFree(tab->label_string);
|
|
Packit |
b099d7 |
tab->label_string = XiXmStringCopy(attributes->label_string);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tab->label_string = attributes->label_string;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_STRING_DIRECTION )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tab->string_direction = attributes->string_direction;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_LABEL_PIXMAP )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tab->label_pixmap = attributes->label_pixmap;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_PIXMAP_PLACEMENT )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tab->pixmap_placement = attributes->pixmap_placement;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_BACKGROUND )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tab->background = attributes->background;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_BACKGROUND_PIXMAP )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tab->background_pixmap = attributes->background_pixmap;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_SENSITIVE )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tab->sensitive = attributes->sensitive;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_FOREGROUND )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tab->foreground = attributes->foreground;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( mask & XmTAB_LABEL_ALIGNMENT )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tab->label_alignment = attributes->label_alignment;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* XmTabbedStackListQuery(tab_list, position, mask, attributes)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* Retrieve attributes from the specified tab. (NOTE: This may be
|
|
Packit |
b099d7 |
* a copy out, depends on value_mode, so be sure to free
|
|
Packit |
b099d7 |
* this when done.)
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* tab_list : XmTabbedStackList - the tab list that contains the tab
|
|
Packit |
b099d7 |
* position : int - the tab index to query
|
|
Packit |
b099d7 |
* attributes : XmTabAttributes - the attributes returned.
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* None.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
XmTabbedStackListQuery(XmTabbedStackList tab_list, int position, XmTabAttributes attributes)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmTabbedStackListQuery(tab_list, position, attributes)
|
|
Packit |
b099d7 |
XmTabbedStackList tab_list;
|
|
Packit |
b099d7 |
int position;
|
|
Packit |
b099d7 |
XmTabAttributes attributes;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmTabAttributes tab;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Make sure that we have valid data and if not "asta la vesta, baby"
|
|
Packit |
b099d7 |
* I have NO idea how to spell that.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( tab_list == NULL || position < 0 || position >= tab_list->used )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
tab = &(tab_list->tabs[position]);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( tab->value_mode == XmTAB_VALUE_COPY )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
attributes->label_string = XiXmStringCopy(tab->label_string);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
attributes->label_string = tab->label_string;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
attributes->label_pixmap = tab->label_pixmap;
|
|
Packit |
b099d7 |
attributes->string_direction = tab->string_direction;
|
|
Packit |
b099d7 |
attributes->label_alignment = tab->label_alignment;
|
|
Packit |
b099d7 |
attributes->pixmap_placement = tab->pixmap_placement;
|
|
Packit |
b099d7 |
attributes->background = tab->background;
|
|
Packit |
b099d7 |
attributes->background_pixmap = tab->background_pixmap;
|
|
Packit |
b099d7 |
attributes->sensitive = tab->sensitive;
|
|
Packit |
b099d7 |
attributes->foreground = tab->foreground;
|
|
Packit |
b099d7 |
attributes->value_mode = tab->value_mode;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* XmTabbedStackListFind(tab_list, label_string)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* Finds the first tab whose label_string matches the given
|
|
Packit |
b099d7 |
* and returns its index.
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* tab_list : XmTabbedStackList - the XmTabbedStackList to search
|
|
Packit |
b099d7 |
* label_string : XmString - the label_string to search for
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* int - the index of the tab found, or XmTAB_NOT_FOUND if
|
|
Packit |
b099d7 |
* a match is not found.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
int
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
XmTabbedStackListFind(XmTabbedStackList tab_list, XmString label_string)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmTabbedStackListFind(tab_list, label_string)
|
|
Packit |
b099d7 |
XmTabbedStackList tab_list;
|
|
Packit |
b099d7 |
XmString label_string;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( tab_list == NULL ) return( XmTAB_NOT_FOUND );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for( i = 0; i < tab_list->used; ++i )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( XiXmStringCompare(tab_list->tabs[i].label_string, label_string) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return( i );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return( XmTAB_NOT_FOUND );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* XmTabbedStackListSimpleRemove(tab_list, label_string)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* Removes the first tab from the given XmTabbedStackList that matches the
|
|
Packit |
b099d7 |
* given label string.
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* tab_list : XmTabbedStackList - tab list to remove the item from
|
|
Packit |
b099d7 |
* label_string : XmString - the label string to match
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* None.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
XmTabbedStackListSimpleRemove(XmTabbedStackList tab_list, XmString label_string)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmTabbedStackListSimpleRemove(tab_list, label_string)
|
|
Packit |
b099d7 |
XmTabbedStackList tab_list;
|
|
Packit |
b099d7 |
XmString label_string;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int position = XmTabbedStackListFind(tab_list, label_string);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( position != XmTAB_NOT_FOUND ) XmTabbedStackListRemove(tab_list, position);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* XmTabbedStackListSimpleInsert(tab_list, position, label_string)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* Inserts a new tab with the specified label string at the
|
|
Packit |
b099d7 |
* specified position.
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* tab_list : XmTabbedStackList - the XmTabbedStackList to add a tab to
|
|
Packit |
b099d7 |
* position : int - the position to put the tab at
|
|
Packit |
b099d7 |
* label_string : XmString - the label for the new tab
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* int - the position of the new tab
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
int
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
XmTabbedStackListSimpleInsert(XmTabbedStackList tab_list, int position, XmString label_string)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmTabbedStackListSimpleInsert(tab_list, position, label_string)
|
|
Packit |
b099d7 |
XmTabbedStackList tab_list;
|
|
Packit |
b099d7 |
int position;
|
|
Packit |
b099d7 |
XmString label_string;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmTabAttributeRec attributes;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
attributes.label_string = label_string;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return( XmTabbedStackListInsert(tab_list, position, XmTAB_LABEL_STRING,
|
|
Packit |
b099d7 |
&attributes) );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* XmTabbedStackListSimpleAppend(tab_list, label_string)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* Append a new tab to the given tab list with the specified label
|
|
Packit |
b099d7 |
* string.
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* tab_list : XmTabbedStackList - the XmTabbedStackList to append a tab to
|
|
Packit |
b099d7 |
* label_string : XmString - the label for the new tab
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* int - the position of the new tab
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
int
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
XmTabbedStackListSimpleAppend(XmTabbedStackList tab_list, XmString label_string)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmTabbedStackListSimpleAppend(tab_list, label_string)
|
|
Packit |
b099d7 |
XmTabbedStackList tab_list;
|
|
Packit |
b099d7 |
XmString label_string;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmTabAttributeRec attributes;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
attributes.label_string = label_string;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return( XmTabbedStackListAppend(tab_list, XmTAB_LABEL_STRING,
|
|
Packit |
b099d7 |
&attributes) );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* XmTabbedStackListsimpleModify(tab_list, position, label_string)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* Changes the label string for the specified tab.
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* tab_list : XmTabbedStackList - the XmTabbedStackList that contains the tab to
|
|
Packit |
b099d7 |
* change
|
|
Packit |
b099d7 |
* position : int - the tab to change
|
|
Packit |
b099d7 |
* label_string : XmString - the new value of the label string
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* None.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
XmTabbedStackListSimpleModify(XmTabbedStackList tab_list, int position, XmString label_string)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmTabbedStackListSimpleModify(tab_list, position, label_string)
|
|
Packit |
b099d7 |
XmTabbedStackList tab_list;
|
|
Packit |
b099d7 |
int position;
|
|
Packit |
b099d7 |
XmString label_string;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmTabAttributeRec attributes;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmTabbedStackListModify(tab_list, position, XmTAB_LABEL_STRING, &attributes);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* XmTabbedStackListSimpleQuery(tab_list, position)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* Query the label string from the specified tab
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* tab_list : XmTabbedStackList - the XmTabbedStackList to query
|
|
Packit |
b099d7 |
* position : int - the tab to query
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* XmString - the label for the given tab (NOTE: this is a copy
|
|
Packit |
b099d7 |
* so please free when you are done)
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
XmString
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
XmTabbedStackListSimpleQuery(XmTabbedStackList tab_list, int position)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmTabbedStackListSimpleQuery(tab_list, position)
|
|
Packit |
b099d7 |
XmTabbedStackList tab_list;
|
|
Packit |
b099d7 |
int position;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmTabAttributeRec attributes;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmTabbedStackListQuery(tab_list, position, &attributes);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( attributes.value_mode != XmTAB_VALUE_COPY )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
attributes.label_string = XiXmStringCopy(attributes.label_string);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return( attributes.label_string );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* XmTabAttributesFree(attributes)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* This deallocates any memory that the attribute structure is
|
|
Packit |
b099d7 |
* using. This does not free the attribute structure.
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* attributes : XiAttributes - the structure whose contants should be
|
|
Packit |
b099d7 |
* deallocated.
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* None.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
XmTabAttributesFree(XmTabAttributes attributes)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmTabAttributesFree(attributes)
|
|
Packit |
b099d7 |
XmTabAttributes attributes;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( attributes->value_mode == XmTAB_VALUE_COPY )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XiXmStringFree(attributes->label_string);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* _XmTabbedStackListCount(tab_list)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* Returns the number of entries in the given XmTabbedStackList.
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* tab_list : XmTabbedStackList - the tab list whose entries to count
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* int - the number of items in the given XmTabbedStackList
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
int
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
_XmTabbedStackListCount(XmTabbedStackList tab_list)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
_XmTabbedStackListCount(tab_list)
|
|
Packit |
b099d7 |
XmTabbedStackList tab_list;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( tab_list == NULL ) return( 0 );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return( tab_list->used );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* _XmTabbedStackListGet(tab_list, position)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* Returns a pointer to the given element in the XmTabbedStackList. Use
|
|
Packit |
b099d7 |
* with caution as it returns a pointer to live memory.
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* tab_list : XmTabbedStackList - the tab list to index into
|
|
Packit |
b099d7 |
* int : Position - the index of the tab you want
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* XmTabAttributes - a pointer to the specified tab
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
XmTabAttributes
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
_XmTabbedStackListGet(XmTabbedStackList tab_list, int position)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
_XmTabbedStackListGet(tab_list, position)
|
|
Packit |
b099d7 |
XmTabbedStackList tab_list;
|
|
Packit |
b099d7 |
int position;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmTabAttributes tab;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Make sure that we have valid data and if not "asta la vesta, baby"
|
|
Packit |
b099d7 |
* I have NO idea how to spell that.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( tab_list == NULL || position < 0 || position >= tab_list->used )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return( NULL );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
tab = &(tab_list->tabs[position]);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return( tab );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmTabAttributes
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
_XmTabbedStackListArray(XmTabbedStackList tab_list)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
_XmTabbedStackListArray(tab_list)
|
|
Packit |
b099d7 |
XmTabbedStackList tab_list;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Make sure that we have valid data and if not "asta la vesta, baby"
|
|
Packit |
b099d7 |
* I have NO idea how to spell that.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( tab_list == NULL )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return( NULL );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return( tab_list->tabs );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function:
|
|
Packit |
b099d7 |
* XmTabbedStackListCompare(XmTabbedStackList list1, XmTabbedStackList list2)
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* Compares to tab lists to see if they are logically
|
|
Packit |
b099d7 |
* equivalent.
|
|
Packit |
b099d7 |
* Input:
|
|
Packit |
b099d7 |
* list1 : XmTabbedStackList - tab list to compare
|
|
Packit |
b099d7 |
* list2 : XmTabbedStackList - tab list to compare
|
|
Packit |
b099d7 |
* Output:
|
|
Packit |
b099d7 |
* XmTabResult - indicates the differences it any
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
XmTabResult
|
|
Packit |
b099d7 |
#ifndef _NO_PROTO
|
|
Packit |
b099d7 |
XmTabbedStackListCompare(XmTabbedStackList list1, XmTabbedStackList list2)
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmTabbedStackListCompare(list1, list2)
|
|
Packit |
b099d7 |
XmTabbedStackList list1, list2;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmTabResult result = XmTAB_CMP_EQUAL;
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( (list1 == NULL && list2 != NULL) ||
|
|
Packit |
b099d7 |
(list1 != NULL && list2 == NULL) ||
|
|
Packit |
b099d7 |
list1->used != list2->used ) return( XmTAB_CMP_SIZE );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for( i = 0; i < list1->used; ++i )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( list1->tabs[i].label_pixmap != list2->tabs[i].label_pixmap ||
|
|
Packit |
b099d7 |
!XiXmStringCompare(list1->tabs[i].label_string,
|
|
Packit |
b099d7 |
list2->tabs[i].label_string) ||
|
|
Packit |
b099d7 |
list1->tabs[i].pixmap_placement !=
|
|
Packit |
b099d7 |
list2->tabs[i].pixmap_placement )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return( XmTAB_CMP_SIZE );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( list1->tabs[i].string_direction !=
|
|
Packit |
b099d7 |
list2->tabs[i].string_direction ||
|
|
Packit |
b099d7 |
list1->tabs[i].label_alignment != list2->tabs[i].label_alignment ||
|
|
Packit |
b099d7 |
list1->tabs[i].foreground != list2->tabs[i].foreground ||
|
|
Packit |
b099d7 |
list1->tabs[i].background != list2->tabs[i].background ||
|
|
Packit |
b099d7 |
list1->tabs[i].sensitive != list2->tabs[i].sensitive ||
|
|
Packit |
b099d7 |
list1->tabs[i].background_pixmap !=
|
|
Packit |
b099d7 |
list2->tabs[i].background_pixmap )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
result = XmTAB_CMP_VISUAL;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return( result );
|
|
Packit |
b099d7 |
}
|