AutoHotkey Community

It is currently May 26th, 2012, 10:44 am

All times are UTC [ DST ]




Post new topic Reply to topic  [ 1 post ] 
Author Message
PostPosted: May 2nd, 2005, 1:45 pm 
Offline

Joined: October 19th, 2004, 12:11 pm
Posts: 102
Here is a simple ROT13 and ROT47 text convertor.

Note:
-The default Edit box content is your text clipboard, so you can call the script from a hotkey and whatever you've just copied will be right there ready for conversion.
-An ini file is created after the first run to save your default settings.
-The actual conversions are written as function calls, so you can easily pinch them for another script if you need.

Enjoy.

Image
C
Code:
#NoTrayIcon
OnExit, SaveSettings
StringCaseSense, On
AutoTrim, Off

IniRead, ROT, ROT13-47.ini, Settings, ROT, 13
IniRead, AutoClip, ROT13-47.ini, Settings, AutoClip, 1
IniRead, OnTop, ROT13-47.ini, Settings, AlwaysOnTop, 1

Gui, Add, Text,, Enter text to convert.
Gui, Add, Edit, r10 w300 vText_orig, %clipboard%
Gui, Add, Button, w50 Default, &Convert
Gui, Add, Button, w50 x+200 Quit, Quit
If ROT=13
  {
  Gui, Add, Radio, xm vROT_type checked, ROT-13
  Gui, Add, Radio,, ROT-47
  }
else
  {
  Gui, Add, Radio, xm vROT_type, ROT-13
  Gui, Add, Radio, checked, ROT-47
  }
If AutoClip=1
  Gui, Add, Checkbox, vAutoClip checked, Auto-copy result to clipboard?
else
  Gui, Add, Checkbox, vAutoClip, Auto-copy result to clipboard?
If OnTop=1
  {
  Gui, Add, Checkbox, vOnTop gOnTop checked, Always On Top?
  Gui, +ALWAYSONTOP
  }
else
  Gui, Add, Checkbox, vOnTop gOnTop, Always On Top?
Gui, Add, Text,vProcessing w200,
Gui, Show
WinSetTitle,,Enter text to convert , ROT-13/ROT-47 Conversion Tool
return

ButtonConvert:
GuiControl,,Processing, Converting... please wait.
GuiControl, Disable, Button1
Gui, Submit, NoHide
If ROT_type=1
  {
  New_text:= ROT13(Text_orig)
  GuiControl,, Text_orig, %New_text%
  If AutoClip=1
    clipboard = %New_text%
  }
If ROT_type=2
  {
  New_text:= ROT47(Text_orig)
  GuiControl,, Text_orig, %New_text%
  If AutoClip=1
    clipboard = %New_text%
  }
GuiControl,,Processing,
GuiControl, Enable, Button1
return

ButtonQuit:
ExitApp

GuiClose:
ExitApp

SaveSettings:
Gui, Submit
If ROT_type=1
  IniWrite, 13, ROT13-47.ini, Settings, ROT
else
  IniWrite, 47, ROT13-47.ini, Settings, ROT
If AutoClip=1
  IniWrite, 1, ROT13-47.ini, Settings, AutoClip
else
  IniWrite, 0, ROT13-47.ini, Settings, AutoClip
If OnTop=1
  IniWrite, 1, ROT13-47.ini, Settings, AlwaysOnTop
else
  IniWrite, 0, ROT13-47.ini, Settings, AlwaysOnTop
ExitApp 
 
 
OnTop:
Winset, AlwaysOnTop, toggle
return


ROT13(Text_orig)
{
  StringCaseSense, On
  AutoTrim, Off
  StringLen, length, Text_orig
  source=abcdefghijklmnopqrstuvwxyz
  sourcecaps=ABCDEFGHIJKLMNOPQRSTUVWXYZ
  StringSplit, source, source
  StringSplit, sourcecaps, sourcecaps
  StringSplit, Text_orig, Text_orig

  Loop, %length% 
  {
  char_pos=%A_INDEX%
  Loop, 26
    {
    comp_char:=source%A_INDEX%
    If Text_orig%char_pos% = %comp_char%
      {
      replace_no := A_Index+13
        If replace_no > 26
          replace_no -=26
        Text_orig%char_pos% := source%replace_no%
      break
      }
    comp_char:=sourcecaps%A_INDEX%
    If Text_orig%char_pos% = %comp_char%
      {
      replace_no := A_Index+13
      If replace_no > 26
        replace_no -=26
      Text_orig%char_pos% := sourcecaps%replace_no%
      break
      }
    }
  }
 
  ;recombine string
  Text_new=
  Loop, %length%
  {
  new_char:=Text_orig%A_INDEX%
  Text_new=%Text_New%%new_char%
  }
  return Text_new
}

ROT47(Text_orig)
{
  StringCaseSense, On
  AutoTrim, Off
  StringLen, length, Text_orig
  source=!"#$`%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_``abcdefghijklmnopqrstuvwxyz{|}~
  StringSplit, source, source
  StringSplit, Text_orig, Text_orig
 
  Loop, %length%  ;process submitted string
  {
  char_pos=%A_INDEX%
  Loop, 94
    {
    comp_char:=source%A_INDEX%
    If Text_orig%char_pos% = %comp_char%
      {
      replace_no := A_Index+47
      If replace_no > 94
        replace_no -=94
      Text_orig%char_pos% := source%replace_no%
      break
      }
     }
  }
 
  ;recombine string
  Text_new=
  Loop, %length%
  {
  new_char:=Text_orig%A_INDEX%
  Text_new=%Text_New%%new_char%
  }
  return Text_new
}


Report this post
Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 1 post ] 

All times are UTC [ DST ]


Who is online

Users browsing this forum: Google [Bot], sks, toddintr and 9 guests


You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Group