public void StartPlugin(RadegastInstance inst)
{
instance = inst;
// Get configuration settings, and initialize if not found.
config = instance.GlobalSettings["plugin.speech"] as OSDMap;
if (config == null)
{
config = new OSDMap();
config["enabled"] = new OSDBoolean(false);
config["voices"] = new OSDMap();
config["properties"] = new OSDMap();
config["substitutions"] = new OSDMap();
instance.GlobalSettings["plugin.speech"] = config;
}
if (!config.ContainsKey("enabled_for_inventory"))
{
config["enabled_for_inventory"] = true;
}
if (!config.ContainsKey("enabled_for_objects"))
{
config["enabled_for_objects"] = true;
}
if (!config.ContainsKey("enabled_for_friends"))
{
config["enabled_for_friends"] = true;
}
OSDMap props = (OSDMap)config["properties"];
if (props["voice_speed"] == "")
{
props["voice_speed"] = "medium";
}
#region Buttons on the plugin menu
// SpeechButton = new ToolStripMenuItem("Speech", null, OnSpeechMenuButtonClicked);
SpeechButton = new ToolStripMenuItem("Speech");
instance.MainForm.PluginsMenu.DropDownItems.Add(SpeechButton);
SpeechButton.Checked = config["enabled"].AsBoolean();
// Enabled sub menu
{
ToolStripMenuItem button = new ToolStripMenuItem("Enabled", null, (sender, e) =>
{
OnSpeechMenuButtonClicked(SpeechButton, EventArgs.Empty);
((ToolStripMenuItem)sender).Checked = SpeechButton.Checked;
});
button.Checked = SpeechButton.Checked;
SpeechButton.DropDownItems.Add(button);
}
SpeechButton.DropDownItems.Add(new ToolStripSeparator());
// Voice rate
{
ToolStripMenuItem slowButton = new ToolStripMenuItem("Slow");
slowButton.Name = "slow";
if (props["voice_speed"] == "slow") slowButton.Checked = true;
ToolStripMenuItem mediumButton = new ToolStripMenuItem("Medium");
if (props["voice_speed"] == "medium") mediumButton.Checked = true;
mediumButton.Name = "medium";
ToolStripMenuItem fastButton = new ToolStripMenuItem("Fast");
if (props["voice_speed"] == "fast") fastButton.Checked = true;
fastButton.Name = "fast";
slowButton.Click += (sender, e) =>
{
slowButton.Checked = !slowButton.Checked;
if (slowButton.Checked)
{
props["voice_speed"] = "slow";
mediumButton.Checked = false;
fastButton.Checked = false;
}
};
mediumButton.Click += (sender, e) =>
{
mediumButton.Checked = !mediumButton.Checked;
if (mediumButton.Checked)
{
props["voice_speed"] = "medium";
slowButton.Checked = false;
fastButton.Checked = false;
}
};
fastButton.Click += (sender, e) =>
{
fastButton.Checked = !fastButton.Checked;
if (fastButton.Checked)
{
props["voice_speed"] = "fast";
slowButton.Checked = false;
mediumButton.Checked = false;
}
};
SpeechButton.DropDownItems.Add(slowButton);
SpeechButton.DropDownItems.Add(mediumButton);
SpeechButton.DropDownItems.Add(fastButton);
}
SpeechButton.DropDownItems.Add(new ToolStripSeparator());
// Enable / disable for inventory tab
{
ToolStripMenuItem button = new ToolStripMenuItem("Inventory", null, (sender, e) =>
{
var me = (ToolStripMenuItem)sender;
me.Checked = !me.Checked;
config["enabled_for_inventory"] = me.Checked;
});
button.Name = "speech_for_inventory";
button.AccessibleName = "Speech for inventory";
button.Checked = config["enabled_for_inventory"].AsBoolean();
SpeechButton.DropDownItems.Add(button);
}
// Enable / disable for objects tab
{
ToolStripMenuItem button = new ToolStripMenuItem("Objects", null, (sender, e) =>
{
var me = (ToolStripMenuItem)sender;
me.Checked = !me.Checked;
config["enabled_for_objects"] = me.Checked;
});
button.Name = "speech_for_objects";
button.AccessibleName = "Speech for objects";
button.Checked = config["enabled_for_objects"].AsBoolean();
SpeechButton.DropDownItems.Add(button);
}
// Enable / disable for friends tab
{
ToolStripMenuItem button = new ToolStripMenuItem("Friends", null, (sender, e) =>
{
var me = (ToolStripMenuItem)sender;
me.Checked = !me.Checked;
config["enabled_for_friends"] = me.Checked;
});
button.Name = "speech_for_friends";
button.AccessibleName = "Speech for friends";
button.Checked = config["enabled_for_friends"].AsBoolean();
SpeechButton.DropDownItems.Add(button);
}
SpeechButton.DropDownItems.Add(new ToolStripSeparator());
// 3D Sound sub menu
{
ToolStripMenuItem button = new ToolStripMenuItem("3D Sound", null, (sender, e) =>
{
var me = (ToolStripMenuItem)sender;
me.Checked = !me.Checked;
config["3d_sound"] = me.Checked;
instance.GlobalSettings.Save();
Radegast.Media.Speech.Surround = me.Checked;
});
button.Checked = config["3d_sound"].AsBoolean();
Radegast.Media.Speech.Surround = button.Checked;
SpeechButton.DropDownItems.Add(button);
}
#endregion Buttons on the plugin menu
if (SpeechButton.Checked)
{
Initialize();
}
instance.GlobalSettings.Save();
instance.MainForm.KeyDown += MainForm_KeyDown;
}