⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vitemc.h

📁 linux下的E_MAIL客户端源码
💻 H
字号:
/* * $Id: VItemC.h,v 1.1.1.1 2000/04/25 13:49:02 fnevgeny Exp $ * * Copyright (c) 1992 HaL Computer Systems, Inc.  All rights reserved. *  *          HAL COMPUTER SYSTEMS INTERNATIONAL, LTD. *                  1315 Dell Avenue *                  Campbell, CA  95008 * * Author: Greg Hilton * Contributors: Tom Lang, Frank Bieser, and others * * This program 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. * * This program 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. * * http://www.gnu.org/copyleft/gpl.html * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. */#ifndef _VItemC_h_#define _VItemC_h_#include "StringListC.h"#include "CallbackC.h"#include "PixmapC.h"	// For XbmT and XpmT#include <X11/Intrinsic.h>class VBoxC;class PtrListC;class RectC;//// This is the compare function type//typedef int     (*CompareFn)(const void*, const void*);//// View item class//class VItemC {public:   enum ImageSourceT {      IMAGE_FILE,      XBM_DATA,      XPM_DATA   };//// Return components//      PTR_QUERY(StringListC&,	FieldList,	fieldList)   MEMBER_QUERY(ImageSourceT,	ImageSource,	imageSrc)      PTR_QUERY(StringC&,	Name,		name)      PTR_QUERY(StringC&,	Label,		label)      PTR_QUERY(char*,		LabelTag,	labelTag)      PTR_QUERY(StringC&,	LgImageFile,	lgImageFile)      PTR_QUERY(XbmT&,		LgXbmData,	lgXbmData)   MEMBER_QUERY(XpmT,		LgXpmData,	lgXpmData)      PTR_QUERY(StringC&,	SmImageFile,	smImageFile)      PTR_QUERY(XbmT&,		SmXbmData,	smXbmData)   MEMBER_QUERY(XpmT,		SmXpmData,	smXpmData)      PTR_QUERY(void*,		UserData,	userData)   MEMBER_QUERY(Boolean,	ValidDropSite,	validDropSite)      PTR_QUERY(void*,		ViewData,	viewData)//// Set components//   void		Field(int, const char*);   void		FieldList(const StringListC&);   inline void	Name(const char *s)	{ name = s; }   void		Label(const char *s);   void		SetPixmaps(const char*, const char*);   void		SetPixmaps(const XbmT*, const XbmT*);   void		SetPixmaps(const XpmT,  const XpmT);   void		SetLabelTag(const char*);   void		SetFieldTag(int, const char*);//// Query components//   char		*FieldTag(int);   StringC	*Field(int);//// Constructors//   VItemC();   VItemC(const char *n);   VItemC(const char *n, StringC l);   VItemC(const char *n, const char *l, const char *s);   VItemC(const char *n, const XbmT*, const XbmT*);   VItemC(const char *n, const XpmT,  const XpmT);   virtual	~VItemC();   virtual void	printOn(ostream&) const {}   virtual int	operator==(const VItemC&) const;   inline int	operator!=(const VItemC& i) const { return !(*this==i); }   int	compare(const VItemC&) const;   inline int	operator<(const VItemC& i) const { return (compare(i) < 0); }   inline int	operator>(const VItemC& i) const { return (compare(i) > 0); }//// Add callbacks//   inline void	AddSelectCallback(CallbackFn *fn, void *data) {      AddCallback(&selectCalls, fn, data);   }   inline void	AddDeselectCallback(CallbackFn *fn, void *data) {      AddCallback(&deselectCalls, fn, data);   }   inline void	AddOpenCallback(CallbackFn *fn, void *data) {      AddCallback(&openCalls, fn, data);   }   inline void	AddFieldChangeCallback(CallbackFn *fn, void *data) {      AddCallback(&fieldChangeCalls, fn, data);   }   inline void	AddLabelChangeCallback(CallbackFn *fn, void *data) {      AddCallback(&labelChangeCalls, fn, data);   }   inline void	AddPixmapChangeCallback(CallbackFn *fn, void *data) {      AddCallback(&pixmapChangeCalls, fn, data);   }//// Call callbacks//   inline void	CallSelectCallbacks()	{ CallCallbacks(&selectCalls,	this); }   inline void	CallDeselectCallbacks()	{ CallCallbacks(&deselectCalls,	this); }   inline void	CallOpenCallbacks()	{ CallCallbacks(&openCalls,	this); }   inline void	CallFieldChangeCallbacks() {      CallCallbacks(&fieldChangeCalls, this);   }   inline void	CallLabelChangeCallbacks() {      CallCallbacks(&labelChangeCalls, this);   }   inline void	CallPixmapChangeCallbacks() {      CallCallbacks(&pixmapChangeCalls, this);   }//// Remove callbacks//   inline void	RemoveSelectCallback(CallbackFn *fn, void *data) {      RemoveCallback(&selectCalls, fn, data);   }   inline void	RemoveDeselectCallback(CallbackFn *fn, void *data) {      RemoveCallback(&deselectCalls, fn, data);   }   inline void	RemoveOpenCallback(CallbackFn *fn, void *data) {      RemoveCallback(&openCalls, fn, data);   }   inline void	RemoveFieldChangeCallback(CallbackFn *fn, void *data) {      RemoveCallback(&fieldChangeCalls, fn, data);   }   inline void	RemoveLabelChangeCallback(CallbackFn *fn, void *data) {      RemoveCallback(&labelChangeCalls, fn, data);   }   inline void	RemovePixmapChangeCallback(CallbackFn *fn, void *data) {      RemoveCallback(&pixmapChangeCalls, fn, data);   }//// Specify the function used to compare two VItemCs//   inline void	SetCompareFunction(CompareFn comp) { compFunc = comp; }//// Let the user or view store a pointer with a view item.//   inline void	SetUserData(void* ptr) { userData = ptr; }   inline void	SetViewData(void* ptr) { viewData = ptr; }//// Specify whether drops are ok here//   inline void	ValidDropSite(Boolean val) { validDropSite = val; }//// Manage popup menu//   inline Boolean	HasMenu() { return (menu != NULL); }   void			PostMenu(XButtonEvent*);   void			SetMenu(Widget, Widget parent=NULL);   inline void	AddMenuCallback(CallbackFn *fn, void *data) {      AddCallback(&menuCalls, fn, data);   }   inline void	CallMenuCallbacks()	{ CallCallbacks(&menuCalls, this); }   inline void	RemoveMenuCallback(CallbackFn *fn, void *data) {      RemoveCallback(&menuCalls, fn, data);   }//// Hierarchy info//   VItemC	*parent;   VItemC	*child;   VItemC	*prev;   VItemC	*next;   void		AddChild(VItemC*, VItemC *after=NULL);   int		ChildCount();//// Used for self-drawing items//   virtual void		GetPrefSize(int *wd, int *ht);   virtual void		Draw(RectC& area, GC, Drawable dst, Boolean invert);   virtual Boolean	SingleClick(int x, int y, int state);   virtual Boolean	DoubleClick(int x, int y, int state);protected:   int		 type;   StringC	 name;		// Used for sorting   StringC	 label;		// Used for display   char		*labelTag;	// Used when view box uses font list   StringListC	 fieldList;   PtrListC	*fieldTagList;	// Used when view box uses font list   void*	 userData;   void*	 viewData;   Widget	 menu;		// Popup menu   StringC	lgImageFile;	// Name of large image file   StringC	smImageFile;	// Name of small image file   XbmT		lgXbmData;	// Data for large x bitmap   XbmT		smXbmData;	// Data for small x bitmap   XpmT		lgXpmData;	// Data for large xpm pixmap   XpmT		smXpmData;	// Data for small xpm pixmap   ImageSourceT imageSrc;	// Where does data come from   Boolean	validDropSite;	// True if drops allowed here//// Callbacks//   CallbackC	*selectCalls;   CallbackC	*deselectCalls;   CallbackC	*openCalls;   CallbackC	*fieldChangeCalls;   CallbackC	*labelChangeCalls;   CallbackC	*pixmapChangeCalls;   CallbackC	*menuCalls;//// Function used to compare two VItemCs//   CompareFn	compFunc;   static int	DefaultComp(const void *a, const void *b) {      VItemC	*via = *(VItemC **)a;      VItemC	*vib = *(VItemC **)b;      return ( via->name.compare(vib->name) );   }private:   void		Init();};//// Method to allow printing of VItemC//inline ostream&operator<<(ostream& strm, const VItemC& i){   i.printOn(strm);   return(strm);}//// This type determines how an item is drawn//typedef enum {   AS_IS,		// Draw inverted if item is selected   NORMAL,		// Always draw not inverted   INVERT		// Always draw inverted} VItemDrawModeT;#endif // _VItemC_h_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -