CHDK_DE Vorschauversion  Trunk Rev. 5707
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
gui_user_menu.c-Dateireferenz
#include "camera_info.h"
#include "conf.h"
#include "keyboard.h"
#include "font.h"
#include "lang.h"
#include "gui.h"
#include "gui_lang.h"
#include "gui_draw.h"
#include "gui_menu.h"
#include "gui_user_menu.h"
#include "gui_mbox.h"
#include "modules.h"
#include "module_load.h"
+ Include-Abhängigkeitsdiagramm für gui_user_menu.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define USER_MENU_IS_SCRIPT   -1
 
#define USER_MENU_IS_MODULE   -2
 

Funktionen

static int user_menu_saved_size ()
 
static char * user_menu_store_data (char *p)
 
static int user_menu_load_data (char *p)
 
void init_user_menu (int num_items)
 
static void rinit ()
 
static void load_user_menu_script_callback (unsigned int btn)
 
void gui_load_user_menu_script (const char *fn)
 
void user_menu_save ()
 
static void set_user_menu_extern (int menu, int var, char sym, short type, int *func)
 
void user_menu_restore ()
 

Variablen

static CMenuItem user_submenu_items [USER_MENU_ITEMS+2]
 
CMenu user_submenu = {0x2e,LANG_MENU_USER_MENU, user_submenu_items }
 
CMenu script_submenu
 
static char sfname [CONF_STR_LEN]
 

Makro-Dokumentation

#define USER_MENU_IS_MODULE   -2

Definiert in Zeile 16 der Datei gui_user_menu.c.

#define USER_MENU_IS_SCRIPT   -1

Definiert in Zeile 15 der Datei gui_user_menu.c.

Dokumentation der Funktionen

void gui_load_user_menu_script ( const char *  fn)

Definiert in Zeile 144 der Datei gui_user_menu.c.

145 {
146  if (fn)
147  {
148  strcpy(sfname, fn);
149 
151  {
152  script_load(sfname); // load script from menu choice
153  gui_set_mode(&altGuiHandler); // exit the menu system
154  script_start_gui(0); // and run the script
155  }
156  else
157  {
159  }
160  }
161 }
void init_user_menu ( int  num_items)
static void load_user_menu_script_callback ( unsigned int  btn)
static

Definiert in Zeile 135 der Datei gui_user_menu.c.

136 {
137  if (btn==MBOX_BTN_YES)
138  {
141  }
142 }
static void rinit ( )
static

Definiert in Zeile 106 der Datei gui_user_menu.c.

107 {
108  // Erase screen if switching from user menu to main menu
109  // in case the user menu is larger than the main menu
110  // otherwise it leaves remnants of the user menu above and below
111  // the main menu.
114 }
static void set_user_menu_extern ( int  menu,
int  var,
char  sym,
short  type,
int *  func 
)
static

Definiert in Zeile 204 der Datei gui_user_menu.c.

205 {
206  // restore the script/module entry
207  user_submenu_items[menu].symbol = sym;
208  user_submenu_items[menu].opt_len = 0;
209  user_submenu_items[menu].type = type;
211  user_submenu_items[menu].value = func;
213 }
static int user_menu_load_data ( char *  p)
static

Definiert in Zeile 48 der Datei gui_user_menu.c.

49 {
50  int i, n;
51 
52  memcpy(&n, p, sizeof(int));
54  init_user_menu(n);
55  p += sizeof(int);
56 
57  for (i=0; i<n; i++)
58  {
59  memcpy(&conf.user_menu_vars.items[i].var, p, sizeof(int));
60  p += sizeof(int);
61  if (*p)
62  {
66  }
67  p += CONF_STR_LEN;
68  if (*p)
69  {
73  }
74  p += CONF_STR_LEN;
75  }
76 
77  return user_menu_saved_size();
78 }
void user_menu_restore ( )

Definiert in Zeile 215 der Datei gui_user_menu.c.

216 {
217  int x, y;
218  CMenuItem* item=0;
219  /*
220  * First entry in user_submenu_items is reserved for the "Main Menu"
221  * conf.user_menu_vars only tracks/saves the real user entries.
222  */
223 
224  for (x=0, y=1; x<USER_MENU_ITEMS; x++, y++)
225  {
226  if (conf.user_menu_vars.items[x].var == USER_MENU_IS_SCRIPT) // special flag- there is no hash for script entries
227  {
229  }
230  else if (conf.user_menu_vars.items[x].var == USER_MENU_IS_MODULE) // special flag- there is no hash for module entries
231  {
233  }
234  else
235  {
236  if (conf.user_menu_vars.items[x].var > 0 ) // look up the menu text
238  else item = NULL ;
239 
240  if ( item ) // add back in if found
241  {
242  user_submenu_items[y] = *item;
243  }
244  else // otherwise clear the menu entry
245  {
246  user_submenu_items[y].text = 0;
247  break ; // and exit - all done !
248  }
249  }
250  }
251 }
void user_menu_save ( )

Definiert in Zeile 164 der Datei gui_user_menu.c.

164  {
165  int x;
166  for (x=0; x<USER_MENU_ITEMS; x++) {
167  /*
168  * First entry in user_submenu_items is reserved for the "Main Menu"
169  * conf.user_menu_vars only tracks/saves the real user entries.
170  */
171 
172  if ( user_submenu_items[x+1].text )
173  {
174  if ( user_submenu_items[x+1].value == (int *)gui_load_user_menu_script )
175  {
176  conf.user_menu_vars.items[x].var = USER_MENU_IS_SCRIPT; // flag script entries specially
177  }
178  else if ((user_submenu_items[x+1].value == (int *)module_run) && ((user_submenu_items[x+1].type & MENUITEM_USER_MODULE) == MENUITEM_USER_MODULE))
179  {
180  conf.user_menu_vars.items[x].var = USER_MENU_IS_MODULE; // flag module entries specially
181  }
182  else
183  {
184  conf.user_menu_vars.items[x].var = lang_strhash31(user_submenu_items[x+1].text); // otherwise save a hash
185  }
186  }
187  else
188  {
190  if (conf.user_menu_vars.items[x].script_file != 0)
191  {
194  }
196  {
199  }
200  }
201  }
202 }
static int user_menu_saved_size ( )
static

Definiert in Zeile 19 der Datei gui_user_menu.c.

20 {
21  // User menu saved as:
22  // - num_items (int)
23  // - (var + script_file + script_title)[num_items]
24  return conf.user_menu_vars.cfg.num_items * (sizeof(int) + CONF_STR_LEN * 2) + sizeof(int);
25 }
static char* user_menu_store_data ( char *  p)
static

Definiert in Zeile 27 der Datei gui_user_menu.c.

28 {
29  int i;
30 
31  memcpy(p, &conf.user_menu_vars.cfg.num_items, sizeof(int));
32  p += sizeof(int);
33 
34  for (i=0; i<conf.user_menu_vars.cfg.num_items; i++)
35  {
36  memcpy(p, &conf.user_menu_vars.items[i].var, sizeof(int));
37  p += sizeof(int);
38  memset(p, 0, CONF_STR_LEN * 2);
40  p += CONF_STR_LEN;
42  p += CONF_STR_LEN;
43  }
44 
45  return p;
46 }

Variablen-Dokumentation

CMenu script_submenu

Definiert in Zeile 846 der Datei gui_script.c.

char sfname[CONF_STR_LEN]
static

Definiert in Zeile 133 der Datei gui_user_menu.c.

CMenu user_submenu = {0x2e,LANG_MENU_USER_MENU, user_submenu_items }

Definiert in Zeile 128 der Datei gui_user_menu.c.

CMenuItem user_submenu_items[USER_MENU_ITEMS+2]
static
Initialisierung:
= {
}

Definiert in Zeile 124 der Datei gui_user_menu.c.