Skip to content

Commit

Permalink
Merge pull request #33 from fastfinge/gui-work
Browse files Browse the repository at this point in the history
Wait why didn't it add the new files
  • Loading branch information
fastfinge authored Feb 6, 2024
2 parents 5d36886 + c7b8edd commit 6b1bedb
Show file tree
Hide file tree
Showing 3 changed files with 261 additions and 0 deletions.
15 changes: 15 additions & 0 deletions adispeak/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# adispeak
Solution to make AdiIRC interface with screen readers.

## Latest Preconfigured Adispeak

Get adispeak alpha 0.2.3 from:
https://github.com/fastfinge/adispeak/releases/download/v_0.2.3/adispeak_0.2.3.zip

## Installing

Put everything in adispeak\bin\x64\release into the same folder as AdiIRC.exe. Run AdiIRC.exe, go to file, plugins, then load. Load adispeak.dll. It should work!

## Building

Have Visual Studio 2017. Do the obvious things; the project should come with everything you need!
85 changes: 85 additions & 0 deletions adispeak/changelog.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
alpha 0.1

-- First release

alpha 0.1.1

-- Fix some hardcoded paths preventing the client from running at all

Alpha 0.1.2

-- add missing spaces in some messages (thanks arfy)

Alpha 0.1.3

-- Added an app config for those running as admin or without UAC (thanks byron)

Alpha 0.1.4

-- Make the changelog public
-- added /sapion command to force use of SAPI, and /sapioff to go back to screen reader. This setting is not saved when the client is restarted. It's just a quick skeleton feature for people who want it (looking at you, Robert).
-- announce the window name when entering a new window with control tab (thanks groundplane)
-- get the version info out of the title bar, and remove an inaccessible icon from the menubar
-- make messages less verbose in the currently active window (for example, don't announce "fastfinge in #blind says" when #blind is the active window. Instead just "fastfinge says")

Alpha 0.1.4.1

-- Whenever you use the GUI, all paths become full rather than relative. Fixed them again.

Alpha 0.1.5

upgrading:

If you don't want to lose all of your settings, copy plugins\adispeak.dll, AdiIRC.exe, and history.mrc into your existing AdiIRC folder.

changes:

-- The topic of a channel is now read when you join it. (thanks arfy and Per Amundsen)
-- Added a space in the quit message (thanks arfy)
-- fixed your emoting with /me
-- autocomplete now reads on tab
-- shift+c to copy a message to the clipboard from the f6 history window now works (thanks arfy)
-- sapion and sapioff now give feedback
-- the options list and server list now read (thanks Per Amundsen)
-- New way of reviewing history, without opening a new window or pressing f6: alt+shift+up arrow for previous line, alt+shift+down arrow for next line, and control+shift+c to copy current history line to clipboard. This should sync with the scrollbar for sighted users.

Alpha 0.2

upgrading:

If you don't want to lose all of your settings, copy plugins\adispeak.dll, AdiIRCAPIv2.dll, Newtonsoft.Json.dll, Newtonsoft.Json.xml, and AdiIRC.exe into your existing AdiIRC folder.

-- The person who set the topic, and the time the topic was set now read on channel join (Thanks arfy, for being the first person other than me to contribute code to adispeak!)
-- the nick list now reads (thanks Per Amundsen)
-- nick changes now read correctly (thanks Per Amundsen)
-- full sourcecode is now on github (so no longer included here)
-- fixed a terrible stupid bug in the /braille command (question: did I ever get around to telling anyone there was a /braille command? No wonder nobody tested it)
-- history review system: control+shift+space now reads the current message (thanks to code by Arfy)
-- history review system: last line of the window is now no longer always blank (thanks to code fixes by Arfy)
-- history review system: reviewing history no longer puts text in the edit box (more Arfy code)
-- color codes are now stripped from messages
-- f2 now interrupts sapi
-- /whois and /whowas now read (Yay arfy!)
-- f3 toggles between sapi and speech
-- f4 and f5 turn speech on and off globally, or per window

ALPHA 0.2.1

Upgrading:

If you don't want to lose all of your settings, copy plugins\adispeak.dll, AdiIRCAPIv2.dll, Newtonsoft.Json.dll, Newtonsoft.Json.xml, and AdiIRC.exe into your existing AdiIRC folder.

-- ctrl+f4 to close a window should no longer also disable speech
-- Documentation in readme.html (thanks Mike for writing the entire thing!)

alpha 0.2.2

-- upgraded libraries, got github releases working

alpha 0.2.3

-- Fixed: servers that support IRCV3 echo-message extension no longer have all of your messages read twice by ADIIRC.

KNOWN issues

This section has been moved to github. Please file bugs you find here: https://github.com/fastfinge/adispeak/issues
161 changes: 161 additions & 0 deletions adispeak/gui.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Collections.Generic;

namespace adispeak
{

public class ConfigGui: Form
{
private bool locked;
private TreeView treeView;
private Button okButton;
private Config conf;
private Dictionary<string, bool> items;
private Dictionary <string, bool> AvailableOptions = new Dictionary <string, bool>
{
{"OnChannelActionMessage", true},
{"OnChannelCtcpMessage", true},
{"OnChannelCtcpReplyMessage", true},
{"OnChannelInvite", true},
{"OnChannelJoin", true},
{"OnChannelKick", true},
{"OnChannelModeListBan", true},
{"OnChannelModeListBanExempt", true},
{"OnChannelModeListBanUnexempt", true},
{"OnChannelModeListInviteExempt", true},
{"OnChannelModeListInviteUnexempt", true},
{"OnChannelModeListQuiet", true},
{"OnChannelModeListUnban", true},
{"OnChannelModeListUnquiet", true},
{"OnChannelModeUserAdmined", true},
{"OnChannelModeUserDeadmined", true},
{"OnChannelModeUserDehalfOpped", true},
{"OnChannelModeUserDeopped", true},
{"OnChannelModeUserDeownered", true},
{"OnChannelModeUserDevoiced", true},
{"OnChannelModeUserHalfOpped", true},
{"OnChannelModeUserOpped", true},
{"OnChannelModeUserOwnered", true},
{"OnChannelModeUserVoiced", true},
{"OnChannelNormalMessage", true},
{"OnChannelNoticeMessage", true},
{"OnChannelPart", true},
{"OnChannelServerModeListBan", true},
{"OnChannelServerModeListBanExempt", true},
{"OnChannelServerModeListBanUnexempt", true},
{"OnChannelServerModeListInviteExempt", true},
{"OnChannelServerModeListInviteUnexempt", true},
{"OnChannelServerModeListQuiet", true},
{"OnChannelServerModeListUnban", true},
{"OnChannelServerModeListUnquiet", true},
{"OnChannelServerModeUserAdmined", true},
{"OnChannelServerModeUserDeadmined", true},
{"OnChannelServerModeUserDehalfOpped", true},
{"OnChannelServerModeUserDeopped", true},
{"OnChannelServerModeUserDeownered", true},
{"OnChannelServerModeUserDevoiced", true},
{"OnChannelServerModeUserHalfOpped", true},
{"OnChannelServerModeUserOpped", true},
{"OnChannelServerModeUserOwnered", true},
{"OnChannelServerModeUserVoiced", true},
{"OnChannelTopic", true},
{"OnConnect", true},
{"OnConnectFailure", true},
{"OnConnectionLogonSuccess", true},
{"OnDisconnect", true},
{"OnMessageSent", true},
{"OnNick", true},
{"OnNotifyUserOffline", true},
{"OnNotifyUserOnline", true},
{"OnPrivateActionMessage", true},
{"OnPrivateCtcpMessage", true},
{"OnPrivateNormalMessage", true},
{"OnPrivateNoticeMessage", true},
{"OnQuit", true},
{"OnServerErrorMessage", true},
{"OnServerNoticeMessage", true},
{"OnUserInvitedToChannel", true},
{"OnUserMode", true}
};

public ConfigGui(Config confparm)
{
conf = confparm;
treeView = new TreeView();
treeView.CheckBoxes = true;
treeView.AfterCheck += new TreeViewEventHandler(treeView_AfterCheck);
items = conf.GetWindowList();
locked = true;
foreach (var item in items)
{
treeView.Nodes.Add(item.Key, item.Key);
foreach (var option in AvailableOptions)
{
if (option.Key != "speech")
{
treeView.Nodes[item.Key].Nodes.Add(option.Key, option.Key);
treeView.Nodes[item.Key].Nodes[option.Key].Checked = conf.GetWindow(item.Key, option.Key);
}
else
{
treeView.Nodes[item.Key].Checked = conf.GetWindow(item.Key, option.Key);
}
}
}
treeView.Dock = DockStyle.Fill;
Controls.Add(treeView);
locked = false;
okButton = new Button();
okButton.Text = "OK";
okButton.Dock = DockStyle.Bottom;
okButton.Click += new EventHandler(okButton_Click);
Controls.Add(okButton);

this.Size = new System.Drawing.Size(300, 300);
this.Show();
}

private void treeView_AfterCheck(object sender, TreeViewEventArgs e)
{
if (locked == false)
{
ToggleNode(e.Node);
}
}

private void ToggleNode(TreeNode node)
{
if (node.Parent != null)
{
locked = true;
foreach (TreeNode tempnode in node.Parent.Nodes)
{
if (tempnode.Checked == true)
{
node.Parent.Checked = true;
}
}
conf.SetWindow(node.Parent.Name, node.Name, node.Checked);
locked = false;
}
else
{
locked = true;
conf.SetWindow(node.Name, "speech", node.Checked);
foreach (TreeNode tempnode in node.Nodes)
{
tempnode.Checked = node.Checked;
}
locked = false;
}
}

private void okButton_Click(object sender, EventArgs e)
{
conf.Write("speech.json");
this.Hide();
}
}
}

0 comments on commit 6b1bedb

Please sign in to comment.