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

📄 htdialog.h

📁 功能较全面的反汇编器:反汇编器ht-2.0.15.tar.gz
💻 H
字号:
/* *	HT Editor *	htdialog.h * *	Copyright (C) 1999-2002 Stefan Weyergraf * *	This program is free software; you can redistribute it and/or modify *	it under the terms of the GNU General Public License version 2 as *	published by the Free Software Foundation. * *	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. * *	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., 675 Mass Ave, Cambridge, MA 02139, USA. */#ifndef __HTDIALOG_H__#define __HTDIALOG_H__#include <stdarg.h>#include "htdebug.h"#include "htobj.h"#include "strtools.h"#include "io/keyb.h"/* *	CLASS ht_dialog */#define ds_normal			0#define ds_term_ok			1#define ds_term_cancel			2#define button_cancel			0#define button_ok			1#define button_yes			button_ok#define button_no			2#define button_skip			button_no#define button_all			3#define button_none			4class ht_queued_msg: public Object {public:	ht_view *target;	htmsg msg;		    ht_queued_msg(ht_view *target, htmsg &msg);};class ht_dialog: public ht_window {protected:	int state;	int return_val;	Queue *msgqueue;/* overwritten */	virtual	const char *defaultpalette();			ht_queued_msg *dequeuemsg();public:			ht_dialog() {};			ht_dialog(BuildCtorArg&a): ht_window(a) {};		void	init(Bounds *b, const char *desc, uint framestyle);	virtual	void	done();/* overwritten */	virtual	int aclone();	virtual void draw();	virtual	void handlemsg(htmsg *msg);/* new */		void queuemsg(ht_view *target, htmsg &msg);	virtual	int getstate(int *return_val);	virtual	int run(bool modal);	virtual	void setstate(int state, int return_val);};/* *	CLASS ht_cluster */class ht_cluster: public ht_dialog_widget {protected:			ht_string_list *strings;			int sel;			int scount;			ht_key shortcuts[32];/* overwritten */	virtual	const char *defaultpalette();public:			void	init(Bounds *b, ht_string_list *strings);	virtual	void	done();};/* *	CLASS ht_checkboxes */struct ht_checkboxes_data {	DDECL_UINT(state);};class ht_checkboxes: public ht_cluster {protected:			uint32 state;public:			void	init(Bounds *b, ht_string_list *strings);	virtual	void	done();/* overwritten */	virtual	int datasize();	virtual	void draw();	virtual	void handlemsg(htmsg *msg);	virtual	void getdata(ObjectStream &s);	virtual	void setdata(ObjectStream &s);};/* *	CLASS ht_radioboxes */struct ht_radioboxes_data {	DDECL_UINT(sel);};class ht_radioboxes: public ht_cluster {public:			void	init(Bounds *b, ht_string_list *strings);	virtual	void	done();/* overwritten */	virtual	int datasize();	virtual	void draw();	virtual	void handlemsg(htmsg *msg);	virtual	void getdata(ObjectStream &s);	virtual	void setdata(ObjectStream &s);};/* *	CLASS ht_inputfield */class ht_inputfield;struct ht_inputfield_data {	DDECL_UINT(textlen);	DDECL_PTR(byte, text);};class ht_inputfield: public ht_dialog_widget {protected:	byte **text, *textv;	byte **curchar, *curcharv;	byte **selstart, *selstartv;	byte **selend, *selendv;	int *textlen, textlenv;	int *maxtextlen, maxtextlenv;	int insert;	int ofs;	ht_inputfield *attachedto;	List *history;		void freebuf();		int insertbyte(byte *pos, byte b);		void select_add(byte *start, byte *end);/* overwritten */	virtual	const char *defaultpalette();public:		void	init(Bounds *b, int maxtextlen, List *history = NULL);	virtual	void	done();/* overwritten */	virtual	int datasize();	virtual	void getdata(ObjectStream &s);	virtual	void setdata(ObjectStream &s);/* new */		void attach(ht_inputfield *inputfield);		void query(byte ***curchar, byte ***text, byte ***selstart, byte ***selend, int **textlen, int **maxtextlen);		void isetcursor(uint pos);};/* *	CLASS ht_strinputfield */#define ht_strinputfield_data ht_inputfield_dataclass ht_strinputfield: public ht_inputfield {protected:	bool is_virgin;		/* untouched except for cursor keys */	bool selectmode;	/* new */		void correct_viewpoint();		void history_dialog();		bool inputbyte(byte a);		bool setbyte(byte a);public:		void	init(Bounds *b, int maxtextlen, List *history = NULL);	virtual	void	done();/* overwritten */	virtual 	void draw();	virtual	void handlemsg(htmsg *msg);	virtual	void receivefocus();};/* *	CLASS ht_hexinputfield */#define ht_hexinputfield_data ht_inputfield_dataclass ht_hexinputfield: public ht_inputfield {protected:	int nib;		void correct_viewpoint();public:		void	init(Bounds *b, int maxtextlen);	virtual	void	done();/* overwritten */	virtual 	void draw();	virtual	void handlemsg(htmsg *msg);	virtual	void receivefocus();/* new */			void setnibble(byte a);};/* *	CLASS ht_button */class ht_button: public ht_dialog_widget {protected:	int value;	int pressed;	char *text;	char *magicchar;	ht_key shortcut1;	ht_key shortcut2;/* overwritten */	virtual	const char *defaultpalette();public:		void	init(Bounds *b, const char *text, int value);	virtual	void	done();	/* overwritten */	virtual void 	draw();	virtual	void 	handlemsg(htmsg *msg);	virtual void	getminbounds(int *width, int *height);	/* new */	virtual	void 	push();};/* *	CLASS ht_listbox_title */class ht_listbox;class ht_listbox_title: public ht_dialog_widget {public:	ht_listbox *listbox;protected:	char **texts;	int cols;/* overwritten */	virtual	const char *defaultpalette();public:		void init(Bounds *b);               	virtual	void done();/* overwritten */	virtual	void draw();/* new */	virtual	vcp getTextColor();		void setText(int cols, ...);		void setTextv(int cols, va_list arguments);		void update();};/* *	CLASS ht_listbox */struct ht_listbox_data_internal {	void *top_ptr;	void *cursor_ptr;};struct ht_listbox_data {	DDECL_PTR(ht_listbox_data_internal, data);};#define LISTBOX_NORMAL 0#define LISTBOX_QUICKFIND 1class ht_listbox: public ht_dialog_widget {protected:public:	int	cursor, pos, cached_count;	int	visible_height;	void	*e_top, *e_cursor;	int	x;	char	quickfinder[100];	char	*qpos;	uint	listboxcaps;	int	cols;	int	*widths;		ht_scrollbar *scrollbar;	bool	mScrollbarEnabled;	ht_listbox_title *title;public:		void		init(Bounds *b, uint Listboxcaps=LISTBOX_QUICKFIND);	virtual	void		done();		void		attachTitle(ht_listbox_title *title);		void		adjustPosHack();		void		adjustScrollbar();	virtual	int		calcCount() = 0;		void		clearQuickfind();	virtual	int		cursorAdjust();		int		cursorUp(int n);		int		cursorDown(int n);	virtual	int		datasize();	virtual	const char *	defaultpalette();	virtual	void		draw();	virtual	int		estimateEntryPos(void *entry);	virtual	void		getdata(ObjectStream &s);	virtual	void *		getFirst() = 0;	virtual	void *		getLast() = 0;	virtual	void *		getNext(void *entry) = 0;	virtual	void *		getPrev(void *entry) = 0;	virtual	const char *	getStr(int col, void *entry) = 0;		void		gotoItemByEntry(void *entry, bool clear_quickfind = true);	virtual	void		gotoItemByPosition(uint pos);	virtual	void		handlemsg(htmsg *msg);	virtual	int		numColumns();	virtual	void *		quickfind(const char *s) = 0;	virtual	char *		quickfindCompletition(const char *s);	virtual	void		redraw();	virtual	void		resize(int rw, int rh);	virtual	bool		selectEntry(void *entry);	virtual	void		setdata(ObjectStream &s);	virtual	void		stateChanged();	virtual	void		update();		void		updateCursor();	virtual	Object *	vstate_create();		void		vstate_save();protected:		void	rearrangeColumns();};/* *	CLASS ht_text_listbox */#define ht_text_listbox_data ht_listbox_datastruct ht_text_listbox_item {	ht_text_listbox_item	*next, *prev;	int id;	void			*extra_data;	char			*data[0];};struct ht_text_listbox_sort_order {	int		col;	int		(*compare_func)(const char *key_a, const char *key_b);};class ht_text_listbox: public ht_listbox {protected:	int			cols, keycol, count;	ht_text_listbox_item	*first, *last;	int			Cursor_adjust;public:		void	init(Bounds *b, int Cols=1, int Keycol=0, uint Listboxcaps=LISTBOX_QUICKFIND);	virtual	void	done();	virtual	int	calcCount();	virtual	int	compare_strn(const char *s1, const char *s2, int l);	virtual	int	compare_ccomm(const char *s1, const char *s2);	virtual	int	cursorAdjust();		void *	getEntryByID(uint id);	virtual	void *	getFirst();	virtual	void *	getLast();		uint	getID(void *entry);		void *	getExtra(void *entry);	virtual	void *	getNext(void *entry);	virtual	void *	getPrev(void *entry);	virtual	const char *getStr(int col, void *entry);		void	insert_str(int id, const char *str, ...);		void	insert_str(int id, const char **strs);		void	insert_str_extra(int id, void *extra_data, const char *str, ...);		void	insert_str_extra(int id, void *extra_data, const char **strs);	virtual	int	numColumns();	virtual	void *	quickfind(const char *s);	virtual	char *	quickfindCompletition(const char *s);		void	sort(int count, ht_text_listbox_sort_order *so);	virtual	void	update();protected:	virtual	void	clearAll();	virtual	void	freeExtraData(void *extra_data);};#define ht_itext_listbox_data ht_text_listbox_dataclass ht_itext_listbox: public ht_text_listbox {public:		void	init(Bounds *b, int Cols=1, int Keycol=0);	virtual	int	compare_strn(const char *s1, const char *s2, int l);	virtual	int	compare_ccomm(const char *s1, const char *s2);};/* *	CLASS ht_statictext */enum statictext_align {	align_left,	align_center,	align_right,	align_custom};#define ALIGN_CHAR_ESCAPE	'\e'#define ALIGN_CHAR_LEFT		'l'#define ALIGN_CHAR_CENTER	'c'#define ALIGN_CHAR_RIGHT	'r' struct ht_statictext_linedesc {	int ofs;	int len;	char *text;};class ht_statictext: public ht_text {protected:	char *text;	statictext_align align;	bool breaklines;	bool transparent;/* overwritten */	virtual	const char *defaultpalette();public:		void	init(Bounds *b, const char *text, statictext_align align, bool breaklines=true, bool transparent=false);	virtual	void	done();/* overwritten */	virtual	void draw();	virtual	void settext(const char *text);/* new */	virtual	int gettext(char *text, int maxlen);	virtual	vcp gettextcolor();};/* *	CLASS ht_listpopup_dialog */struct ht_listpopup_dialog_data {	DDECL_UINT(cursor_pos);	DDECL_PTR(char, cursor_string);}; class ht_listpopup_dialog: public ht_dialog {protected:	ht_listbox *listbox;	virtual	void init_text_listbox(Bounds *b);public:		void init(Bounds *b, const char *desc);/* overwritten */	virtual	const char *defaultpalette();	virtual	int  datasize();	virtual	void getdata(ObjectStream &s);		void insertstring(const char *string);	virtual	void setdata(ObjectStream &s);/* new */		void select_next();		void select_prev();};/* *	CLASS ht_listpopup */ #define ht_listpopup_data ht_listpopup_dialog_dataclass ht_listpopup: public ht_statictext {protected:	ht_listpopup_dialog *listpopup;/* new */			int	run_listpopup();public:		void	init(Bounds *b);	virtual	void	done();/* overwritten */	virtual	int  datasize();	virtual void draw();	virtual	vcp  gettextcolor();	virtual	void getdata(ObjectStream &s);	virtual	int gettext(char *text, int maxlen);	virtual	void handlemsg(htmsg *msg);	virtual	void setdata(ObjectStream &s);/* new */		void	insertstring(const char *string);};/* *	CLASS ht_history_listbox */class ht_history_listbox: public ht_listbox {	List	*history;public:		void init(Bounds *b, List *hist);	virtual int  calcCount();	virtual void *getFirst();	virtual void *getLast();	virtual void *getNext(void *entry);	virtual void *getPrev(void *entry);	virtual const char *getStr(int col, void *entry);	virtual	void handlemsg(htmsg *msg);	virtual	void *quickfind(const char *s);	virtual	char *quickfindCompletition(const char *s);};/* *	CLASS ht_history_popup_dialog */class ht_history_popup_dialog: public ht_listpopup_dialog {protected:	List	*history;	virtual	void init_text_listbox(Bounds *b);public:		void init(Bounds *b, List *hist);	virtual	void getdata(ObjectStream &s);	virtual	void setdata(ObjectStream &s);};/* *	CLASS ht_label */class ht_label: public ht_dialog_widget {protected:	ht_view *connected;	char *text;	char *magicchar;	ht_key shortcut;/* overwritten */	virtual	const char *defaultpalette();public:		void	init(Bounds *b, const char *text, ht_view *connected);	virtual	void	done();/* overwritten */	virtual	void draw();	virtual	void handlemsg(htmsg *msg);};/* *	CLASS ht_progress_indicator */class ht_progress_indicator: public ht_window {protected:/* overwritten */	virtual	const char *defaultpalette();public:	ht_statictext *text;			void init(Bounds *b, const char *hint);/* new */		void settext(const char *text);};/* *	CLASS ht_color_block */struct ht_color_block_data {	DDECL_UINT(color);};#define cf_light	1#define cf_transparent	2class ht_color_block: public ht_dialog_widget {protected:	int color;	int colors;	int flags;/* overwritten */	virtual	const char *defaultpalette();public:		void	init(Bounds *b, int selected, int flags);	virtual	void	done();/* overwritten */	virtual	int datasize();	virtual	void draw();	virtual	void getdata(ObjectStream &s);	virtual	void setdata(ObjectStream &s);	virtual	void handlemsg(htmsg *msg);};/* *	CLASS ht_listbox_ptr */class ht_listbox_ptr: public Object {public:	ht_listbox *listbox;	ht_listbox_ptr(ht_listbox *aListbox)		: listbox(aListbox)	{	}};void center_bounds(Bounds *b);#endif /* !__HTDIALOG_H__ */

⌨️ 快捷键说明

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