CHDK_DE Vorschauversion  Trunk Rev. 5232
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
gui_user_menu.c-Dateireferenz
#include "camera_info.h"
#include "stdlib.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 17 der Datei gui_user_menu.c.

#define USER_MENU_IS_SCRIPT   -1

Definiert in Zeile 16 der Datei gui_user_menu.c.

Dokumentation der Funktionen

void gui_load_user_menu_script ( const char *  fn)

Definiert in Zeile 145 der Datei gui_user_menu.c.

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

Definiert in Zeile 136 der Datei gui_user_menu.c.

137 {
138  if (btn==MBOX_BTN_YES)
139  {
142  }
143 }
static void rinit ( )
static

Definiert in Zeile 107 der Datei gui_user_menu.c.

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

Definiert in Zeile 205 der Datei gui_user_menu.c.

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

Definiert in Zeile 49 der Datei gui_user_menu.c.

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

Definiert in Zeile 216 der Datei gui_user_menu.c.

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

Definiert in Zeile 165 der Datei gui_user_menu.c.

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

Definiert in Zeile 20 der Datei gui_user_menu.c.

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

Definiert in Zeile 28 der Datei gui_user_menu.c.

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

Variablen-Dokumentation

CMenu script_submenu

Definiert in Zeile 846 der Datei gui_script.c.

char sfname[CONF_STR_LEN]
static

Definiert in Zeile 134 der Datei gui_user_menu.c.

CMenu user_submenu = {0x2e,LANG_MENU_USER_MENU, user_submenu_items }

Definiert in Zeile 129 der Datei gui_user_menu.c.

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

Definiert in Zeile 125 der Datei gui_user_menu.c.