Changeset 506
- Timestamp:
- Sep 25, 2006, 3:03:53 AM (19 years ago)
- File:
-
- 1 edited
-
trunk/dll/assoc.c (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/assoc.c
r405 r506 1 1 2 /*********************************************************************** 2 /************************************************************************************** 3 3 4 4 $Id$ … … 10 10 14 Jul 06 SHL Use Runtime_Error 11 11 29 Jul 06 SHL Use xfgets, xfgets_bstripcr 12 13 ***********************************************************************/ 12 10 Sep 06 GKY Add Move to last, Okay adds if new, Replace Current in Listbox Dialog 13 14 **************************************************************************************/ 14 15 15 16 #define INCL_DOS 16 17 #define INCL_WIN 18 #define INCL_PM 19 #define INCL_WINHOOKS 17 20 18 21 #include <os2.h> … … 45 48 struct LINKASSOC *next; 46 49 } LINKASSOC; 50 47 51 48 52 static LINKASSOC *asshead = NULL,*asstail = NULL; … … 242 246 } 243 247 244 245 248 #pragma alloc_text(ASSOC,add_association,kill_association,AssocDlgProc,EditAssociations) 246 249 … … 303 306 info = asshead; 304 307 while(info) { 305 if(!stricmp(info->mask,killme->mask) &&306 info->offset == killme->offset &&308 if(!stricmp(info->mask,killme->mask) && 309 info->offset == killme->offset && 307 310 (((!info->sig || !*info->sig) && !*killme->sig) || 308 311 (info->sig && !strcmp(killme->sig,info->sig)))) { … … 322 325 free(info->cl); 323 326 free(info->mask); 324 if(info->sig)327 if(info->sig) 325 328 free(info->sig); 326 329 free(info); … … 465 468 { 466 469 LINKASSOC *info; 467 SHORT x ;470 SHORT x , y; 468 471 469 472 switch(msg) { … … 637 640 break; 638 641 642 case ASS_BOTTOM: 643 x = (SHORT)WinSendDlgItemMsg(hwnd,ASS_LISTBOX, 644 LM_QUERYSELECTION, 645 MPFROMSHORT(LIT_FIRST), 646 MPVOID); 647 if(x >= 0) { 648 info = (LINKASSOC *)WinSendDlgItemMsg(hwnd,ASS_LISTBOX, 649 LM_QUERYITEMHANDLE, 650 MPFROMSHORT(x), 651 MPVOID); 652 if(info) { 653 if(info != asstail) { 654 if(info->next) 655 info->next->prev = info->prev; 656 if(info->prev) 657 info->prev->next = info->next; 658 if(info == asshead) 659 asshead = info->next; 660 info->next = NULL; 661 info->prev = asstail; 662 asstail->next = info; 663 asstail = info; 664 WinSendMsg(hwnd,UM_UNDO,MPVOID,MPVOID); 665 } 666 } 667 } 668 break; 639 669 case ASS_FIND: 640 670 { … … 649 679 break; 650 680 651 case DID_OK: 652 WinDismissDlg(hwnd,1); 653 break; 654 655 case DID_CANCEL: 656 WinDismissDlg(hwnd,0); 657 break; 658 659 case IDM_HELP: 660 if(hwndHelp) 661 WinSendMsg(hwndHelp,HM_DISPLAY_HELP, 662 MPFROM2SHORT(HELP_ASSOC,0), 663 MPFROMSHORT(HM_RESOURCEID)); 664 break; 665 666 case ASS_ADD: 667 { 681 case DID_OK: 682 { 668 683 ASSOC temp; 669 CHAR dummy[34]; 670 684 CHAR dummy[34];{ 685 x = (SHORT)WinSendDlgItemMsg(hwnd, 686 ASS_LISTBOX, 687 LM_QUERYSELECTION, 688 MPVOID, 689 MPVOID); 690 if(x==LIT_NONE) 691 x = (SHORT) WinSendDlgItemMsg(hwnd, 692 ASS_LISTBOX, 693 LM_SELECTITEM, 694 MPFROMSHORT(0), 695 MPFROMSHORT(TRUE)); 696 } 671 697 memset(&temp,0,sizeof(ASSOC)); 672 698 WinQueryDlgItemText(hwnd,ASS_MASK,sizeof(temp.mask),temp.mask); … … 698 724 info = add_association(&temp); 699 725 if(!info) 700 Runtime_Error(pszSrcFile, __LINE__, "add_association");726 WinDismissDlg(hwnd,1);/* Runtime_Error(pszSrcFile, __LINE__, "add_association");*/ 701 727 else { 702 728 … … 732 758 } 733 759 } 760 WinDismissDlg(hwnd,1); 761 break; 762 763 case DID_CANCEL: 764 WinDismissDlg(hwnd,0); 765 break; 766 767 case IDM_HELP: 768 if(hwndHelp) 769 WinSendMsg(hwndHelp,HM_DISPLAY_HELP, 770 MPFROM2SHORT(HELP_ASSOC,0), 771 MPFROMSHORT(HM_RESOURCEID)); 772 break; 773 774 case ASS_ADD: 775 { 776 ASSOC temp; 777 CHAR dummy[34]; 778 779 memset(&temp,0,sizeof(ASSOC)); 780 WinQueryDlgItemText(hwnd,ASS_MASK,sizeof(temp.mask),temp.mask); 781 WinQueryDlgItemText(hwnd,ASS_CL,sizeof(temp.cl),temp.cl); 782 WinQueryDlgItemText(hwnd,ASS_SIG,sizeof(temp.sig),temp.sig); 783 rstrip(temp.sig); 784 if(*temp.sig) { 785 WinQueryDlgItemText(hwnd,ASS_OFFSET,sizeof(dummy),dummy); 786 temp.offset = atol(dummy); 787 } 788 bstrip(temp.mask); 789 bstrip(temp.cl); 790 if(WinQueryButtonCheckstate(hwnd,ASS_DEFAULT)) 791 temp.flags = 0; 792 else if(WinQueryButtonCheckstate(hwnd,ASS_FULLSCREEN)) 793 temp.flags = FULLSCREEN; 794 else if(WinQueryButtonCheckstate(hwnd,ASS_MINIMIZED)) 795 temp.flags = MINIMIZED; 796 else if(WinQueryButtonCheckstate(hwnd,ASS_MAXIMIZED)) 797 temp.flags = MAXIMIZED; 798 else if(WinQueryButtonCheckstate(hwnd,ASS_INVISIBLE)) 799 temp.flags = INVISIBLE; 800 if(WinQueryButtonCheckstate(hwnd,ASS_KEEP)) 801 temp.flags |= KEEP; 802 if(WinQueryButtonCheckstate(hwnd,ASS_DIEAFTER)) 803 temp.flags |= DIEAFTER; 804 if(WinQueryButtonCheckstate(hwnd,ASS_PROMPT)) 805 temp.flags |= PROMPT; 806 info = add_association(&temp); 807 //Add will fail if mask is not changed 808 if(info) 809 { 810 811 CHAR s[1002 + CCHMAXPATH + 6]; 812 813 *s = 0; 814 WinQueryDlgItemText(hwnd,ASS_ENVIRON,1000,s); 815 bstripcr(s); 816 if(*s) 817 PrfWriteProfileString(fmprof,FM3Str,temp.cl,s); 818 sprintf(s,"%-12s \x1a %-24s %s%s%s",temp.mask, 819 temp.cl,(*temp.sig) ? 820 "[" : NullStr,(*temp.sig) ? temp.sig : NullStr, 821 (*temp.sig) ? "]" : NullStr); 822 x = (SHORT)WinSendDlgItemMsg(hwnd, 823 ASS_LISTBOX, 824 LM_INSERTITEM, 825 MPFROM2SHORT(LIT_END,0), 826 MPFROMP(s)); 827 if(x >= 0) { 828 WinSendDlgItemMsg(hwnd, 829 ASS_LISTBOX, 830 LM_SETITEMHANDLE, 831 MPFROMSHORT(x), 832 MPFROMP(info)); 833 WinSendDlgItemMsg(hwnd, 834 ASS_LISTBOX, 835 LM_SELECTITEM, 836 MPFROMSHORT(x), 837 MPFROMSHORT(TRUE)); 838 } 839 save_associations(); 840 } 841 } 734 842 break; 735 843 … … 775 883 } 776 884 break; 885 case ASS_REPLACE: 886 887 888 889 { 890 ASSOC temp; 891 CHAR dummy[34]; 892 893 y = (SHORT)WinSendDlgItemMsg(hwnd, 894 ASS_LISTBOX, 895 LM_QUERYSELECTION, 896 MPFROMSHORT(LIT_CURSOR), 897 MPVOID); 898 memset(&temp,0,sizeof(ASSOC)); 899 WinQueryDlgItemText(hwnd,ASS_MASK,sizeof(temp.mask),temp.mask); 900 WinQueryDlgItemText(hwnd,ASS_CL,sizeof(temp.cl),temp.cl); 901 WinQueryDlgItemText(hwnd,ASS_SIG,sizeof(temp.sig),temp.sig); 902 rstrip(temp.sig); 903 if(*temp.sig) { 904 WinQueryDlgItemText(hwnd,ASS_OFFSET,sizeof(dummy),dummy); 905 temp.offset = atol(dummy); 906 } 907 bstrip(temp.mask); 908 bstrip(temp.cl); 909 if(WinQueryButtonCheckstate(hwnd,ASS_DEFAULT)) 910 temp.flags = 0; 911 else if(WinQueryButtonCheckstate(hwnd,ASS_FULLSCREEN)) 912 temp.flags = FULLSCREEN; 913 else if(WinQueryButtonCheckstate(hwnd,ASS_MINIMIZED)) 914 temp.flags = MINIMIZED; 915 else if(WinQueryButtonCheckstate(hwnd,ASS_MAXIMIZED)) 916 temp.flags = MAXIMIZED; 917 else if(WinQueryButtonCheckstate(hwnd,ASS_INVISIBLE)) 918 temp.flags = INVISIBLE; 919 if(WinQueryButtonCheckstate(hwnd,ASS_KEEP)) 920 temp.flags |= KEEP; 921 if(WinQueryButtonCheckstate(hwnd,ASS_DIEAFTER)) 922 temp.flags |= DIEAFTER; 923 if(WinQueryButtonCheckstate(hwnd,ASS_PROMPT)) 924 temp.flags |= PROMPT; 925 info = add_association(&temp); 926 //Add will fail if mask is not changed 927 if(info) 928 { 929 930 CHAR s[1002 + CCHMAXPATH + 6]; 931 932 *s = 0; 933 WinQueryDlgItemText(hwnd,ASS_ENVIRON,1000,s); 934 bstripcr(s); 935 if(*s) 936 PrfWriteProfileString(fmprof,FM3Str,temp.cl,s); 937 sprintf(s,"%-12s \x1a %-24s %s%s%s",temp.mask, 938 temp.cl,(*temp.sig) ? 939 "[" : NullStr,(*temp.sig) ? temp.sig : NullStr, 940 (*temp.sig) ? "]" : NullStr); 941 x = (SHORT)WinSendDlgItemMsg(hwnd, 942 ASS_LISTBOX, 943 LM_INSERTITEM, 944 MPFROM2SHORT(LIT_END,0), 945 MPFROMP(s)); 946 if(x >= 0) { 947 WinSendDlgItemMsg(hwnd, 948 ASS_LISTBOX, 949 LM_SETITEMHANDLE, 950 MPFROMSHORT(x), 951 MPFROMP(info)); 952 WinSendDlgItemMsg(hwnd, 953 ASS_LISTBOX, 954 LM_SELECTITEM, 955 MPFROMSHORT(x), 956 MPFROMSHORT(TRUE)); 957 } 958 save_associations(); 959 } 960 } 961 { 962 ASSOC temp; 963 CHAR dummy[34]; 964 965 WinSendDlgItemMsg(hwnd, 966 ASS_LISTBOX, 967 LM_SELECTITEM, 968 MPFROMSHORT(y), 969 MPFROMSHORT(TRUE)); 970 memset(&temp,0,sizeof(ASSOC)); 971 WinQueryDlgItemText(hwnd,ASS_MASK,sizeof(temp.mask),temp.mask); 972 WinQueryDlgItemText(hwnd,ASS_SIG,sizeof(temp.sig),temp.sig); 973 rstrip(temp.sig); 974 if(*temp.sig) { 975 WinQueryDlgItemText(hwnd,ASS_OFFSET,sizeof(dummy),dummy); 976 temp.offset = atol(dummy); 977 } 978 bstrip(temp.mask); 979 PrfWriteProfileData(fmprof, 980 FM3Str, 981 temp.mask, 982 NULL, 983 0L); 984 if(!kill_association(&temp)) 985 Runtime_Error(pszSrcFile, __LINE__, "kill_association"); 986 else { 987 988 if(y >= 0) { 989 WinSendDlgItemMsg(hwnd, 990 ASS_LISTBOX, 991 LM_DELETEITEM, 992 MPFROMSHORT(y), 993 MPVOID); 994 WinSendDlgItemMsg(hwnd,ASS_LISTBOX,LM_SELECTITEM, 995 MPFROMSHORT(x-1), 996 MPFROMSHORT(TRUE)); 997 } 998 save_associations(); 999 } 1000 } 1001 break; 777 1002 } 778 1003 return 0; 779 }1004 } 780 1005 return WinDefDlgProc(hwnd,msg,mp1,mp2); 781 1006 }
Note:
See TracChangeset
for help on using the changeset viewer.
