// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ // // Copyright (c) 2004, Haiku // // This software is part of the Haiku distribution and is covered // by the Haiku license. // // // File: MethodReplicant.h // Authors: Jérôme Duval, // // Description: Input Server // Created: October 13, 2004 // // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ #ifndef METHOD_REPLICANT_H_ #define METHOD_REPLICANT_H_ #include #include #include "MethodMenuItem.h" #define REPLICANT_CTL_NAME "MethodReplicant" class _EXPORT MethodReplicant; class MethodReplicant : public BView { public: MethodReplicant(const char* signature); MethodReplicant(BMessage *); // BMessage * based constructor needed to support archiving virtual ~MethodReplicant(); // archiving overrides static MethodReplicant *Instantiate(BMessage *data); virtual status_t Archive(BMessage *data, bool deep = true) const; virtual void AttachedToWindow(); // misc BView overrides virtual void MouseDown(BPoint); virtual void MouseUp(BPoint); virtual void Draw(BRect); virtual void MessageReceived(BMessage *); private: BBitmap *fSegments; char *fSignature; BPopUpMenu fMenu; void UpdateMethod(BMessage *); void UpdateMethodIcon(BMessage *); void UpdateMethodMenu(BMessage *); void UpdateMethodName(BMessage *); void AddMethod(BMessage *message); void RemoveMethod(BMessage *message); MethodMenuItem *FindItemByCookie(int32 cookie); }; #endif