00001 #ifndef PIPE_H
00002 #define PIPE_H
00003
00004 #include <fcntl.h>
00005 #include "guicast.h"
00006 #include "asset.h"
00007
00008 extern "C" {
00009 extern int sigpipe_received;
00010 }
00011
00012 class Pipe {
00013 public:
00014 Pipe::Pipe(char *command, char *sub_str = 0, char sub_char = '%');
00015 Pipe::~Pipe() ;
00016 int Pipe::open_read() ;
00017 int Pipe::open_write() ;
00018 void Pipe::close() ;
00019
00020 int fd;
00021 private:
00022 int Pipe::substitute() ;
00023 int Pipe::open(char *mode) ;
00024
00025 char sub_char;
00026 char *sub_str;
00027 char *command;
00028 char complete[BCTEXTLEN];
00029 FILE *file;
00030 };
00031
00032
00033 class PipeCheckBox : public BC_CheckBox
00034 {
00035 public:
00036 PipeCheckBox(int x, int y, int value, BC_TextBox *textbox);
00037 int handle_event();
00038
00039 private:
00040 BC_TextBox *textbox;
00041 };
00042
00043
00044 class PipeConfig {
00045 public:
00046 PipeConfig(BC_WindowBase *window, Defaults *defaults, Asset *asset);
00047
00048
00049 int create_objects(int x, int y, int textbox_width, int format);
00050
00051
00052 PipeCheckBox *checkbox;
00053 BC_TextBox *textbox;
00054 BC_RecentList *recent;
00055
00056 private:
00057 BC_WindowBase *window;
00058 Defaults *defaults;
00059 Asset *asset;
00060 };
00061
00062 class PipeStatus : public BC_Title
00063 {
00064 public:
00065 PipeStatus(int x, int y, char *default_string);
00066 int set_status(Asset *asset);
00067 private:
00068 char *default_string;
00069 char status[BCTEXTLEN];
00070 };
00071
00072
00073 class PipePreset : public BC_PopupMenu
00074 {
00075 public:
00076 PipePreset(int x, int y, char *title, PipeConfig *config);
00077 int handle_event();
00078
00079 private:
00080 PipeConfig *config;
00081 char *title;
00082 };
00083
00084
00085 #endif