;Hash Table viewing Dialog v2.01
;Creator - JoshR
;Reason for making - For people who are visual learners to assist them in hash tables
; and just to further my own experience.
;Usage - Pretty straight forward really. Just load it in to your remotes, right click, choose hash tables, and you're ready to go!
; Single click in table list to display items/values for that table
; Double click a table name to change it's name
; Single click the add hash button or the add hash option in the 'option' menu to add a hash table
; Double click an item/value or click the edit Item/value button to edit them
; upon doing so will open the edit dialog allowing you to double click an item to change it or
; the same for values.
; Single click the add item/value to add an item with or without a value.
; To use the search function be sure you choose a search type.
; To delete tables or items, the option is located in the 'options' menu.
;Updates - Everything:
; Completely redid everything on the dialog(s)
;Contact info - /query JoshR (on SwiftIRC && DALnet)
; PM me on the forums aswell (http://forum.swiftirc.net if you have an account there)
; /query JoshR (on UnderNet)
;#############################################
;#Made by: JoshR #
;#Home Server(s): Swiftirc, Undernet, DALnet #
;#Home Channel: #mIRC #ikick(swiftirc) #
;#############################################
;;MENU;;
menu * {
-
Hash Tables:/hashview
}
;;MAIN DIALOG
dialog hashview {
title "[Hash:Viewer]"
option dbu
size -1 -1 208 130
box "Tables" 1, 3 2 66 97
list 101, 5 10 62 97, vsbar hsbar
button "Add Hashtable" 102, 3 118 43 11
box "Items" 2, 71 2 66 97
list 201, 73 10 62 97, vsbar hsbar
button "Add Item/Value" 202, 46 118 45 11
box "Values" 3, 139 2 66 97
list 301, 141 10 62 97, vsbar hsbar
edit "Enter search item here" 400, 3 105 147 11
button "Search" 401, 152 105 38 11
combo 402, 152 118 38 11, drop
button "..." 501, 193 105 10 11
button "Edit Item/Values" 601, 91 118 48 11
menu "&Options" 4,
item "&Add HashTable" 5, 4
item "&Delete Hash Table" 6, 4
item break, 7, 4
item "&Exit" 8, 4
}
on *:DIALOG:hashview:init:0:{
var %a 1
did -a hashview 402 $*
while (%a <= $hget(0)) {
if ($hget(%a) != hashview) did -a hashview 101 $hget(%a)
inc %a
}
did -z hashview 101
}
on *:DIALOG:hashview:menu:*:{
if ($did == 5) {
if ($input(What would you like the table name to be?,en,[Hash:Add Table]) != $null) {
var %a $v1
if (!$hget($v1)) {
hmake %a 1000
did -a hashview 101 %a
}
else noop $input(Error: There is already a table named $+
(',
%a,'
),o,
[Hash:Add Table Alert
])
}
}
if ($did == 6) delhash
if ($did == 8) dialog -x $dname
}
on *:DIALOG:hashview:sclick:601:{
edititem
}
on *:DIALOG:hashview:sclick:501:{
var %a 1
did -r hashview 101,201,301
while (%a <= $hget(0)) {
if ($hget(%a) != hashview) did -a hashview 101 $hget(%a)
inc %a
}
did -z hashview 101,201,301
}
on *:DIALOG:hashview:sclick:401:{
if (Enter search item here == $did(400) || $did(400) == $null) {
noop $input(Error: Missing input for search.,ok30,
[Hash:Search
] - Error
)
return
}
if ($did(402) == $null) {
noop $input(Error: Please choose a type of search.,ok30,
[Hash:Search
] - Error
)
return
}
did -r hashview 101,201,301
noop $dsearch($did(400
),
$did(402
))
}
on *:DIALOG:hashview:sclick:101:{
if ($did(101).seltext) {
did -r hashview 201,301
var %a 1,%get $v1
while (%a <= $hget(%get,0).item) {
did -a hashview 201 $hget(%get,%a).item
did -a hashview 301 $hget(%get,%a).data
inc %a
}
did -z hashview 201,301
}
}
on *:DIALOG:hashview:dclick:101:{
if ($did(101).sel == 0) return
if ($input(Hashtable name change for $+(',$did(101).seltext,'),en,[Hash:Name Change])) {
if ($v1 != $null && $v1 != $did(101).seltext) {
hmake $v1 1000
var %a 1,%new $v1,%old $v2
while ($hget(%old,%a).item) {
hadd -m %new $v1 $hget(%old,%a).data
inc %a
}
hfree %old
did -o hashview 101 $did(101).sel %new
}
}
}
on *:DIALOG:hashview:sclick:102:{
if ($input(What would you like the table name to be?,en,[Hash:Add Table]) != $null) {
var %a $v1
if (!$hget($v1)) {
hmake %a 1000
did -a hashview 101 %a
}
else noop $input(Error: There is already a table named $+
(',
%a,'
),o,
[Hash:Add Table Alert
])
}
}
on *:DIALOG:hashview:sclick:201,301:did -c hashview 201,301 $did($did).sel
on *:DIALOG:hashview:sclick:202:{
additem
}
on *:DIALOG:hashview:dclick:201,301:{
edititem
}
;;;;EDIT ITEM/VALUE;;;;
dialog edititem {
title "[Hash:Item Editor]"
option dbu
size -1 -1 139 120
combo 1, 3 3 70 11, drop
box "Items" 2, 3 18 66 97
list 201, 5 26 62 97, vsbar hsbar
box "Values" 3, 71 18 66 97
list 301, 73 26 62 97, vsbar hsbar
}
on *:DIALOG:edititem:init:0:{
didtok edititem 1 32 $regsubex($str(.,$hget(0)),/./g,$hget(\n) $chr(32))
if ($did(hashview,101).seltext) {
var %a $v1,%b 1
did -ck edititem 1 $did(hashview,101).sel
while ($hget(%a,%b).item) {
did -a edititem 201 $v1
did -a edititem 301 $hget(%a,$v1)
inc %b
}
set %edititem.table $did(hashview,101).seltext
did -z edititem 201,301
}
}
on *:DIALOG:edititem:sclick:1:{
did -r edititem 201,301
var %a 1
while ($hget($did(1),%a).item) {
did -a edititem 201 $v1
did -a edititem 301 $hget($did(1),$v1)
inc %a
}
set %edititem.table $did(1)
did -z edititem 201,301
}
on *:DIALOG:edititem:dclick:201:{
var %a = $didwm(hashview,201,$did(201).seltext)
if ($input(Change the name of the item selected item $+(',$did(201).seltext,'),en,[Edit:Item])) {
if ($v1 != $null && $v1 != $did(201).seltext) {
hadd -m %edititem.table $v1 $hget(%edititem.table,$did(201).seltext)
hdel %edititem.table $did(201).seltext
did -o edititem 201 $did(201).sel $v1
did -o hashview 201 %a $v1
}
}
}
on *:DIALOG:edititem:dclick:301:{
var %a = $didwm(hashview,301,$did(301).seltext),%b = $did(edititem,201,$did(301).sel)
if ($input(Change the value of the selected item,en,[Edit:Value])) {
if ($v1 != $null && $v1 != $did(301).seltext) {
hadd -m %edititem.table %b $v1
did -o edititem 301 $did(301).sel $v1
did -o hashview 301 %a $v1
}
}
}
on *:
DIALOG:edititem:
close:0:
{
unset %edititem.*
}
;;;;ADD ITEM/VALUES;;;;
dialog additem {
title "[Hash:Add Item/Values]"
option dbu
size -1 -1 139 60
combo 1, 3 3 70 11, drop
box "Items" 2, 3 18 66 28
edit "" 201, 5 26 62 18, autohs
box "Values" 3, 71 18 66 28
edit "" 301, 73 26 62 18, autohs
button "Add Item/Value" 4, 3 47 66 11
button "Clear Fields" 5, 71 47 66 11
menu "&Options" 6
item "&Add Item/Value" 7, 6
item "&Exit" 8, 6
}
on *:DIALOG:additem:menu:*:{
if ($did == 8) dialog -x additem
if ($did == 7) { }
}
on *:DIALOG:additem:init:0:{
if ($did(hashview,101).sel) {
didtok additem 1 32 $regsubex($str(.,$hget(0)),/./g,$hget(\n) $chr(32))
did -ck additem 1 $v1
}
else didtok additem 1 32 $regsubex($str(.,$hget(0)),/./g,$hget(\n) $chr(32))
}
on *:DIALOG:additem:sclick:5:did -r additem 201,301
on *:DIALOG:additem:sclick:4:{
if ($hget($did(1),$did(201))) {
if ($input(Adding this Item will overwrite the currently loaded item of the same name. Are you OK with this?,o,[Hash:Item Alert])) {
hadd -m $did(1) $did(201) $did(301)
if ($did(1) == $did(hashview,101).seltext) {
did -o hashview 301 $didwm(hashview,201,$did(201),1) $did(301)
}
did -r additem 201,301
}
else return
}
else {
hadd -m $did(1) $did(201) $did(301)
if ($did(1) == $did(hashview,101).seltext) {
did -a hashview 201 $did(201)
did -a hashview 301 $did(301)
}
did -r additem 201,301
}
dialog -x additem
}
;;;;DELETE DIALOG;;;;
dialog delhash {
title "[Hash:Item/Table Deleter]"
option dbu
size -1 -1 140 129
combo 1, 3 3 70 11, drop
box "Items" 2, 3 18 66 97
list 201, 5 26 62 97, vsbar hsbar
box "Values" 3, 71 18 66 97
list 301, 73 26 62 97, vsbar hsbar
button "Delete Table" 4, 3 116 40 11
button "Delete Item/Value" 5, 46 116 47 11
button "Delete Value" 6, 98 116 40 11
}
on *:DIALOG:delhash:init:0:{
didtok delhash 1 32 $regsubex($str(.,$hget(0)),/./g,$hget(\n) $chr(32))
if ($did(hashview,101).sel) {
did -ck delhash 1 $v1
var %a 1,%b $v1
while $hget(%b,%a).item {
did -a delhash 201 $v1
did -a delhash 301 $hget(%b,$v1)
inc %a
}
did -z delhash 201,301
}
}
on *:DIALOG:delhash:sclick:1:{
var %a 1,%b $did(1)
did -r delhash 201,301
while $hget(%b,%a).item {
did -a delhash 201 $v1
did -a delhash 301 $hget(%b,$v1)
inc %a
}
did -z delhash 201,301
}
on *:DIALOG:delhash:sclick:4:{
if ($did(1) != $null) {
if ($input(Clicking yes will delete the table $+(',$did(1),') $crlf Are you sure you want to do this?,y,[Hash:Delete Confirmation])) {
hfree -s $did(1)
did -r delhash 201,301
if ($did(1) == $did(hashview,101).seltext) {
did -r hashview 201,301
did -d hashview 101 $did(hashview,101).sel
}
did -r delhash 1
didtok delhash 1 32 $regsubex($str(.,$hget(0)),/./g,$hget(\n) $chr(32))
}
}
}
on *:DIALOG:delhash:sclick:5:{
hdel $did(1) $did(201).seltext
if ($did(1) == $did(hashview,101).seltext) {
did -d hashview 201,301 $did(201).sel
}
did -d delhash 201,301 $did(201).sel
}
on *:DIALOG:delhash:sclick:6:{
hadd -m $did(1) $did(201).seltext $null
if ($did(1) == $did(hashview,101).seltext) {
did -d hashview 301 $did(201).sel
}
did -d delhash 301 $did(201).sel
}
;;;;ALIASES;;;;
alias hashview { dialog -mv hashview hashview }
alias -l edititem { dialog -mv edititem edititem }
alias -l addhash { dialog -mv addhash addhash }
alias -l additem { dialog -mv additem additem }
alias -l delhash { dialog -mv delhash delhash }
alias -l dsearch {
var %search $$1,%a 1
if ($$2 == exact) {
while ($hget(%a)) {
var %table $v1,%b 1
while ($hget(%table,%b).item) {
if ($v1 == %search || $hget(%table,$v1) == %search) {
if (!$didwm(hashview,101,%table)) { did -a hashview 101 %table }
else { did -a hashview 101 $chr(32) }
did -a hashview 201 $hget(%table,%b).item
did -a hashview 301 $hget(%table,%b).data
}
inc %b
}
inc %a
}
}
elseif ($$2 == wildcard) {
while ($hget(%a)) {
var %table $v1,%b 1
while ($hget(%table,%b).item) {
if (%search iswm $v1 || %search iswm $hget(%table,$v1)) {
if (!$didwm(hashview,101,%table)) { did -a hashview 101 %table }
else { did -a hashview 101 $chr(32) }
did -a hashview 201 $hget(%table,%b).item
did -a hashview 301 $hget(%table,%b).data
}
inc %b
}
inc %a
}
}
}
alias listvar {
var %i 1
aline -a @test Variable : Value
while (%i <= $var(%*,0)) {
aline -a @test $var(%*,%i) : $var(%*,%i).value
inc %i
}
}