00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef OBJBROWSE_H
00020 #define OBJBROWSE_H
00021
00022 #include <gtk/gtk.h>
00023
00024
00025
00026 class Shape_group;
00027 class Shape_file_info;
00028
00029 class Object_browser {
00030 private:
00031 GtkWidget *widget;
00032 protected:
00033 int selected;
00034
00035
00036 int index0;
00037
00038 GtkWidget *vscroll;
00039 GtkWidget *hscroll;
00040 Shape_group *group;
00041 GtkWidget *popup;
00042 Shape_file_info *file_info;
00043 GtkWidget *find_text;
00044 GtkWidget *loc_down, *loc_up;
00045
00046 GtkWidget *move_down, *move_up;
00047 int config_width, config_height;
00048
00049 void set_widget(GtkWidget *w);
00050 static bool search_name(const char *nm, const char *srch);
00051 public:
00052 Object_browser(Shape_group *grp = 0, Shape_file_info *fi = 0);
00053 virtual ~Object_browser();
00054
00055 GtkWidget *get_widget();
00056 Shape_group *get_group()
00057 { return group; }
00058 int get_selected()
00059 { return selected < 0 ? -1 : index0 + selected; }
00060 GtkWidget *get_find_text()
00061 { return find_text; }
00062 virtual void load()
00063 { }
00064 virtual void render() = 0;
00065
00066 virtual void show(int x, int y, int w, int h) = 0;
00067 virtual void show() = 0;
00068 virtual int get_selected_id()
00069 { return -1; }
00070 virtual bool server_response(int id, unsigned char *data, int datalen);
00071 virtual void end_terrain_editing();
00072 virtual void set_background_color(guint32 c);
00073
00074 static void on_browser_group_add(
00075 GtkMenuItem *item, gpointer udata);
00076
00077 void add_group_submenu(GtkWidget *popup);
00078 static void on_browser_file_save(GtkMenuItem *item, gpointer udata);
00079 static void on_browser_file_revert(GtkMenuItem *item, gpointer udata);
00080 virtual GtkWidget *create_popup();
00081
00082 enum
00083 {
00084 find_controls = 1,
00085 locate_controls = 2,
00086 move_controls = 4
00087 };
00088 GtkWidget *create_controls(int controls);
00089
00090 virtual void search(const char *srch, int dir)
00091 { }
00092 virtual void locate(bool upwards)
00093 { }
00094 virtual void move(bool upwards)
00095 { }
00096 };
00097
00098
00099
00100 typedef void (*File_sel_okay_fun)(const char *, gpointer);
00101 GtkFileSelection *Create_file_selection
00102 (
00103 const char *title,
00104 File_sel_okay_fun ok_handler,
00105 gpointer user_data
00106 );
00107
00108 #endif