00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00023 #include "eripc.h"
00024 #include "eripcclient.h"
00025 #include "eripcpagebar.h"
00026 #include "eripcparser.h"
00027 #include "eripcviewer.h"
00028
00029 static char* pbFunctionNames[ccPbUndefined] = {
00030 "pbSetPageCount",
00031 "pbSetCurrentPage",
00032 "pbSetCurrentPageOffset",
00033 "pbSetZoomMode",
00034 "pbSetDrawAreaOrientation",
00035 "pbSetDrawAreaHOrigin",
00036 "pbSetDrawAreaVOrigin",
00037 "pbSetDrawAreaHSize",
00038 "pbSetDrawAreaVSize",
00039 "pbSetBarFontType",
00040 "pbSetBarFontHeight",
00041 "pbAddBookmark",
00042 "pbRemoveBookmark",
00043 "pbSetBookmarkMax",
00044 "pbAddNote",
00045 "pbRemoveNote",
00046 "pbSetNotesMax",
00047 "pbReset",
00048 "pbShow",
00049 "pbRedraw",
00050 "ccPbSynchronise"
00051 };
00052
00053 static int pbCallFunction(erClientChannel_t channel, int uaID, int cc, int param) {
00054 erIpcCmd_t cmd;
00055
00056 if (cc>=ccPbUndefined) {
00057 printf("Invalid Pagebar function! (function=%d)\n", cc);
00058 return -1;
00059 }
00060
00061 cmd.cc = cc;
00062 strcpy(cmd.name, pbFunctionNames[cc]);
00063 cmd.nArg = 2;
00064 sprintf(cmd.arg[0], "%d", uaID);
00065 sprintf(cmd.arg[1], "%d", param);
00066
00067 return erIpcSndCommand(channel, &cmd);
00068 }
00069
00070 int pbSetPageCount(erClientChannel_t channel, int uaID, int pagecount) {
00071 return pbCallFunction(channel, uaID, ccPbSetPageCount, pagecount);
00072 }
00073
00074 int pbSetCurrentPage(erClientChannel_t channel, int uaID, int page) {
00075 return pbCallFunction(channel, uaID, ccPbSetCurrentPage, page);
00076 }
00077
00078 int pbSetCurrentPageOffset(erClientChannel_t channel, int uaID, int pageoffset) {
00079 return pbCallFunction(channel, uaID, ccPbSetCurrentPageOffset, pageoffset);
00080 }
00081
00082 int pbSetZoomMode(erClientChannel_t channel, int uaID, int zoomMode) {
00083 return pbCallFunction(channel, uaID, ccPbSetZoomMode, zoomMode);
00084 }
00085
00086 int pbSetDrawAreaOrientation(erClientChannel_t channel, int uaID, int orientation) {
00087 return pbCallFunction(channel, uaID, ccPbSetDrawAreaOrientation, orientation);
00088 }
00089
00090 int pbSetDrawAreaHOrigin(erClientChannel_t channel, int uaID, int origin) {
00091 return pbCallFunction(channel, uaID, ccPbSetDrawAreaHOrigin, origin);
00092 }
00093
00094 int pbSetDrawAreaVOrigin(erClientChannel_t channel, int uaID, int origin) {
00095 return pbCallFunction(channel, uaID, ccPbSetDrawAreaVOrigin, origin);
00096 }
00097
00098 int pbSetDrawAreaHSize(erClientChannel_t channel, int uaID, int size) {
00099 return pbCallFunction(channel, uaID, ccPbSetDrawAreaHSize, size);
00100 }
00101
00102 int pbSetDrawAreaVSize(erClientChannel_t channel, int uaID, int size) {
00103 return pbCallFunction(channel, uaID, ccPbSetDrawAreaVSize, size);
00104 }
00105
00106 int pbSetBarFontType(erClientChannel_t channel, int uaID, int font) {
00107 return pbCallFunction(channel, uaID, ccPbSetBarFontType, font);
00108 }
00109
00110 int pbSetBarFontHeight(erClientChannel_t channel, int uaID, int height) {
00111 return pbCallFunction(channel, uaID, ccPbSetBarFontHeight, height);
00112 }
00113
00114 int pbAddBookmark(erClientChannel_t channel, int uaID, int value) {
00115 return pbCallFunction(channel, uaID, ccPbAddBookmark, value);
00116 }
00117
00118 int pbRemoveBookmark(erClientChannel_t channel, int uaID, int value) {
00119 return pbCallFunction(channel, uaID, ccPbRemoveBookmark, value);
00120 }
00121
00122 int pbSetBookmarkMax(erClientChannel_t channel, int uaID, int max) {
00123 return pbCallFunction(channel, uaID, ccPbSetBookmarkMax, max);
00124 }
00125
00126 int pbAddNote(erClientChannel_t channel, int uaID, int value) {
00127 return pbCallFunction(channel, uaID, ccPbAddNote, value);
00128 }
00129
00130 int pbRemoveNotes(erClientChannel_t channel, int uaID, int value) {
00131 return pbCallFunction(channel, uaID, ccPbRemoveNote, value);
00132 }
00133
00134 int pbSetNotesMax(erClientChannel_t channel, int uaID, int max) {
00135 return pbCallFunction(channel, uaID, ccPbSetNotesMax, max);
00136 }
00137
00138 int pbReset(erClientChannel_t channel, int uaID) {
00139 erIpcCmd_t cmd;
00140
00141 cmd.cc = ccPbReset;
00142 strcpy(cmd.name, pbFunctionNames[ccPbReset]);
00143 cmd.nArg = 1;
00144 sprintf(cmd.arg[0], "%d", uaID);
00145
00146 return erIpcSndCommand(channel, &cmd);
00147 }
00148
00149 int pbShow(erClientChannel_t channel, int uaID, int show) {
00150 return pbCallFunction(channel, uaID, ccPbShow, show);
00151 }
00152
00153 int pbRedraw(erClientChannel_t channel, int uaID) {
00154 erIpcCmd_t cmd;
00155
00156 cmd.cc = ccPbRedraw;
00157 strcpy(cmd.name, pbFunctionNames[ccPbRedraw]);
00158 cmd.nArg = 1;
00159 sprintf(cmd.arg[0], "%d", uaID);
00160
00161 return erIpcSndCommand(channel, &cmd);
00162 }
00163
00164
00165 int pbSynchronise(erClientChannel_t channel, int uaID)
00166 {
00167
00168 return pbCallFunction(channel, uaID, ccPbSynchronise, 0);
00169 }
00170
00171
00172 int pbReportSynchronise(erClientChannel_t channel, int uaID)
00173 {
00174
00175 return pbCallFunction(channel, uaID, ccVwrPagebarSync, 0);
00176 }
00177
00178
00179
00180
00181 int pbParseCommand(char *szCommand, erIpcCmd_t * pCmd) {
00182 int i;
00183 int paramsOffset;
00184 char szToken[TB_MAXCHARONLINE];
00185 int nReqArgs = 0;
00186
00187 pCmd->cc = (int) ccPbUndefined;
00188 for (i = 0; i < TB_N_ARG; i++)
00189 {
00190 strcpy(pCmd->arg[i], "");
00191 }
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211 for (paramsOffset=0; szCommand[paramsOffset]!='\0' && szCommand[paramsOffset]!=','; paramsOffset++)
00212 {
00213 ;
00214 }
00215 memcpy(szToken, szCommand, paramsOffset);
00216 szToken[paramsOffset]='\0';
00217 if (szCommand[paramsOffset]==',')
00218 {
00219 paramsOffset++;
00220 }
00221
00222
00223 for (i=0; i<ccPbUndefined; i++)
00224 {
00225 char s[16];
00226 sprintf(s, "%d", i);
00227 if (!strcmp(szToken, pbFunctionNames[i]) || !strcmp(szToken, s))
00228 {
00229 strcpy(pCmd->name, szToken);
00230 pCmd->cc = (int) i;
00231 nReqArgs = 2;
00232 pCmd->nArg = 2;
00233 break;
00234 }
00235 }
00236
00237 if (i==ccPbReset || i==ccPbRedraw)
00238 {
00239 nReqArgs = 1;
00240 }
00241 else if (i==ccPbUndefined)
00242 {
00243 strcpy(pCmd->name, "Undefined");
00244 pCmd->cc = (int) ccPbUndefined;
00245 fprintf(stderr, "%s: Command %s \n", __FUNCTION__, szToken);
00246 fprintf(stderr, "Error parsing (%s). Command undefined\n", szCommand);
00247 pCmd->nArg = -1;
00248 return -1;
00249 }
00250
00251 if (nReqArgs > 0)
00252 {
00253 erIpcGetArgs(szCommand+paramsOffset, pCmd, nReqArgs);
00254 }
00255 return 0;
00256 }
00257