/* * 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; }
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; }
/* * 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; }