void
JXWebBrowser::Receive
	(
	JBroadcaster*	sender,
	const Message&	message
	)
{
	if (sender == itsPrefsDialog && message.Is(JXDialogDirector::kDeactivated))
		{
		const JXDialogDirector::Deactivated* info =
			dynamic_cast<const JXDialogDirector::Deactivated*>(&message);
		assert( info != NULL );
		if (info->Successful())
			{
			JString showURLCmd, showFileContentCmd, showFileLocationCmd, composeMailCmd;
			itsPrefsDialog->GetPrefs(&showURLCmd, &showFileContentCmd,
									 &showFileLocationCmd, &composeMailCmd);

			itsSaveChangesFlag = kJFalse;
			SetShowURLCmd(showURLCmd);
			SetShowFileContentCmd(showFileContentCmd);
			SetShowFileLocationCmd(showFileLocationCmd);
			SetComposeMailCmd(composeMailCmd);
			itsSaveChangesFlag = kJTrue;

			SaveCommands();
			}
		itsPrefsDialog = NULL;
		}

	else
		{
		JXSharedPrefObject::Receive(sender, message);
		}
}
void AdvancedCompilerOptionsDlg::CheckForChanges()
{
	// changes can only happen after constructor : aka no longer (-1, -1)
	if(m_LastCmdIndex != -1 && m_LastExtIndex != -1)
	{
		SaveCommands(m_LastCmdIndex, m_LastExtIndex);
	}
} // end of CheckForChanges
bool  CompositeCommandsModule::ExecCommand(const Command& command, bool wantAnswer)
{

  if(wantAnswer)
    PublishSingleton = UNKNOWN_COMMAND;
    
  size_t argsCount = command.GetArgsCount();
  
  
  if(command.GetType() == ctGET)
  {
    if(wantAnswer)
      PublishSingleton = NOT_SUPPORTED;
  }
  else
  if(command.GetType() == ctSET)
  {
    if(argsCount < 1)
    {
      PublishSingleton = PARAMS_MISSED;
    }
    else
    {
      // есть параметры
      String which = command.GetArg(0);
      
      if(which == CC_DELETE_COMMAND) // очистить все команды
      {
        Clear();
        if(wantAnswer)
          PublishSingleton = REG_DEL; // говорим, что удалили всё

        PublishSingleton.Status = true;
      } // CC_DELETE_COMMAND
      else
      if(which == CC_SAVE_COMMAND) // сохранить команды в EEPROM
      {
        SaveCommands();
        if(wantAnswer)
          PublishSingleton = REG_SUCC; // говорим, что сохранили

        PublishSingleton.Status = true;
      } // CC_SAVE_COMMAND
      else
      if(which == CC_PROCESS_COMMAND) // выполнить команду
      {
          if(argsCount > 1)
          {
            // хватает аргументов
            uint8_t cmd = abs(atoi(command.GetArg(1)));
            ProcessCommand(cmd); // выполняем составную команду
            
            if(wantAnswer)
              PublishSingleton = REG_SUCC; // говорим, что выполнили

            PublishSingleton.Status = true;
          }
          else
          {
            // не хватает аргументов
            if(wantAnswer)
              PublishSingleton = PARAMS_MISSED;
          }
      } // CC_PROCESS_COMMAND
      else
      if(which == CC_ADD_COMMAND) // добавить параметр в список составной команды
      {
        if(argsCount > 3)
        {
          uint8_t listIdx = abs(atoi(command.GetArg(1)));
          uint8_t action = abs(atoi(command.GetArg(2)));
          uint8_t param = abs(atoi(command.GetArg(3)));
          
          AddCommand(listIdx,action,param); // добавляем команду

            if(wantAnswer)
              PublishSingleton = REG_SUCC; // говорим, что добавили

           PublishSingleton.Status = true;
        }
        else
        {
          // не хватает аргументов
            if(wantAnswer)
              PublishSingleton = PARAMS_MISSED;
        }
      } // CC_ADD_COMMAND
     
      
    } // else
  } // ctSET 
  
  // отвечаем на команду
  MainController->Publish(this,command);
    
  return PublishSingleton.Status;
  
}
pawsShortcutWindow::~pawsShortcutWindow()
{
    SaveCommands();
}
// bool pawsShortcutWindow::OnButtonPressed( int mouseButton, int keyModifier, pawsWidget* widget )
bool pawsShortcutWindow::OnButtonReleased( int mouseButton, int keyModifier, pawsWidget* widget )
{
    if (!subWidget)
        subWidget = PawsManager::GetSingleton().FindWidget("ShortcutEdit");

    if (!labelBox)
        labelBox = dynamic_cast <pawsEditTextBox*> (subWidget->FindWidget("LabelBox"));

    if (!textBox)
        textBox = dynamic_cast <pawsMultilineEditTextBox*> (subWidget->FindWidget("CommandBox"));

    if (!shortcutText)
        shortcutText = dynamic_cast <pawsTextBox*> (subWidget->FindWidget("ShortcutText"));


    // These should not be NULL
    CS_ASSERT(subWidget); CS_ASSERT(labelBox); CS_ASSERT(textBox); CS_ASSERT(shortcutText);

    BringToTop(this);

    // Finished Configuring command button
    switch ( widget->GetID() )
    {
        case DONE_BUTTON:
        {
            if (!labelBox->GetText() || *(labelBox->GetText()) == '\0')
            {
                if (textBox->GetText() && *(textBox->GetText()) != '\0')
                {
                    //no name but a command was specified.  
                    psSystemMessage msg(0,MSG_ERROR,PawsManager::GetSingleton().Translate("Please specify a name when creating a shortcut."));
                    msg.FireEvent();
                    return true;
                }
                else //shortcut is empty and will be removed. Also remove possible key binding.
                {
                    csString editedCmd;
                    editedCmd.Format("Shortcut %d",edit+1);
                    psengine->GetCharControl()->RemapTrigger(editedCmd,psControl::NONE,0,0);
                }
            }
            // Otherwise save the label and command as it is
            names[edit] = labelBox->GetText();
            cmds[edit] = textBox->GetText();
        
            CalcButtonSize();
            UpdateMatrix();
            LayoutMatrix();
            SetWindowSizeToFitMatrix();

            PawsManager::GetSingleton().SetModalWidget(NULL);
            PawsManager::GetSingleton().SetCurrentFocusedWidget(this);
            subWidget->Hide();

            pawsWidget * configKeyAsWidget = PawsManager::GetSingleton().FindWidget("ConfigKeys");
        
            pawsConfigKeys * configKey = dynamic_cast<pawsConfigKeys*>
                (configKeyAsWidget);
                
            if (configKey)
            {
                configKey->UpdateNicks();
            }                

            SaveCommands();
            return true;
        }
        case CLEAR_BUTTON:
        {
            labelBox->Clear();
            textBox->Clear();
            return true;
        }
        case CANCEL_BUTTON:
        {
            PawsManager::GetSingleton().SetModalWidget(NULL);
            PawsManager::GetSingleton().SetCurrentFocusedWidget(this);
            subWidget->Hide();
            return true;
        }
        case SETKEY_BUTTON:
        {
            pawsWidget * fingWndAsWidget;

            fingWndAsWidget = PawsManager::GetSingleton().FindWidget("FingeringWindow");
            if (fingWndAsWidget == NULL)
            {
                Error1("Could not find widget FingeringWindow");
                return false;
            }
            pawsFingeringWindow * fingWnd = dynamic_cast<pawsFingeringWindow *>(fingWndAsWidget);
            if (fingWnd == NULL)
            {
                Error1("FingeringWindow is not pawsFingeringWindow");
                return false;
            }
            fingWnd->ShowDialog(this, labelBox->GetText());
            
            return true;
        }
    }            // switch( ... )

    // Execute clicked on button
    if ( mouseButton == csmbLeft && !(keyModifier & CSMASK_CTRL))
        ExecuteCommand( widget->GetID() - SHORTCUT_BUTTON_OFFSET, false );
    // Configure the button that was clicked on
    else if ( mouseButton == csmbRight || (mouseButton == csmbLeft && (keyModifier & CSMASK_CTRL)) )
    {
        edit = widget->GetID() - SHORTCUT_BUTTON_OFFSET;
        if ( edit < 0 || edit >= NUM_SHORTCUTS )
            return false;

        if (!subWidget || !labelBox || !textBox || !shortcutText)
            return false;

        if ( names[edit] && names[edit].Length() )
            labelBox->SetText( names[edit].GetData() );
        else
            labelBox->Clear();

        if ( cmds[edit] && cmds[edit].Length() )
        {
            textBox->SetText( cmds[edit].GetData() );
            shortcutText->SetText( GetTriggerText(edit) );
        }
        else
        {
            textBox->Clear();
            shortcutText->SetText("");
        }

        subWidget->Show();
        PawsManager::GetSingleton().SetCurrentFocusedWidget(textBox);
    }
    else
    {
        return false;
    }
    return true;
}
Autoexec::~Autoexec()
{
    SaveCommands();
}