Example #1
0
 options_iterate(curr_options, poption) {
   switch (option_type(poption)) {
   case OT_BOOLEAN:
     option_bool_set(poption, get_bool(poption));
     break;
   case OT_INTEGER:
     option_int_set(poption, get_int(poption));
     break;
   case OT_STRING:
     option_str_set(poption, get_string(poption));
     break;
   case OT_ENUM:
     option_enum_set_int(poption, get_enum(poption));
     break;
   case OT_BITWISE:
     option_bitwise_set(poption, get_bitwise(poption));
     break;
   case OT_FONT:
     option_font_set(poption, get_button_font(poption));
     break;
   case OT_COLOR:
     option_color_set(poption, get_color(poption));
     break;
   case OT_VIDEO_MODE:
     log_error("Option type %s (%d) not supported yet.",
               option_type_name(option_type(poption)),
               option_type(poption));
     break;
   }
 } options_iterate_end;
Example #2
0
static LONG CALLBACK option_proc(HWND dlg,UINT message,
				 WPARAM wParam,LPARAM lParam)
{
  switch(message) {
  case WM_CREATE:
  case WM_SIZE:
  case WM_GETMINMAXINFO:
    break;
  case WM_DESTROY:
    option_dialog=NULL;
    break;
  case WM_COMMAND:
    if (LOWORD(wParam)==IDOK) {
      void *gui_data;
      char dp[512];
      int val;
      
      client_options_iterate(poption) {
        gui_data = option_get_gui_data(poption);

	switch (option_type(poption)) {
	case COT_BOOLEAN:
          (void) option_bool_set(poption,
                                 Button_GetCheck((HWND)(gui_data))
                                 == BST_CHECKED);
	  break;
	case COT_INTEGER:
	  GetWindowText((HWND)(gui_data),dp,sizeof(dp));
          if (str_to_int(dp, &val)) {
            (void) option_int_set(poption, val);
          }
	  break;
	case COT_STRING:
	  if (!gui_data) {
	    break;
	  }
	  GetWindowText((HWND) (gui_data), dp, sizeof(dp));
          (void) option_str_set(poption, dp);
	  break;
        case COT_FONT:
          /* FIXME: */
          break;
	}
      } client_options_iterate_end;
      DestroyWindow(dlg);
    }
    break;
  case WM_CLOSE:
    DestroyWindow(dlg);
    break;
  default:
    return DefWindowProc(dlg,message,wParam,lParam);
  }