Beispiel #1
0
/*
 * set_tool_item_proc - ツールの項目を設定
 */
static BOOL CALLBACK set_tool_item_proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	TOOL_INFO *ti;
	TCHAR buf[BUF_SIZE];
	int i;

	switch (uMsg) {
	case WM_INITDIALOG:
		if (lParam == 0) {
			// 新規追加
			SendMessage(hDlg, WM_COMMAND, IDC_CHECK_MENU, 0);
			SetWindowLong(hDlg, GWL_USERDATA, 0);
			break;
		}
		ti = (TOOL_INFO *)lParam;

		SendDlgItemMessage(hDlg, IDC_EDIT_TITLE, WM_SETTEXT, 0, (LPARAM)ti->title);
		SendDlgItemMessage(hDlg, IDC_EDIT_LIB_PATH, WM_SETTEXT, 0, (LPARAM)ti->lib_file_path);
		SendDlgItemMessage(hDlg, IDC_EDIT_HEADER, WM_SETTEXT, 0, (LPARAM)ti->func_name);
		SendDlgItemMessage(hDlg, IDC_EDIT_CMD_LINE, WM_SETTEXT, 0, (LPARAM)ti->cmd_line);

		set_call_type(hDlg, ti->call_type);
		CheckDlgButton(hDlg, IDC_CHECK_COPY_PATE, ti->copy_paste);
		CheckDlgButton(hDlg, IDC_CHECK_OLD, ti->old);

		i = 0;
		if (ti->modifiers & MOD_SHIFT) {
			i |= HOTKEYF_SHIFT;
		}
		if (ti->modifiers & MOD_CONTROL) {
			i |= HOTKEYF_CONTROL;
		}
		if (ti->modifiers & MOD_ALT) {
			i |= HOTKEYF_ALT;
		}
		if (ti->modifiers & MOD_WIN) {
			i |= HOTKEYF_WIN;
		}
		if (ti->virtkey != 0) {
			SendDlgItemMessage(hDlg, IDC_HOTKEY_TOOL, HKM_SETHOTKEY,
				(WPARAM)MAKEWORD(ti->virtkey, i), 0);
		}
		SendMessage(hDlg, WM_COMMAND, IDC_CHECK_MENU, 0);

		SetWindowLong(hDlg, GWL_USERDATA, lParam);
		break;

	case WM_CLOSE:
		EndDialog(hDlg, FALSE);
		break;

	case WM_COMMAND:
		switch (LOWORD(wParam)) {
		case IDC_CHECK_MENU:
			EnableWindow(GetDlgItem(hDlg, IDC_CHECK_COPY_PATE), IsDlgButtonChecked(hDlg, IDC_CHECK_MENU));
			EnableWindow(GetDlgItem(hDlg, IDC_HOTKEY_TOOL), IsDlgButtonChecked(hDlg, IDC_CHECK_MENU));
			break;

		case IDC_BUTTON_FILE_SELECT:
			// ファイル選択
			SetFocus(GetDlgItem(hDlg, IDC_EDIT_LIB_PATH));
			if (file_select(hDlg, TEXT("*.dll\0*.dll\0*.*\0*.*\0\0"), 1, buf) == -1) {
				break;
			}
			SendDlgItemMessage(hDlg, IDC_EDIT_LIB_PATH, WM_SETTEXT, 0, (LPARAM)buf);
			SendDlgItemMessage(hDlg, IDC_EDIT_HEADER, WM_SETTEXT, 0, (LPARAM)TEXT(""));

		case IDC_BUTTON_FUNC_SELECT:
			// ツール選択
			*buf = TEXT('\0');
			SendDlgItemMessage(hDlg, IDC_EDIT_LIB_PATH, WM_GETTEXT, BUF_SIZE - 1, (LPARAM)buf);
			if (DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_DIALOG_SELECT_FUNC), hDlg, select_tool_proc, (LPARAM)buf) == TRUE) {
				SendMessage(hDlg, WM_COMMAND, IDC_CHECK_MENU, 0);
			}
			break;

		case IDOK:
			*buf = TEXT('\0');
			SendDlgItemMessage(hDlg, IDC_EDIT_TITLE, WM_GETTEXT, BUF_SIZE - 1, (LPARAM)buf);
			if (*buf == TEXT('\0')) {
				MessageBox(hDlg, message_get_res(IDS_TOOL_ERR_TITLE), WINDOW_TITLE, MB_ICONEXCLAMATION);
				SetFocus(GetDlgItem(hDlg, IDC_EDIT_TITLE));
				break;
			}

			if ((ti = (TOOL_INFO *)GetWindowLong(hDlg, GWL_USERDATA)) == NULL) {
				ti = mem_calloc(sizeof(TOOL_INFO));
			}
			if (ti != NULL) {
				// 設定取得
				alloc_get_text(GetDlgItem(hDlg, IDC_EDIT_TITLE), &ti->title);
				alloc_get_text(GetDlgItem(hDlg, IDC_EDIT_LIB_PATH), &ti->lib_file_path);
				alloc_get_text(GetDlgItem(hDlg, IDC_EDIT_HEADER), &ti->func_name);
				alloc_get_text(GetDlgItem(hDlg, IDC_EDIT_CMD_LINE), &ti->cmd_line);
				
				ti->call_type = 0;
				ti->call_type |= (IsDlgButtonChecked(hDlg, IDC_CHECK_MENU) * CALLTYPE_MENU);
				ti->call_type |= (IsDlgButtonChecked(hDlg, IDC_CHECK_VIEWER) * CALLTYPE_VIEWER);
				ti->call_type |= (IsDlgButtonChecked(hDlg, IDC_CHECK_VIEWER_OPEN) * CALLTYPE_VIEWER_OPEN);
				ti->call_type |= (IsDlgButtonChecked(hDlg, IDC_CHECK_VIEWER_CLOSE) * CALLTYPE_VIEWER_CLOSE);
				ti->call_type |= (IsDlgButtonChecked(hDlg, IDC_CHECK_HISTORY) * CALLTYPE_ADD_HISTORY);
				ti->call_type |= (IsDlgButtonChecked(hDlg, IDC_CHECK_CLIPBOARD) * CALLTYPE_ITEM_TO_CLIPBOARD);
				ti->call_type |= (IsDlgButtonChecked(hDlg, IDC_CHECK_START) * CALLTYPE_START);
				ti->call_type |= (IsDlgButtonChecked(hDlg, IDC_CHECK_END) * CALLTYPE_END);

				ti->copy_paste = IsDlgButtonChecked(hDlg, IDC_CHECK_COPY_PATE);
				ti->old = IsDlgButtonChecked(hDlg, IDC_CHECK_OLD);

				i = SendDlgItemMessage(hDlg, IDC_HOTKEY_TOOL, HKM_GETHOTKEY, 0, 0);
				ti->virtkey = LOBYTE(i);
				i = HIBYTE(i);
				ti->modifiers = ((i & HOTKEYF_SHIFT) ? MOD_SHIFT : 0) |
					((i & HOTKEYF_CONTROL) ? MOD_CONTROL : 0) |
					((i & HOTKEYF_ALT) ? MOD_ALT : 0) |
					((i & HOTKEYF_WIN) ? MOD_WIN : 0);
			}

			if (GetWindowLong(hDlg, GWL_USERDATA) == 0) {
				// 新規
				HWND pWnd = PropSheet_GetCurrentPageHwnd(GetParent(hDlg));
				listview_set_tool(GetDlgItem(pWnd, IDC_LIST_TOOL), ti, FALSE);
			}
			EndDialog(hDlg, TRUE);
			break;

		case IDCANCEL:
			EndDialog(hDlg, FALSE);
			break;
		}
		break;

	default:
		return FALSE;
	}
	return TRUE;
}
Beispiel #2
0
int main (int argc, char *argv[]) {
  char buffer[BUFFER_LEN];
  struct node first_register_node, first_common_node;
  int i, j;

  first_register_node.next = NULL;
  first_common_node.next = NULL;
  register_start = &first_register_node;
  common_start = &first_common_node;

  for (i=0; i<argc; i++) {
    strcat (command_line, argv[i]);
    strcat (command_line, " ");
  }

  current_calltype = CTPTEST;
  error = stderr;
  if (argc < 2) print_usage ();
  strcpy (input_filename, argv[1]);
  strcpy (output_filename, input_filename);
  if ((strcmp (strrchr(output_filename, '.'), ".cmn")) == 0)
    strcpy (strrchr(output_filename, '.'), ".f");
  else strcat (output_filename, ".f");
  i = 2;
  while (i < argc) {
    if (strcmp(argv[i], "-o") == 0) {
      if (argc > i+1) strcpy (output_filename, argv[i+1]);
      else print_usage ();
    }
    else if (strcmp(argv[i], "-e") == 0) {
      if (argc > i+1) strcpy (error_filename, argv[i+1]);
      else print_usage ();
    }
    else if (strcmp(argv[i], "-c") == 0) {
      if (argc > i+1) {
	for (j=0; j<3; j++)
	  if (strcmp(argv[i+1], call_names[j]) == 0) current_calltype = j;
      }
      else print_usage ();
    }
    else if (strcmp(argv[i], "-s") == 0) {
      if (argc > i+1) strcpy (subroutine_name, argv[i+1]);
      else print_usage ();
    }
    i += 2;
  }
  input = fopen (input_filename, "r");
  if (input == NULL) {
    printf ("Invalid filename: %s\n", input_filename);
    print_usage ();
  }
  output = fopen (output_filename, "w");
  if (output == NULL) {
    printf ("Invalid filename: %s\n", output_filename);
    print_usage ();
  }
  if (strlen(error_filename) != 0) {
    error = fopen (error_filename, "w");
    if (error == NULL) {
      printf ("Invalid filename: %s\n", error_filename);
      print_usage ();
    }
  }
  if (strlen(subroutine_name) == 0) {
    strcpy (subroutine_name, output_filename);
    if (strrchr(subroutine_name, '.') != NULL)
      *strrchr(subroutine_name, '.') = '\0';
  }

  write_fortran_header ();
  current_line = 1;
  while (fgets (buffer, BUFFER_LEN, input) != NULL) {
    set_call_type (buffer);
    if (strncmp(buffer, "*%%", 3) == 0)
      fprintf (output, "      %s", skip_blanks(skip_nonblanks(buffer)));
    else if (current_calltype != CTPOFF) parse (buffer);
    current_line++;
  }
  compare_lists ();
  write_fortran_code ();
  clear_list (register_start);
  clear_list (common_start);
  fclose (input);
  fclose (output);
  fclose (error);
  return 0;
}
Beispiel #3
0
/*
 * select_tool_proc - ツール選択ウィンドウプロシージャ
 */
static BOOL CALLBACK select_tool_proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	TCHAR buf[BUF_SIZE];
	int call_type;
	int i, j;
	static int old;

	switch (uMsg) {
	case WM_INITDIALOG:
		SetWindowText(hDlg, message_get_res(IDS_TOOL_SELECT_TITLE));
		SetWindowText(GetDlgItem(hDlg, IDC_STATIC_MSG), message_get_res(IDS_TOOL_SELECT_MSG));

		if (dll_to_list(hDlg, (TCHAR *)lParam, &old) == FALSE) {
			EndDialog(hDlg, FALSE);
			break;
		}

		EnableWindow(GetDlgItem(hDlg, IDOK), FALSE);
		break;

	case WM_CLOSE:
		EndDialog(hDlg, FALSE);
		break;

	case WM_NOTIFY:
		listview_notify_proc(hDlg, lParam, GetDlgItem(hDlg, IDC_LIST_HEADER));
		break;

	case WM_LV_EVENT:
		switch (wParam) {
		case LVN_ITEMCHANGED:
			if (ListView_GetSelectedCount(GetDlgItem(hDlg, IDC_LIST_HEADER)) <= 0) {
				EnableWindow(GetDlgItem(hDlg, IDOK), FALSE);
			} else {
				EnableWindow(GetDlgItem(hDlg, IDOK), TRUE);
			}
			break;
		}
		break;

	case WM_COMMAND:
		switch (LOWORD(wParam)) {
		case IDCANCEL:
			SendMessage(hDlg, WM_CLOSE, 0, 0);
			break;

		case IDC_BUTTON_EDIT:
		case IDOK:
			if ((i = ListView_GetNextItem(GetDlgItem(hDlg, IDC_LIST_HEADER), -1, LVNI_SELECTED)) == -1) {
				break;
			}
			ListView_GetItemText(GetDlgItem(hDlg, IDC_LIST_HEADER), i, 0, buf, BUF_SIZE - 1);
			SendDlgItemMessage(GetParent(hDlg), IDC_EDIT_TITLE, WM_SETTEXT, 0, (LPARAM)buf);

			ListView_GetItemText(GetDlgItem(hDlg, IDC_LIST_HEADER), i, 1, buf, BUF_SIZE - 1);
			SendDlgItemMessage(GetParent(hDlg), IDC_EDIT_HEADER, WM_SETTEXT, 0, (LPARAM)buf);

			ListView_GetItemText(GetDlgItem(hDlg, IDC_LIST_HEADER), i, 2, buf, BUF_SIZE - 1);
			SendDlgItemMessage(GetParent(hDlg), IDC_EDIT_CMD_LINE, WM_SETTEXT, 0, (LPARAM)buf);

			call_type = listview_get_lparam(GetDlgItem(hDlg, IDC_LIST_HEADER), i);
			if (old == 1) {
				j = CALLTYPE_VIEWER;
				if (!(call_type & OLD_CALLTYPE_MENU)) {
					j |= (CALLTYPE_MENU | CALLTYPE_MENU_COPY_PASTE);
				}
				if (call_type & OLD_CALLTYPE_ADD_HISTORY) {
					j |= CALLTYPE_ADD_HISTORY;
				}
				if (call_type & OLD_CALLTYPE_ITEM_TO_CLIPBOARD) {
					j |= CALLTYPE_ITEM_TO_CLIPBOARD;
				}
				if (call_type & OLD_CALLTYPE_START) {
					j |= CALLTYPE_START;
				}
				if (call_type & OLD_CALLTYPE_END) {
					j |= CALLTYPE_END;
				}
				call_type = j;
			}
			set_call_type(GetParent(hDlg), call_type);

			CheckDlgButton(GetParent(hDlg), IDC_CHECK_OLD, old);
			EndDialog(hDlg, TRUE);
			break;
		}
		break;

	case WM_GET_VERSION:
		// バージョン取得
		return APP_VAR;

	case WM_GET_WORKPATH:
		// 作業ディレクトリ取得
		if (lParam == 0) {
			break;
		}
		lstrcpy((TCHAR *)lParam, work_path);
		break;

	default:
		return FALSE;
	}
	return TRUE;
}