1 #include <ctype.h>
2 
3 #include "config.h"
4 
5 #include "ADM_default.h"
6 #include "DIA_coreToolkit.h"
7 #include "DIA_coreUI_internal.h"
8 
9 #define BOX_SIZE 80
10 static int beQuiet=0;
boxStart(void)11 static void boxStart(void)
12 {
13     for(int i=0;i<BOX_SIZE;i++) fprintf(stderr,"*");
14     fprintf(stderr,"\n");
15 }
boxEnd(void)16 static void boxEnd(void)
17 {
18     for(int i=0;i<BOX_SIZE;i++) fprintf(stderr,"*");
19     fprintf(stderr,"\n");
20 }
boxAdd(const char * str)21 static void boxAdd(const char *str)
22 {
23     int l=strlen(str);
24     fprintf(stderr, "* %s",str);
25     if(l+4<BOX_SIZE)
26     {
27         l=BOX_SIZE-l-4;
28         for(int i=0;i<BOX_SIZE;i++) fprintf(stderr,"");
29     }
30     fprintf(stderr," *\n");
31 }
32 
33 
34 namespace ADM_CliCoreUIToolkit
35 {
36 extern DIA_workingBase    *createWorking(const char *title);
37 extern DIA_encodingBase   *createEncoding(uint64_t duration);
38 extern DIA_audioTrackBase *createAudioTrack( PoolOfAudioTracks *pool, ActiveAudioTracks *active );
39 
GUI_Info_HIG(const ADM_LOG_LEVEL level,const char * primary,const char * secondary_format)40 void GUI_Info_HIG(const ADM_LOG_LEVEL level,const char *primary, const char *secondary_format)
41 {
42     boxStart();
43     boxAdd("Info");
44     boxAdd(primary);
45 
46     if(!secondary_format)
47     {
48         boxEnd();
49         return;
50     }
51 
52     boxAdd(secondary_format);
53     boxEnd();
54 }
55 
GUI_Error_HIG(const char * primary,const char * secondary_format)56 void GUI_Error_HIG(const char *primary, const char *secondary_format)
57 {
58     boxStart();
59     boxAdd("Error");
60     boxAdd(primary);
61     if(!secondary_format)
62     {
63         boxEnd();
64         return;
65     }else
66     {
67         boxAdd(secondary_format);
68         boxEnd();
69     }
70 }
71 
GUI_Confirmation_HIG(const char * button_confirm,const char * primary,const char * secondary_format)72 int GUI_Confirmation_HIG(const char *button_confirm, const char *primary, const char *secondary_format)
73 {
74     boxStart();
75     boxAdd("Question");
76 
77     boxAdd(button_confirm);
78     if(!secondary_format)
79     {
80         boxEnd();
81     }else
82     {
83         boxAdd(secondary_format);
84         boxEnd();
85     }
86     if (beQuiet)
87     {
88         boxAdd("--> Automatically confirmed\n");
89         return 1;
90     }else
91     {
92         int x;
93         while(1)
94         {
95             printf("Are you sure (Y/y or N/n ):\n");
96             x=tolower(getchar());
97             if(x=='y') return 1;
98             if(x=='n') return 0;
99         }
100     }
101     return 0;
102 }
103 
GUI_YesNo(const char * primary,const char * secondary_format)104 int GUI_YesNo(const char *primary, const char *secondary_format)
105 {
106     boxStart();
107     boxAdd("Question");
108     boxAdd(primary);
109 
110     if(!secondary_format)
111     {
112         boxEnd();
113     }else
114     {
115         boxAdd(secondary_format);
116         boxEnd();
117     }
118     if (beQuiet)
119     {
120         boxAdd("--> Automatically affirmed\n");
121         return 1;
122     }else
123     {
124         int x;
125         while(1)
126         {
127             printf("Yes or No (Y/y or N/n) :\n");
128             x=tolower(getchar());
129             if(x=='y') return 1;
130             if(x=='n') return 0;
131         }
132     }
133     return 0;
134 }
135 
GUI_Question(const char * alertstring,bool insuppressible)136 int GUI_Question(const char *alertstring, bool insuppressible)
137 {
138     if(beQuiet && !insuppressible)
139     {
140         printf("%s => Yes\n",alertstring);
141         return 1;
142     }
143 
144     boxStart();
145     boxAdd("Question");
146     boxAdd(alertstring);
147     boxEnd();
148 
149     while(1)
150     {
151         printf("Yes or No (Y/y or N/n) :\n");
152         int x=tolower(getchar());
153         if(x=='y') return 1;
154         if(x=='n') return 0;
155     }
156     return 0;
157 }
158 
GUI_Alternate(const char * title,const char * choice1,const char * choice2)159 int GUI_Alternate(const char *title,const char *choice1,const char *choice2)
160 {
161     if(beQuiet)
162     {
163         printf("%s => %s\n",title,choice1);
164         return 0;
165     }
166 
167     boxStart();
168     boxAdd("Choice");
169     boxAdd(title);
170     boxEnd();
171 
172     while(1)
173     {
174         printf("0->%s 1->%s :\n",choice1,choice2);
175         int x=tolower(getchar());
176         if(x=='0') return 0;
177         if(x=='1') return 1;
178     }
179     return 0;
180 }
181 
GUI_getDoubleValue(double * valye,float min,float max,const char * title)182 uint8_t  GUI_getDoubleValue(double *valye, float min, float max, const char *title)
183 {
184   boxStart();
185   boxAdd("DOUBLEVALUE stub");
186   boxAdd(title);
187   boxEnd();
188 
189   return 0;
190 }
191 
GUI_isQuiet(void)192 uint8_t GUI_isQuiet(void)
193 {
194     return beQuiet;
195 }
196 
GUI_Verbose(void)197 void GUI_Verbose(void)
198 {
199     beQuiet=0;
200 }
201 
GUI_Quiet(void)202 void GUI_Quiet(void)
203 {
204     beQuiet=1;
205 }
206 
UI_readJog(void)207 int32_t UI_readJog(void)
208 {
209     return 0;
210 }
211 
getVersion(uint32_t * maj,uint32_t * minor)212 void getVersion(uint32_t *maj,uint32_t *minor)
213 {
214     *maj=ADM_CORE_TOOLKIT_MAJOR;
215     *minor=ADM_CORE_TOOLKIT_MINOR;
216 }
217 
UI_purge(void)218 void UI_purge( void )
219 {
220 }
221 
222 class cliProcessing: public DIA_processingBase
223 {
224 public:
cliProcessing(const char * title,uint64_t _totalToProcess)225     cliProcessing(const char *title, uint64_t _totalToProcess ) : DIA_processingBase(title,_totalToProcess)
226     {
227 
228     }
~cliProcessing()229     ~cliProcessing()
230     {
231 
232     }
233 };
234 
createProcessing(const char * title,uint64_t totalToProcess)235 DIA_processingBase *createProcessing(const char *title,uint64_t totalToProcess)
236 {
237     return new cliProcessing(title,totalToProcess);
238 }
239 
240 }; // namespace
241 
242 static CoreToolkitDescriptor CliCoreToolkitDescriptor=
243 {
244     &ADM_CliCoreUIToolkit::getVersion,
245     &ADM_CliCoreUIToolkit::GUI_Info_HIG,
246     &ADM_CliCoreUIToolkit::GUI_Error_HIG,
247     &ADM_CliCoreUIToolkit::GUI_Confirmation_HIG,
248 
249     &ADM_CliCoreUIToolkit::GUI_YesNo,
250     &ADM_CliCoreUIToolkit::GUI_Question,
251     &ADM_CliCoreUIToolkit::GUI_Alternate,
252     &ADM_CliCoreUIToolkit::GUI_Verbose,
253 
254     &ADM_CliCoreUIToolkit::GUI_Quiet,
255     &ADM_CliCoreUIToolkit::GUI_isQuiet,
256     &ADM_CliCoreUIToolkit::createWorking,
257     &ADM_CliCoreUIToolkit::createEncoding,
258 
259     &ADM_CliCoreUIToolkit::createAudioTrack,
260     &ADM_CliCoreUIToolkit::UI_purge,
261     &ADM_CliCoreUIToolkit::createProcessing
262 };
263 
InitCoreToolkit(void)264 void InitCoreToolkit(void)
265 {
266     DIA_toolkitInit(&CliCoreToolkitDescriptor);
267 }
268 //EOF
269