#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
+#include <windowsx.h>
#include <winspool.h>
#include <winuser.h>
#include <mmsystem.h>
extern int mouseactive;
TCHAR config_filename[256] = _T("");
+static TCHAR config_pathfilename[MAX_DPATH];
static TCHAR config_folder[MAX_DPATH];
static TCHAR config_search[MAX_DPATH];
static TCHAR stored_path[MAX_DPATH];
_T("GenlockImageMRUList"),
_T("GenlockVideoMRUList"),
_T("GeometryMRUList"),
- _T("StatefileMRUList")
+ _T("StatefileMRUList"),
+ _T("ConfigfileMRUList")
};
static int regread;
write_disk_history2(HISTORY_GENLOCK_VIDEO);
write_disk_history2(HISTORY_GEO);
write_disk_history2(HISTORY_STATEFILE);
+ write_disk_history2(HISTORY_CONFIGFILE);
}
void reset_disk_history (void)
DISK_history_add(NULL, i, HISTORY_GENLOCK_VIDEO, 0);
DISK_history_add(NULL, i, HISTORY_GEO, 0);
DISK_history_add(NULL, i, HISTORY_STATEFILE, 0);
+ DISK_history_add(NULL, i, HISTORY_CONFIGFILE, 0);
}
rrold = regread;
regread = (1 << HISTORY_MAX) - 1;
TCHAR path[MAX_DPATH];
static TCHAR full_path[MAX_DPATH];
int ok = 1;
+ bool absolutepath = false;
full_path[0] = 0;
name[0] = 0;
desc[0] = 0;
+ config_pathfilename[0] = 0;
GetDlgItemText (hDlg, IDC_EDITNAME, name, MAX_DPATH);
+ if ((name[0] == '\\' && name[1] == '\\') || (_istalpha(name[0]) && name[1] == ':'))
+ absolutepath = true;
_tcscpy (config_filename, name);
if (flag == CONFIG_SAVE_FULL || flag == CONFIG_SAVE) {
if (_tcslen (name) < 4 || strcasecmp (name + _tcslen (name) - 4, _T(".uae"))) {
_tcscat (name, _T(".uae"));
SetDlgItemText (hDlg, IDC_EDITNAME, name);
}
- if (config)
+ if (config && !absolutepath)
_tcscpy (config->Name, name);
}
GetDlgItemText (hDlg, IDC_EDITDESCRIPTION, desc, MAX_DPATH);
if (config) {
_tcscpy (path, config->Fullpath);
+ _tcscat(config_pathfilename, config->Path);
+ _tcscat(config_pathfilename, config->Name);
+ _tcsncat(path, name, MAX_DPATH - _tcslen(path));
} else {
- fetch_configurationpath (path, sizeof (path) / sizeof (TCHAR));
+ if (absolutepath) {
+ _tcscpy(path, name);
+ } else {
+ fetch_configurationpath(path, sizeof(path) / sizeof(TCHAR));
+ _tcsncat(path, name, MAX_DPATH - _tcslen(path));
+ }
+ TCHAR fname[MAX_DPATH];
+ getfilepart(fname, sizeof fname / sizeof(TCHAR), name);
+ SetDlgItemText(hDlg, IDC_EDITNAME, fname);
}
- _tcsncat (path, name, MAX_DPATH - _tcslen(path));
_tcscpy (full_path, path);
+ if (!config_pathfilename[0]) {
+ _tcscat(config_pathfilename, full_path);
+ }
switch (flag)
{
case CONFIG_SAVE_FULL:
ok = DiskSelection(hDlg, IDC_SAVE, 5, &workprefs, NULL, newpath);
GetDlgItemText (hDlg, IDC_EDITNAME, name, MAX_DPATH);
- _tcscpy (config_filename, name);
+ _tcscpy(config_filename, name);
+ _tcscpy(config_pathfilename, name);
break;
case CONFIG_LOAD_FULL:
if ((ok = DiskSelection(hDlg, IDC_LOAD, 4, &workprefs, NULL, newpath))) {
EnableWindow(GetDlgItem (hDlg, IDC_VIEWINFO), workprefs.info[0]);
GetDlgItemText (hDlg, IDC_EDITNAME, name, MAX_DPATH);
- _tcscpy (config_filename, name);
+ _tcscpy(config_filename, name);
+ _tcscpy(config_pathfilename, name);
}
break;
} else {
TCHAR szMessage[MAX_DPATH];
TCHAR szTitle[MAX_DPATH];
+ TCHAR msg[MAX_DPATH];
WIN32GUI_LoadUIString (IDS_DELETECONFIGCONFIRMATION, szMessage, MAX_DPATH);
WIN32GUI_LoadUIString (IDS_DELETECONFIGTITLE, szTitle, MAX_DPATH );
- if (MessageBox (hDlg, szMessage, szTitle,
+ _stprintf(msg, szMessage, name);
+ if (MessageBox (hDlg, msg, szTitle,
MB_YESNO | MB_ICONWARNING | MB_APPLMODAL | MB_SETFOREGROUND) == IDYES) {
cfgfile_backup (path);
DeleteFile (path);
ok = 0;
}
}
+ config_pathfilename[0] = 0;
break;
}
DWORD extraflags = 0;
int listpadding;
+ SetWindowRedraw(hDlg, FALSE);
+
if (cachedlist) {
if (lv_old_type >= 0) {
lv_oldidx[lv_old_type] = ListView_GetTopIndex (cachedlist);
}
#endif
}
+ SetWindowRedraw(hDlg, TRUE);
+ RedrawWindow(hDlg, NULL, NULL, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN);
+
if (result != -1) {
if (GetWindowRect (list, &rect)) {
ScreenToClient (hDlg, (LPPOINT)&rect);
static void InitializeConfig (HWND hDlg, struct ConfigStruct *config)
{
+ addhistorymenu(hDlg, config == NULL ? _T("") : config->Name, IDC_EDITNAME, HISTORY_CONFIGFILE, false);
if (config == NULL) {
- SetDlgItemText (hDlg, IDC_EDITNAME, _T(""));
SetDlgItemText (hDlg, IDC_EDITDESCRIPTION, _T(""));
} else {
- SetDlgItemText (hDlg, IDC_EDITNAME, config->Name);
SetDlgItemText (hDlg, IDC_EDITDESCRIPTION, config->Description);
}
show_box_art(config && config->Artpath[0] ? config->Artpath : NULL);
int dwRFPsize = sizeof(name_buf) / sizeof(TCHAR);
TCHAR path[MAX_DPATH];
+ HWND lv = GetDlgItem(hDlg, IDC_CONFIGTREE);
+ SetWindowRedraw(lv, FALSE);
+
EnableWindow (GetDlgItem (hDlg, IDC_VIEWINFO), workprefs.info[0]);
root = InitializeConfigTreeView (hDlg);
if (regquerystr (NULL, configreg[configtypepanel], name_buf, &dwRFPsize)) {
config = config2;
}
config = fixloadconfig (hDlg, config);
+
+ SetWindowRedraw(lv, TRUE);
+ RedrawWindow(lv, NULL, NULL, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN);
+
if (config && config->item)
TreeView_SelectItem (GetDlgItem(hDlg, IDC_CONFIGTREE), config->item);
else
TreeView_SelectItem (GetDlgItem(hDlg, IDC_CONFIGTREE), root);
- return config;
-}
-static WNDPROC originallistviewtempproc;
-static LRESULT CALLBACK listviewtempproc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
-{
- if (wParam == WM_PAINT)
- return 0;
- return CallWindowProc(originallistviewtempproc, hWnd, iMessage, wParam, lParam);
+ return config;
}
static struct ConfigStruct *refreshconfiglist(HWND hDlg, struct ConfigStruct *config)
{
- HWND lv = GetDlgItem(hDlg, IDC_CONFIGTREE);
- originallistviewtempproc = (WNDPROC)GetWindowLongPtr(lv, GWLP_WNDPROC);
- SetWindowLongPtr(lv, GWLP_WNDPROC, (LONG_PTR)listviewtempproc);
struct ConfigStruct *cs = initloadsave(hDlg, config, false);
- SetWindowLongPtr(lv, GWLP_WNDPROC, (LONG_PTR)originallistviewtempproc);
return cs;
}
}
break;
}
+ case IDC_EDITNAME:
+ {
+ TCHAR cfg[MAX_DPATH];
+ if (getcomboboxtext(hDlg, IDC_EDITNAME, cfg, sizeof cfg / sizeof(TCHAR))) {
+ config = NULL;
+ for (int i = 0; i < configstoresize; i++) {
+ struct ConfigStruct *cs = configstore[i];
+ TCHAR path[MAX_DPATH];
+ _tcscpy(path, cs->Path);
+ _tcscat(path, cs->Name);
+ if (!_tcsicmp(path, cfg)) {
+ config = cs;
+ TreeView_SelectItem(GetDlgItem(hDlg, IDC_CONFIGTREE), cs->item);
+ break;
+ }
+ }
+ }
+ }
+ break;
}
}
if (HIWORD(wParam) == EN_CHANGE) {
switch (LOWORD (wParam))
{
case IDC_CONFIGSEARCHCLEAR:
- config_search[0] = 0;
- SetDlgItemText(hDlg, IDC_CONFIGSEARCH, _T(""));
- config = refreshconfiglist(hDlg, config);
+ if (config_search[0]) {
+ config_search[0] = 0;
+ SetDlgItemText(hDlg, IDC_CONFIGSEARCH, _T(""));
+ ConfigToRegistry(config, configtypepanel);
+ config = refreshconfiglist(hDlg, config);
+ }
break;
case IDC_SAVE:
if (HandleConfiguration (hDlg, CONFIG_SAVE_FULL, config, newpath)) {
h = r3c.bottom - r3c.top + 1;
pw = r1w.right - r1w.left + 1;
ph = r1w.bottom - r1w.top + 1;
- SetWindowPos (panelDlg, HWND_TOP, 0, 0, 0, 0,
- SWP_NOSIZE | SWP_NOOWNERZORDER);
+ SetWindowPos (panelDlg, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOOWNERZORDER);
GetWindowRect (panelDlg, &r3w);
GetClientRect (panelDlg, &r3c);
x -= r3w.left - r2w.left - 1;
y -= r3w.top - r2w.top - 1;
if (!fullpanel) {
- SetWindowPos (panelDlg, HWND_TOP, x + (pw - w) / 2, y + (ph - h) / 2, 0, 0,
- SWP_NOSIZE | SWP_NOOWNERZORDER);
+ SetWindowPos (panelDlg, HWND_TOP, x + (pw - w) / 2, y + (ph - h) / 2, 0, 0, SWP_NOSIZE | SWP_NOOWNERZORDER);
}
ShowWindow (GetDlgItem (hDlg, IDC_PANEL_FRAME), SW_HIDE);
icon = LoadIcon (hInst, MAKEINTRESOURCE (IDI_ROOT));
ImageList_AddIcon (himl, icon);
}
+
TVhDlg = GetDlgItem (hDlg, IDC_PANELTREE);
+ SetWindowRedraw(TVhDlg, FALSE);
TreeView_SetImageList (TVhDlg, himl, TVSIL_NORMAL);
p = root = CreateFolderNode (TVhDlg, IDS_TREEVIEW_SETTINGS, NULL, ABOUT_ID, 0, NULL);
CN (MISC1_ID, _T("misc"));
CN (MISC2_ID, _T("misc2"));
+ SetWindowRedraw(TVhDlg, TRUE);
+ RedrawWindow(TVhDlg, NULL, NULL, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN);
+
if (configtypepanel == 1)
TreeView_SelectItem (TVhDlg, p1);
else if (configtypepanel == 2)
TreeView_SelectItem (TVhDlg, p2);
else
TreeView_SelectItem (TVhDlg, ppage[currentpage].tv);
+
}
static int dialog_x_offset, dialog_y_offset;
}
hGUIWnd = NULL;
- if (quit_program)
+ if (quit_program) {
psresult = -2;
- else if (qs_request_reset && quickstart)
- uae_reset (qs_request_reset == 2 ? 1 : 0, 1);
+ } else if (qs_request_reset && quickstart) {
+ uae_reset(qs_request_reset == 2 ? 1 : 0, 1);
+ }
+ if (psresult > 0 && config_pathfilename[0]) {
+ DISK_history_add(config_pathfilename, -1, HISTORY_CONFIGFILE, false);
+ }
if (closed) {
graphics_init(false);