Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/teraterm/teraterm/addsetting.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 10133 by zmatsuo, Fri Jul 15 12:59:29 2022 UTC revision 10134 by zmatsuo, Tue Aug 9 15:11:40 2022 UTC
# Line 55  Line 55 
55  #include "font_pp.h"  #include "font_pp.h"
56  #include "asprintf.h"  #include "asprintf.h"
57  #include "win32helper.h"  #include "win32helper.h"
58    #include "themedlg.h"
59    
60  const mouse_cursor_t MouseCursor[] = {  const mouse_cursor_t MouseCursor[] = {
61          {"ARROW", IDC_ARROW},          {"ARROW", IDC_ARROW},
# Line 649  void CVisualPropPageDlg::OnInitDialog() Line 650  void CVisualPropPageDlg::OnInitDialog()
650                  { IDC_ALPHABLEND, "DLG_TAB_VISUAL_ALPHA" },                  { IDC_ALPHABLEND, "DLG_TAB_VISUAL_ALPHA" },
651                  { IDC_ALPHA_BLEND_ACTIVE_LABEL, "DLG_TAB_VISUAL_ALPHA_ACTIVE" },                  { IDC_ALPHA_BLEND_ACTIVE_LABEL, "DLG_TAB_VISUAL_ALPHA_ACTIVE" },
652                  { IDC_ALPHA_BLEND_INACTIVE_LABEL, "DLG_TAB_VISUAL_ALPHA_INACTIVE" },                  { IDC_ALPHA_BLEND_INACTIVE_LABEL, "DLG_TAB_VISUAL_ALPHA_INACTIVE" },
653    #if 0
654                  { IDC_ETERM_LOOKFEEL, "DLG_TAB_VISUAL_ETERM" },                  { IDC_ETERM_LOOKFEEL, "DLG_TAB_VISUAL_ETERM" },
655    #endif
656                  { IDC_MIXED_THEME_FILE, "DLG_TAB_VISUAL_BGMIXED_THEMEFILE" },                  { IDC_MIXED_THEME_FILE, "DLG_TAB_VISUAL_BGMIXED_THEMEFILE" },
657                  { IDC_BGIMG_CHECK, "DLG_TAB_VISUAL_BGIMG" },                  { IDC_BGIMG_CHECK, "DLG_TAB_VISUAL_BGIMG" },
658                  { IDC_BGIMG_BRIGHTNESS, "DLG_TAB_VISUAL_BGIMG_BRIGHTNESS" },                  { IDC_BGIMG_BRIGHTNESS, "DLG_TAB_VISUAL_BGIMG_BRIGHTNESS" },
# Line 694  void CVisualPropPageDlg::OnInitDialog() Line 697  void CVisualPropPageDlg::OnInitDialog()
697          EnableDlgItem(IDC_ALPHA_BLEND_INACTIVE, isLayeredWindowSupported);          EnableDlgItem(IDC_ALPHA_BLEND_INACTIVE, isLayeredWindowSupported);
698          EnableDlgItem(IDC_ALPHA_BLEND_INACTIVE_TRACKBAR, isLayeredWindowSupported);          EnableDlgItem(IDC_ALPHA_BLEND_INACTIVE_TRACKBAR, isLayeredWindowSupported);
699    
700          // (2)[BG] BGEnable          // (2) theme file
701          SetCheck(IDC_ETERM_LOOKFEEL, ts.EtermLookfeel.BGEnable);          {
702                    SendDlgItemMessageA(IDC_THEME_FILE, CB_ADDSTRING, 0, (LPARAM)"使用しない");
703                    SendDlgItemMessageA(IDC_THEME_FILE, CB_ADDSTRING, 1, (LPARAM)"固定テーマ(テーマファイル指定)");
704                    SendDlgItemMessageA(IDC_THEME_FILE, CB_ADDSTRING, 2, (LPARAM)"ランダムテーマ");
705                    int sel = ts.EtermLookfeel.BGEnable;
706                    if (sel < 0) sel = 0;
707                    if (sel > 2) sel = 2;
708                    SendDlgItemMessageA(IDC_THEME_FILE, CB_SETCURSEL, sel, 0);
709                    BOOL enable = (sel == 1) ? TRUE : FALSE;
710                    EnableDlgItem(IDC_THEME_EDIT, enable);
711                    EnableDlgItem(IDC_THEME_BUTTON, enable);
712    
713          // Eterm look-feelの背景画像指定。                  SetDlgItemTextW(IDC_THEME_EDIT, ts.EtermLookfeel.BGThemeFileW);
         SetDlgItemTextA(IDC_BGIMG_EDIT, ts.BGImageFilePath);  
   
         SetDlgItemNum(IDC_EDIT_BGIMG_BRIGHTNESS, ts.BGImgBrightness);  
   
         // BGEnable関係なく、チェックボックスを付ける。  
         if (strcmp(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE) == 0) {  
                 SetCheck(IDC_BGIMG_CHECK, BST_CHECKED);  
         } else {  
                 SetCheck(IDC_BGIMG_CHECK, BST_UNCHECKED);  
         }  
         // テーマファイルを無視する場合は壁紙と混合しない。  
         if (ts.EtermLookfeel.BGIgnoreThemeFile) {  
                 SetCheck(IDC_MIXED_THEME_FILE, BST_UNCHECKED);  
         } else {  
                 SetCheck(IDC_MIXED_THEME_FILE, BST_CHECKED);  
         }  
   
         if (ts.EtermLookfeel.BGEnable) {  
                 EnableDlgItem(IDC_BGIMG_CHECK, TRUE);  
                 EnableDlgItem(IDC_MIXED_THEME_FILE, TRUE);  
   
                 if (strcmp(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE) == 0) {  
                         EnableDlgItem(IDC_BGIMG_EDIT, TRUE);  
                         EnableDlgItem(IDC_BGIMG_BUTTON, TRUE);  
   
                         EnableDlgItem(IDC_BGIMG_BRIGHTNESS, TRUE);  
                         EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, TRUE);  
                 } else {  
                         EnableDlgItem(IDC_BGIMG_EDIT, FALSE);  
                         EnableDlgItem(IDC_BGIMG_BUTTON, FALSE);  
   
                         EnableDlgItem(IDC_BGIMG_BRIGHTNESS, FALSE);  
                         EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, FALSE);  
                 }  
   
         } else {  
                 EnableDlgItem(IDC_BGIMG_CHECK, FALSE);  
                 EnableDlgItem(IDC_BGIMG_EDIT, FALSE);  
                 EnableDlgItem(IDC_BGIMG_BUTTON, FALSE);  
   
                 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, FALSE);  
                 EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, FALSE);  
   
                 EnableDlgItem(IDC_MIXED_THEME_FILE, FALSE);  
714          }          }
715    
716          // (3)Mouse cursor type          // (3)Mouse cursor type
# Line 873  BOOL CVisualPropPageDlg::OnCommand(WPARA Line 842  BOOL CVisualPropPageDlg::OnCommand(WPARA
842          int sel;          int sel;
843    
844          switch (wParam) {          switch (wParam) {
845          case IDC_ETERM_LOOKFEEL:          case IDC_THEME_EDITOR_BUTTON | (BN_CLICKED << 16): {
846                          // チェックされたら Enable/Disable をトグルする。                  ThemeDialog(m_hInst, m_hWnd, &cv);
847                          if (GetCheck(IDC_ETERM_LOOKFEEL)) {                  break;
848                                  EnableDlgItem(IDC_MIXED_THEME_FILE, TRUE);          }
849                                  EnableDlgItem(IDC_BGIMG_CHECK, TRUE);          case IDC_THEME_FILE | (CBN_SELCHANGE << 16): {
850                                  if (GetCheck(IDC_BGIMG_CHECK)) {                  int r = GetCurSel(IDC_THEME_FILE);
851                                          EnableDlgItem(IDC_BGIMG_EDIT, TRUE);                  // 固定のとき、ファイル名を入力できるようにする
852                                          EnableDlgItem(IDC_BGIMG_BUTTON, TRUE);                  BOOL enable = (r == 1) ? TRUE : FALSE;
853                    EnableDlgItem(IDC_THEME_EDIT, enable);
854                                          EnableDlgItem(IDC_BGIMG_BRIGHTNESS, TRUE);                  EnableDlgItem(IDC_THEME_BUTTON, enable);
855                                          EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, TRUE);                  break;
856                                  } else {          }
857                                          EnableDlgItem(IDC_BGIMG_EDIT, FALSE);          case IDC_THEME_BUTTON | (BN_CLICKED << 16): {
858                                          EnableDlgItem(IDC_BGIMG_BUTTON, FALSE);                  // テーマファイルを選択する
859                    OPENFILENAMEW ofn = {};
860                    wchar_t szFile[MAX_PATH];
861                    wchar_t *curdir;
862                    wchar_t *theme_dir;
863                    hGetCurrentDirectoryW(&curdir);
864    
865                                          EnableDlgItem(IDC_BGIMG_BRIGHTNESS, FALSE);                  if (GetFileAttributesW(ts.EtermLookfeel.BGThemeFileW) != INVALID_FILE_ATTRIBUTES) {
866                                          EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, FALSE);                          wcsncpy_s(szFile, _countof(szFile), ts.EtermLookfeel.BGThemeFileW, _TRUNCATE);
867                                  }                  } else {
868                          } else {                          szFile[0] = 0;
869                                  EnableDlgItem(IDC_BGIMG_CHECK, FALSE);                  }
                                 EnableDlgItem(IDC_BGIMG_EDIT, FALSE);  
                                 EnableDlgItem(IDC_BGIMG_BUTTON, FALSE);  
   
                                 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, FALSE);  
                                 EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, FALSE);  
   
                                 // 無効化されたら、BGThemeFile を元に戻す。  
                                 strncpy_s(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE_DEFAULT, sizeof(ts.EtermLookfeel.BGThemeFile));  
                                 // 背景画像も無効化する。  
                                 SetDlgItemText(IDC_BGIMG_EDIT, "");  
                                 SetDlgItemInt(IDC_EDIT_BGIMG_BRIGHTNESS, BG_THEME_IMAGE_BRIGHTNESS_DEFAULT);  
   
                                 EnableDlgItem(IDC_MIXED_THEME_FILE, FALSE);  
                         }  
                         return TRUE;  
   
                 case IDC_MIXED_THEME_FILE:  
                         if (GetCheck(IDC_MIXED_THEME_FILE)) {  
                                 // 背景画像のチェックは外す。  
                                 SetCheck(IDC_BGIMG_CHECK, BST_UNCHECKED);  
                         }  
                         return TRUE;  
   
                 case IDC_BGIMG_CHECK:  
                         if (GetCheck(IDC_BGIMG_CHECK)) {  
                                 EnableDlgItem(IDC_BGIMG_EDIT, TRUE);  
                                 EnableDlgItem(IDC_BGIMG_BUTTON, TRUE);  
   
                                 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, TRUE);  
                                 EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, TRUE);  
   
                                 strncpy_s(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE, sizeof(ts.EtermLookfeel.BGThemeFile));  
                                 // 混合のチェックは外す。  
                                 SetCheck(IDC_MIXED_THEME_FILE, BST_UNCHECKED);  
                         } else {  
                                 EnableDlgItem(IDC_BGIMG_EDIT, FALSE);  
                                 EnableDlgItem(IDC_BGIMG_BUTTON, FALSE);  
870    
871                                  EnableDlgItem(IDC_BGIMG_BRIGHTNESS, FALSE);                  aswprintf(&theme_dir, L"%s\\theme", ts.HomeDirW);
                                 EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, FALSE);  
872    
873                                  // 無効化されたら、BGThemeFile を元に戻す。                  ofn.lStructSize = get_OPENFILENAME_SIZEW();
874                                  strncpy_s(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE_DEFAULT, sizeof(ts.EtermLookfeel.BGThemeFile));                  ofn.hwndOwner = GetSafeHwnd();
875                                  // 背景画像も無効化する。                  ofn.lpstrFilter = L"Theme Files(*.ini)\0*.ini\0All Files(*.*)\0*.*\0";
876                                  SetDlgItemText(IDC_BGIMG_EDIT, "");                  ofn.lpstrFile = szFile;
877                                  SetDlgItemInt(IDC_EDIT_BGIMG_BRIGHTNESS, BG_THEME_IMAGE_BRIGHTNESS_DEFAULT);                  ofn.nMaxFile = _countof(szFile);
878                          }                  ofn.lpstrTitle = L"select theme file";
879                          return TRUE;                  ofn.lpstrInitialDir = theme_dir;
880                    ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
881                    BOOL ok = GetOpenFileNameW(&ofn);
882                    SetCurrentDirectoryW(curdir);
883                    free(curdir);
884                    free(theme_dir);
885                    if (ok) {
886                            SetDlgItemTextW(IDC_THEME_EDIT, szFile);
887                    }
888                    return TRUE;
889            }
890    
891                  case IDC_BGIMG_BUTTON | (BN_CLICKED << 16):                  case IDC_BGIMG_BUTTON | (BN_CLICKED << 16):
892                          // 背景画像をダイアログで指定する。                          // 背景画像をダイアログで指定する。
893                          {                          {
894                                  OPENFILENAMEW ofn;                                  OPENFILENAMEW ofn;
895                                  wchar_t szFile[MAX_PATH];                                  wchar_t szFile[MAX_PATH];
896                                    wchar_t *curdir;
897                                    hGetCurrentDirectoryW(&curdir);
898    
899                                  memset(&ofn, 0, sizeof(ofn));                                  memset(&ofn, 0, sizeof(ofn));
900                                  memset(szFile, 0, sizeof(szFile));                                  memset(szFile, 0, sizeof(szFile));
# Line 958  BOOL CVisualPropPageDlg::OnCommand(WPARA Line 906  BOOL CVisualPropPageDlg::OnCommand(WPARA
906                                  ofn.lpstrTitle = L"select image file";                                  ofn.lpstrTitle = L"select image file";
907                                  ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;                                  ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
908                                  BOOL ok = GetOpenFileNameW(&ofn);                                  BOOL ok = GetOpenFileNameW(&ofn);
909                                    SetCurrentDirectoryW(curdir);
910                                    free(curdir);
911                                  if (ok) {                                  if (ok) {
912                                          SetDlgItemTextW(IDC_BGIMG_EDIT, szFile);                                          SetDlgItemTextW(IDC_BGIMG_EDIT, szFile);
913                                  }                                  }
# Line 1118  void CVisualPropPageDlg::OnOK() Line 1068  void CVisualPropPageDlg::OnOK()
1068                          (i > 255) ? 255 : i;                          (i > 255) ? 255 : i;
1069          }          }
1070    
1071          // (2)          // (2) テーマファイル選択
1072          // グローバル変数 BGEnable を直接書き換えると、プログラムが落ちることが          {
1073          // あるのでコピーを修正するのみとする。(2005.4.24 yutaka)                  int r = GetCurSel(IDC_THEME_FILE);
1074          if (ts.EtermLookfeel.BGEnable != GetCheck(IDC_ETERM_LOOKFEEL)) {                  switch (r) {
1075                  flag_changed = 1;                  default:
1076                  ts.EtermLookfeel.BGEnable = GetCheck(IDC_ETERM_LOOKFEEL);                          assert(FALSE);
1077          }                          // fall through
1078          if (ts.EtermLookfeel.BGEnable) {                  case 0:
1079                  GetDlgItemTextA(IDC_BGIMG_EDIT, ts.BGImageFilePath, sizeof(ts.BGImageFilePath));                          ts.EtermLookfeel.BGEnable = 0;
1080          } else {                          break;
1081                  strncpy_s(ts.BGImageFilePath, sizeof(ts.BGImageFilePath), "%SystemRoot%\\Web\\Wallpaper\\*.bmp", _TRUNCATE);                  case 1: {
1082          }                          // テーマファイル指定
1083                            ts.EtermLookfeel.BGEnable = 1;
1084    
1085          GetDlgItemTextA(IDC_EDIT_BGIMG_BRIGHTNESS, buf, sizeof(buf));                          wchar_t* theme_file;
1086          if (isdigit(buf[0])) {                          hGetDlgItemTextW(m_hWnd, IDC_THEME_EDIT, &theme_file);
                 int i = atoi(buf);  
                 ts.BGImgBrightness =  
                         (i < 0) ? 0 :  
                         (i > 255) ? 255 : i;  
         }  
1087    
1088          // テーマファイルを最終設定する。                          if (ts.EtermLookfeel.BGThemeFileW != NULL) {
1089          if (ts.EtermLookfeel.BGEnable) {                                  free(ts.EtermLookfeel.BGThemeFileW);
1090                  if (GetCheck(IDC_BGIMG_CHECK)) {                          }
1091                          strncpy_s(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE, sizeof(ts.EtermLookfeel.BGThemeFile));                          ts.EtermLookfeel.BGThemeFileW = theme_file;
1092                  } else {                          break;
1093                          strncpy_s(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE_DEFAULT, sizeof(ts.EtermLookfeel.BGThemeFile));                  }
1094                    case 2: {
1095                            // ランダムテーマ
1096                            ts.EtermLookfeel.BGEnable = 2;
1097                            if (ts.EtermLookfeel.BGThemeFileW != NULL) {
1098                                    free(ts.EtermLookfeel.BGThemeFileW);
1099                            }
1100                            ts.EtermLookfeel.BGThemeFileW = NULL;
1101                            break;
1102                  }                  }
                 if (GetCheck(IDC_MIXED_THEME_FILE)) {  
                         // 壁紙と混合の場合、デフォルトに戻しておく。  
                         ts.EtermLookfeel.BGIgnoreThemeFile = FALSE;  
                 } else {  
                         // テーマファイルを無視する。  
                         ts.EtermLookfeel.BGIgnoreThemeFile = TRUE;  
1103                  }                  }
   
         } else {  
                 // BGが無効の場合はデフォルトに戻しておく。  
                 strncpy_s(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE_DEFAULT, sizeof(ts.EtermLookfeel.BGThemeFile));  
1104          }          }
1105    
1106    

Legend:
Removed from v.10133  
changed lines
  Added in v.10134

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26