// // Copyright (c) 2001-2002 by Miroslav Jezbera, jezberam@phoenix.inf.upol.cz // // 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. // // 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. // // (See the included file COPYING / GPL-2.0) // #ifndef BBSMOUNT_HH #define BBSMOUNT_HH #ifdef HAVE_CONFIG_H # include "config.h" #endif /* HAVE_CONFIG_H */ #include #include using namespace std; #include "bbsmount_base.hh" #include "Basewindow.hh" #include "resource.hh" #include "main.hh" #include "tooltip.hh" // Constants: const int max_mount_device_point_size = 128, max_mtab_line_length = 256; // Types: enum debug_levels { dbg_no_debug_needed, // Default, only errors are printed dbg_warning, // Warnings are printed dbg_summary, // Only summary messages are printed dbg_all_work // Say what are you doing }; typedef struct command_data { char *command; MountPoint *mp; } command_data_type; // Functions: int run_command_in_foreground(const char *command, MountPoint &mp); int run_command_in_background(const char *command, MountPoint &mp); set what_is_mounted(const map &mount_points); bool update_mount_points(const map &mount_points); void create_notify_event(void); void check_mounts(void); RETSIGTYPE shutdown(int signal); // Another data types struct PIXMAP { Pixmap frame; Pixmap draw; Pixmap draw_pressed; }; struct GEOM { int height; int width; int x; int y; }; // Forward definitions class Resource; class BaseResource; class Basewindow; // Main class class ToolWindow :public Basewindow { public: ToolWindow(int argc,char **argv,struct CMDOPTIONS *); ~ToolWindow(void); const MyImage &GetImage(const int imageidx) const; const MountPoint &GetMountPoint(const int mntidx) const; const PIXMAP &GetPixmaps(void) const; size_t GetMountPointsCount(void) const; string getTooltip(const string &format, const MountPoint &mp, bool actual_statfs = false) const; void configure(); void FreeAll(void); void rereadResources(void); MountPoint &GetMountPoint(const int mntidx); // Display *GetDisplay(void); Resource *GetResources(void); Window GetRootWindow(void); void CreateWindow(const bool reconfigure); void CreateSubWindows(const bool reconfigure); void EventLoop(void); void Draw(void); void Draw(const int x, const int y, const unsigned int width, const unsigned int height); void SetCommand(const int cmdidx, const string command); void SetImage(const int imgidx, MyImage *image); void SetMountPoint(const int mntidx, const MountPoint &mntpoint); void Stop(void); void ShowTooltip(const Window w, const int x, const int y, const int screen_x, const int screen_y); void updateTooltip(void); void reconfigure(void); private: Window rootwin; Resource *resource; GEOM rootgeometry, drawarea; PIXMAP pixmap; bool stop; MountPoint *tooltip_for_mp; vector mount_points; vector commands; vector infotexts; vector images; vector mount_windows; }; // Global variables extern ToolWindow *AppWindow; extern bool finish_checking, reconfigure; extern int debug_level; #endif /* BBSMOUNT_HH */