Ejemplo n.º 1
0
//---------------------------------------------------
// Global Functions
//---------------------------------------------------
BOOL CALLBACK ConfigProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg)
	{
		case WM_INITDIALOG:
        {
            // set dialog box title
			char *tmp = PluginManager::Get()->GetPluginInterface()->description;
			SendMessage(hwndDlg, WM_SETTEXT, 0, (LPARAM)(LPCSTR)tmp);

			// enable stop and start buttons
            if(Server::Get()->IsRunning())
				DialogEnable(hwndDlg, IDC_START, FALSE);
			else
				DialogEnable(hwndDlg, IDC_STOP, FALSE);
            
            // init the tree view control
            HWND hwndTreeView = GetDlgItem(hwndDlg, IDC_TREE);

            for(int i=0; i< sizeof(gTabItems)/sizeof(gTabItems[0]); i++)
            {
                TabItem *titem = &gTabItems[i];
        
                TVINSERTSTRUCT tvitem;
                tvitem.hParent = NULL;
                tvitem.hInsertAfter = TVI_LAST;
                tvitem.item.mask = TVIF_TEXT|TVIF_PARAM;
                tvitem.item.pszText = titem->pTitle;
                tvitem.item.cchTextMax = strlen(titem->pTitle);
                tvitem.item.lParam = (LPARAM)titem;

                TreeView_InsertItem(hwndTreeView, &tvitem);
            }
            return TRUE;
        }

		case WM_APP_SERIALIZE:
        {
            TabItem *titem = GetDialogTab(hwndDlg);

            // save the state of the current tab dialog
            SendMessage(titem->hWnd, WM_APP_SERIALIZE, 0, 0);

            ConfigDialog::Get()->Serialize();

            break;
        } // WM_APP_SERIALIZE

        case WM_APP_REFRESH:
        {
            if(Server::Get()->IsRunning())
            {
				DialogEnable(hwndDlg, IDC_START, FALSE);
				DialogEnable(hwndDlg, IDC_STOP, TRUE);
            }
            else
            {
				DialogEnable(hwndDlg, IDC_START, TRUE);
				DialogEnable(hwndDlg, IDC_STOP, FALSE);
            }

            break;
        } // WM_APP_REFRESH

		case WM_COMMAND:
        {
            switch(LOWORD(wParam))
            {
                case IDOK:
                {
                    SendMessage(hwndDlg, WM_APP_SERIALIZE, 0, 0);
#ifndef _DEBUG
                    EndDialog(hwndDlg, LOWORD(wParam));
#endif
                    return TRUE;
                }

                case IDCANCEL:
                {
				    EndDialog(hwndDlg, LOWORD(wParam));
				    return TRUE;
                }

                case IDC_START:
                {
                    if(!Server::Get()->IsRunning())
                    {
						DialogEnable(hwndDlg, IDC_START, FALSE);
						DialogEnable(hwndDlg, IDC_STOP, TRUE);
                        Server::Get()->Start();
                    }
                    break;
                }

                case IDC_STOP:
                {
                    if(Server::Get()->IsRunning())
                    {
						DialogEnable(hwndDlg, IDC_START, TRUE);
						DialogEnable(hwndDlg, IDC_STOP, FALSE);
                        Server::Get()->Stop();
                    }
                    break;
                }


            }
            break;
        }

		case WM_NOTIFY:
        {
			switch(((LPNMHDR)lParam)->code) 
            {
				case TVN_SELCHANGING:
				{
                    break;
                }
				
                case TVN_SELCHANGED:
				{
                    LPNMTREEVIEW pNMTREEVIEW = (LPNMTREEVIEW)lParam;

                    TabItem *titemold = (TabItem *)pNMTREEVIEW->itemOld.lParam;
                    TabItem *titemnew = (TabItem *)pNMTREEVIEW->itemNew.lParam;

                    if (!titemnew)
                        break;
    
                    if (titemold)
                        DestroyDialogTab(titemold);

                    if (titemnew)
                        SetDialogTab(hwndDlg, titemnew);

                    break;
                }
            }
            break;
        } // WM_NOTIFY

		case WM_HELP:
		{
            LPHELPINFO pHelpInfo = (LPHELPINFO)lParam;

	        HH_POPUP popup;

	        memset(&popup, 0, sizeof(popup)); 
	        popup.cbStruct = sizeof(popup);
	        popup.hinst = ghInstance;
	        popup.idString = pHelpInfo->iCtrlId;
	        
	        popup.pt.x = pHelpInfo->MousePos.x;
	        popup.pt.y = pHelpInfo->MousePos.y;
            popup.clrBackground = -1;
	        popup.clrForeground = -1;
	        popup.rcMargins.bottom = -1;
	        popup.rcMargins.left = -1;
	        popup.rcMargins.right = -1;
	        popup.rcMargins.top = -1;
	        
	        HtmlHelp((HWND)pHelpInfo->hItemHandle, NULL, HH_DISPLAY_TEXT_POPUP, (DWORD)(LPVOID)&popup);

			break;
		}

	}
    return FALSE;
}
Ejemplo n.º 2
0
BOOL FAR PASCAL GraphOptionDlg(HWND hDlg, WORD msg, DWORD wParam, LONG lParam)
/***************************************************************************/
{
static GRAPH_OPTIONS goLocalCopy ;

INT            iTimeMilliseconds ;
TCHAR          szBuff[MiscTextLen] ;
PGRAPHSTRUCT   lgraph;

   lParam ;
   lgraph = pGraphs;

   switch(msg)
      {

      case WM_INITDIALOG:

         dwCurrentDlgID = HC_PM_idDlgOptionChart ;

         // Init the Radio button, Check boxes and text fields.

         goLocalCopy.iGraphOrHistogram =
            lgraph->gOptions.iGraphOrHistogram ;
         if (lgraph->gOptions.iGraphOrHistogram == LINE_GRAPH)
            CheckRadioButton(hDlg, ID_GRAPH, ID_HISTOGRAM, ID_GRAPH) ;
         else
            CheckRadioButton(hDlg, ID_GRAPH, ID_HISTOGRAM, ID_HISTOGRAM) ;

         CheckDlgButton(hDlg, ID_LEGEND, lgraph->gOptions.bLegendChecked) ;
         if (!(lgraph->gOptions.bLegendChecked))
            {
            // can't display valuebar w/o legend
            DialogEnable (hDlg, IDD_CHARTOPTIONSVALUEBAR, FALSE) ;
            }

         CheckDlgButton(hDlg, ID_LABELS, lgraph->gOptions.bLabelsChecked) ;
         CheckDlgButton(hDlg, ID_VERT_GRID, lgraph->gOptions.bVertGridChecked) ;
         CheckDlgButton(hDlg, ID_HORZ_GRID, lgraph->gOptions.bHorzGridChecked) ;
         CheckDlgButton(hDlg, IDD_CHARTOPTIONSVALUEBAR,
            lgraph->gOptions.bStatusBarChecked) ;

         TSPRINTF(szBuff, TEXT("%d"), lgraph->gOptions.iVertMax) ;
         SendDlgItemMessage(hDlg, ID_VERT_MAX, WM_SETTEXT, 0, (LONG) szBuff) ;

         TSPRINTF(szBuff, TEXT("%3.3f"), lgraph->gOptions.eTimeInterval) ;
         ConvertDecimalPoint (szBuff);
         SendDlgItemMessage(hDlg, IDD_CHARTOPTIONSINTERVAL, WM_SETTEXT, 0, (LONG) szBuff) ;

         // Pickup a local copy of the Graph Options.

         goLocalCopy = lgraph->gOptions ;
         LocalManualRefresh = lgraph->bManualRefresh ;

         CheckRadioButton (hDlg,
               IDD_CHARTOPTIONSMANUALREFRESH,
               IDD_CHARTOPTIONSPERIODIC,
               LocalManualRefresh ? IDD_CHARTOPTIONSMANUALREFRESH :
               IDD_CHARTOPTIONSPERIODIC) ;

         if (lgraph->bManualRefresh)
            {
            DialogEnable (hDlg, IDD_CHARTOPTIONSINTERVALTEXT, FALSE) ;
            DialogEnable (hDlg, IDD_CHARTOPTIONSINTERVAL, FALSE) ;
            }
         else
            {
            DialogEnable (hDlg, IDD_CHARTOPTIONSINTERVALTEXT, TRUE) ;
            DialogEnable (hDlg, IDD_CHARTOPTIONSINTERVAL, TRUE) ;
            }

         EditSetLimit (GetDlgItem(hDlg, ID_VERT_MAX),
            sizeof(szBuff) / sizeof(TCHAR) - 1) ;

         EditSetLimit (GetDlgItem(hDlg, IDD_CHARTOPTIONSINTERVAL),
            ShortTextLen) ;

         WindowCenter (hDlg) ;
         return(TRUE);

      case WM_COMMAND:
         switch(LOWORD(wParam))
            {
            case ID_VERT_MAX:
               if (HIWORD(wParam) == EN_CHANGE)
                  {
                  DialogText(hDlg, ID_VERT_MAX, szBuff) ;
                  swscanf(szBuff, TEXT("%d"), &goLocalCopy.iVertMax) ;
                  }
               break ;


            case IDD_CHARTOPTIONSINTERVAL:
               if (HIWORD(wParam) == EN_CHANGE)
                  {
                  goLocalCopy.eTimeInterval =
                     DialogFloat (hDlg, IDD_CHARTOPTIONSINTERVAL, NULL) ;
                  }
               break ;

            case IDD_CHARTOPTIONSPERIODIC:
            case IDD_CHARTOPTIONSMANUALREFRESH:
               // check if the Manual refresh is currently checked.
               // Then toggle the ManualRefresh button
               LocalManualRefresh =
                  IsDlgButtonChecked (hDlg, IDD_CHARTOPTIONSMANUALREFRESH) ;
               CheckRadioButton (hDlg,
                  IDD_CHARTOPTIONSMANUALREFRESH,
                  IDD_CHARTOPTIONSPERIODIC,
                  LocalManualRefresh ? IDD_CHARTOPTIONSPERIODIC :
                  IDD_CHARTOPTIONSMANUALREFRESH) ;

               // gray out time interval if necessary...
               DialogEnable (hDlg, IDD_CHARTOPTIONSINTERVALTEXT,
                  LocalManualRefresh) ;
               DialogEnable (hDlg, IDD_CHARTOPTIONSINTERVAL,
                  LocalManualRefresh) ;
               LocalManualRefresh = !LocalManualRefresh ;
               break ;

            case IDD_CHARTOPTIONSVALUEBAR:
               if (goLocalCopy.bStatusBarChecked == TRUE)
                  goLocalCopy.bStatusBarChecked = FALSE ;
               else
                  goLocalCopy.bStatusBarChecked = TRUE ;
               break ;


            case ID_LEGEND:
               if (goLocalCopy.bLegendChecked == TRUE)
                  goLocalCopy.bLegendChecked = FALSE ;
               else
                  goLocalCopy.bLegendChecked = TRUE ;

               DialogEnable (hDlg, IDD_CHARTOPTIONSVALUEBAR,
                  goLocalCopy.bLegendChecked) ;

               break ;


            case ID_LABELS:
               if (goLocalCopy.bLabelsChecked == TRUE)
                  goLocalCopy.bLabelsChecked = FALSE ;
               else
                  goLocalCopy.bLabelsChecked = TRUE ;
               break ;


            case ID_VERT_GRID:
               if (goLocalCopy.bVertGridChecked == TRUE)
                  goLocalCopy.bVertGridChecked = FALSE ;
               else
                  goLocalCopy.bVertGridChecked = TRUE ;
               break ;


            case ID_HORZ_GRID:
               if (goLocalCopy.bHorzGridChecked == TRUE)
                  goLocalCopy.bHorzGridChecked = FALSE ;
               else
                  goLocalCopy.bHorzGridChecked = TRUE ;
               break ;


            case ID_GRAPH:
            case ID_HISTOGRAM:
               if (goLocalCopy.iGraphOrHistogram == BAR_GRAPH)
                  {
                  goLocalCopy.iGraphOrHistogram = LINE_GRAPH ;
                  }
               else
                  {
                  goLocalCopy.iGraphOrHistogram = BAR_GRAPH ;
                  }
               CheckRadioButton(hDlg, ID_GRAPH, ID_HISTOGRAM,
                  goLocalCopy.iGraphOrHistogram == LINE_GRAPH ?
                  ID_GRAPH : ID_HISTOGRAM) ;

               break ;

            case IDOK:
               //  verify some numeric entries first
               if (goLocalCopy.iVertMax > MAX_VERTICAL ||
                   goLocalCopy.iVertMax < MIN_VERTICAL)
                  {
                  DlgErrorBox (hDlg, ERR_BADVERTMAX) ;
                  SetFocus (DialogControl (hDlg, ID_VERT_MAX)) ;
                  EditSetTextEndPos (hDlg, ID_VERT_MAX) ;
                  return (FALSE) ;
                  break ;
                  }
               if (goLocalCopy.eTimeInterval > MAX_INTERVALSEC ||
                   goLocalCopy.eTimeInterval < MIN_INTERVALSEC)
                  {
                  DlgErrorBox (hDlg, ERR_BADTIMEINTERVAL) ;
                  SetFocus (DialogControl (hDlg, IDD_CHARTOPTIONSINTERVAL)) ;
                  EditSetTextEndPos (hDlg, IDD_CHARTOPTIONSINTERVAL) ;
                  return (FALSE) ;
                  break ;
                  }

               // We need to send a size message to the main window
               // so it can setup the redraw of the graph and legend.

               lgraph->gOptions.bLegendChecked    = goLocalCopy.bLegendChecked ;
               lgraph->gOptions.bStatusBarChecked = goLocalCopy.bStatusBarChecked ;

               if (lgraph->gOptions.eTimeInterval != goLocalCopy.eTimeInterval
                  && !LocalManualRefresh)
                  {
                  iTimeMilliseconds = (INT) (goLocalCopy.eTimeInterval * (FLOAT) 1000.0) ;
                  pGraphs->gInterval = iTimeMilliseconds ;
                  lgraph->bManualRefresh = LocalManualRefresh ;

                  }
               else if (LocalManualRefresh != lgraph->bManualRefresh)
                  {
                  ToggleGraphRefresh (hWndGraph) ;
                  }
               // Assign the local copy of the graph options to the
               // global copy.

               lgraph->gOptions = goLocalCopy ;

//               SizeGraphComponents (hWndGraph) ;
//               WindowInvalidate (hWndGraph) ;
               dwCurrentDlgID = 0 ;
               EndDialog (hDlg, 1) ;
               return (TRUE) ;
               break ;


            case IDCANCEL:
               dwCurrentDlgID = 0 ;
               EndDialog(hDlg,0);
               return(TRUE);

            case ID_HELP:
               CallWinHelp (dwCurrentDlgID) ;
               break ;

            default:
               break;
            }
         break;

      default:
         break;

      }
   return(FALSE);
   }