K-Meleon
Submitted by: JamesD
Notes:
Groups MultiSearch allows user to maintain more than one group of search engines for MultiSearch and swap between them easily.
Open your User Macro Folder (Edit > Configuration > User-Defined Macros) or your Macro Folder (Edit > Configuration > Macros) and create the following text file:
# K-Meleon Macros (http://kmeleon.sourceforge.net/wiki/index.php?id=MacroLanguage)
#
# ---------- Grp_M_Search.kmm
# ---------- Setup groups of search URLs for use with multisearch ---------------
# ---------- Allow setup, deletion and choice of group
#
# Dependencies : main.kmm
# Resources :
# Preferences : k-meleon_search_group.<name><0,1,..>
# : k-meleon_search_group.names
# : kmeleon.plugins.macros.search.meta<0,1,..>.url
# Version : 2.0 2010-08-19
# Author : JamesD
# --------------------------------------------------------------------------------
##### ADDITIONS
_Grp_M_Search_Add {
macroinfo = _("Save the current multisearch engines as a group.");
$_Grp_M_Search_m1 = "kmeleon.plugins.macros.search.meta";
$_Grp_M_Search_m3 = ".url";
$_Grp_M_Search_CUrls = "";
$_Grp_M_Search_cnt = 0;
while($_Grp_M_Search_cnt != -1) {
$_Grp_M_Search_URL = getpref(STRING, $_Grp_M_Search_m1.$_Grp_M_Search_cnt.$_Grp_M_Search_m3);
if (length($_Grp_M_Search_URL) != 0) {
$_Grp_M_Search_CUrls = $_Grp_M_Search_CUrls ."\n".$_Grp_M_Search_URL ;
$_Grp_M_Search_cnt = $_Grp_M_Search_cnt +1 ;
} else {
$_Grp_M_Search_cnt = -1;
}
}
$_Grp_M_Search_Text = _("\n\nThe search URLs listed above are your current")."\n";
$_Grp_M_Search_Text=$_Grp_M_Search_Text._("multisearch engines. To make them a named group")."\n";
$_Grp_M_Search_Text=$_Grp_M_Search_Text._("of engines, provide a unique name for them at")."\n";
$_Grp_M_Search_Text=$_Grp_M_Search_Text._("the prompt which follows. ( click for prompt )");
alert($_Grp_M_Search_CUrls.$_Grp_M_Search_Text, _("Current multisearch engine URLs"), INFO);
macros(_Grp_M_Search_Add1);
}
_Grp_M_Search_Add1 {
$_Grp_M_Search_PNewName = prompt(_("Name cannot contain the % character"),_("Assign a name for this group"));
## catch cancel
$_Grp_M_Search_PNewName == "" ? &_Grp_M_Search_CancelA : &_Grp_M_Search_Add1a ;
}
_Grp_M_Search_Add1a {
## catch % delimiter in name
index($_Grp_M_Search_PNewName,"%") > 0 ? &_Grp_M_Search_percent : &_Grp_M_Search_Add1b ;
}
_Grp_M_Search_Add1b {
## catch duplicate name
macros(_Grp_M_Search_AddV);
$_Grp_M_Search_Dup == true ? &_Grp_M_Search_Duplicate : &_Grp_M_Search_Add2 ;
}
_Grp_M_Search_CancelA {
$_Grp_M_Search_Can = confirm(_("Did you mean to cancel?"), _("Prompt was cancelled"),YESNO,QUESTION);
$_Grp_M_Search_Can == "YES" ? 0 : &_Grp_M_Search_Add1 ;
}
_Grp_M_Search_percent {
$_Grp_M_Search_Pct = confirm(_("The name ").$_Grp_M_Search_PNewName._(" contains a %."), _("% character not allowed."),RETRYCANCEL,QUESTION);
$_Grp_M_Search_Pct == 0 ? 0 : &_Grp_M_Search_Add1 ;
}
_Grp_M_Search_Duplicate {
$_Grp_M_Search_Dv = confirm(_("The name ").$_Grp_M_Search_PNewName._(" is currently used."), _("Duplicate name"),RETRYCANCEL,QUESTION);
$_Grp_M_Search_Dv == 0 ? 0 : &_Grp_M_Search_Add1 ;
}
_Grp_M_Search_Add2 {
$_Grp_M_Search_cnt = 0;
while($_Grp_M_Search_cnt != -1) {
$_Grp_M_Search_URL = getpref(STRING, $_Grp_M_Search_m1.$_Grp_M_Search_cnt.$_Grp_M_Search_m3);
if (length($_Grp_M_Search_URL) != 0) {
setpref(STRING,"k-meleon_search_group.".$_Grp_M_Search_PNewName.$_Grp_M_Search_cnt,$_Grp_M_Search_URL);
$_Grp_M_Search_cnt = $_Grp_M_Search_cnt +1 ;
} else {
$_Grp_M_Search_cnt = -1;
}
}
setpref(STRING,"k-meleon_search_group.names", getpref(STRING,"k-meleon_search_group.names").$_Grp_M_Search_PNewName . "%");
# add group to inline menu
macros(_Grp_M_Search_BuildMenuGrp);
}
_Grp_M_Search_AddV {
$_Grp_M_Search_Names = getpref(STRING,"k-meleon_search_group.names");
$_Grp_M_Search_NBreak = 0;
$_Grp_M_Search_Dup = false ;
while( $_Grp_M_Search_NBreak != -1) {
$_Grp_M_Search_NBreak = index($_Grp_M_Search_Names, "%");
$_Grp_M_Search_Name = substr($_Grp_M_Search_Names,0,$_Grp_M_Search_NBreak);
if ($_Grp_M_Search_Name == $_Grp_M_Search_PNewName) {
$_Grp_M_Search_Dup = true ;
$_Grp_M_Search_NBreak = -1;
} else {
$_Grp_M_Search_Names = substr($_Grp_M_Search_Names, $_Grp_M_Search_NBreak +1);
}
}
}
_Grp_M_Search_UseGrp {
## first remove existing multisearch prefs
$_Grp_M_Search_m1 = "kmeleon.plugins.macros.search.meta";
$_Grp_M_Search_m3 = ".url";
$_Grp_M_Search_cnt = 0;
while($_Grp_M_Search_cnt != -1) {
$_Grp_M_Search_URL = getpref(STRING,$_Grp_M_Search_m1.$_Grp_M_Search_cnt.$_Grp_M_Search_m3);
if ($_Grp_M_Search_URL != "") {
delpref($_Grp_M_Search_m1.$_Grp_M_Search_cnt.$_Grp_M_Search_m3);
$_Grp_M_Search_cnt = $_Grp_M_Search_cnt +1 ;
} else { $_Grp_M_Search_cnt = -1;
}
}
## read group urls and write them to multisearch prefs
$_Grp_M_Search_m2 = "k-meleon_search_group." ;
$_Grp_M_Search_m1 = "kmeleon.plugins.macros.search.meta";
$_Grp_M_Search_m4 = ".url";
$_Grp_M_Search_cnt = 0;
while($_Grp_M_Search_cnt != -1) {
$_Grp_M_Search_URL = getpref(STRING,$_Grp_M_Search_m2.$ARG.$_Grp_M_Search_cnt);
if ($_Grp_M_Search_URL != "") {
setpref(STRING,$_Grp_M_Search_m1.$_Grp_M_Search_cnt.$_Grp_M_Search_m4,$_Grp_M_Search_URL);
$_Grp_M_Search_cnt = $_Grp_M_Search_cnt +1 ;
} else {
## if URL missing check cnt < 3 then output missing
if ( $_Grp_M_Search_cnt < 3 ) {
setpref(STRING,$_Grp_M_Search_m1.$_Grp_M_Search_cnt.$_Grp_M_Search_m4,"");
$_Grp_M_Search_cnt = $_Grp_M_Search_cnt +1 ;
} else {
$_Grp_M_Search_cnt = -1;
}
}
}
}
########## DELETES
_Grp_M_Search_Del {
macroinfo = _("Delete an existing multisearch group.");
$_Grp_M_Search_Names = getpref(STRING,"k-meleon_search_group.names");
## only 62 character display in prompt - display other name in statusbar
if (length($_Grp_M_Search_Names) > 62 ) {
macros(_Grp_M_Search_LongList);
$_Grp_M_Search_Na62 = substr($_Grp_M_Search_Names, 0 , $_Grp_M_Search_pcp);
$_Grp_M_Search_Na63 = substr($_Grp_M_Search_Names, $_Grp_M_Search_pcp +1 );
statusbar("Additional Names >> ".$_Grp_M_Search_Na63);
$_Grp_M_Search_Delete = prompt($_Grp_M_Search_Na62, _("For delete, enter name without the %"));
statusbar("");
} else {
$_Grp_M_Search_Delete = prompt($_Grp_M_Search_Names, _("For delete, enter name without the %"));
statusbar("");
}
## catch cancel
$_Grp_M_Search_Delete == "" ? &_Grp_M_Search_CancelD : &_Grp_M_Search_Missing ;
}
_Grp_M_Search_LongList {
## compute position last delimiter in first 62 string
$_Grp_M_Search_pos = 61 ;
while($_Grp_M_Search_pos != -1 ) {
if (substr( $_Grp_M_Search_Names, $_Grp_M_Search_pos, 1 ) == "%") {
$_Grp_M_Search_pcp = $_Grp_M_Search_pos;
$_Grp_M_Search_pos = -1 ;
} else { $_Grp_M_Search_pos = $_Grp_M_Search_pos -1 ; }
}
}
_Grp_M_Search_Missing {
## catch missing
macros(_Grp_M_Search_DelV);
$_Grp_M_Search_Mis == true ? &_Grp_M_Search_misx : &_Grp_M_Search_Del2 ;
}
_Grp_M_Search_CancelD {
$_Grp_M_Search_Can = confirm(_("Did you mean to cancel?"), _("Prompt was cancelled"),YESNO,QUESTION);
$_Grp_M_Search_Can == "YES" ? 0 : &_Grp_M_Search_Del ;
}
_Grp_M_Search_misx {
$_Grp_M_Search_mis = confirm(_("The name ").$_Grp_M_Search_Delete._(" is not found."), _("Not in list"),RETRYCANCEL,QUESTION);
$_Grp_M_Search_mis == 0 ? 0 : &_Grp_M_Search_Del ;
}
_Grp_M_Search_Del2 {
$_Grp_M_Search_Names = getpref(STRING,"k-meleon_search_group.names");
$_Grp_M_Search_NewNames = gsub($_Grp_M_Search_Delete."%", "", $_Grp_M_Search_Names );
setpref(STRING,"k-meleon_search_group.names",$_Grp_M_Search_NewNames);
$_Grp_M_Search_m2 = "k-meleon_search_group." ;
$_Grp_M_Search_cnt = 0;
while($_Grp_M_Search_cnt != -1) {
$_Grp_M_Search_URL = getpref(STRING,$_Grp_M_Search_m2.$_Grp_M_Search_Delete.$_Grp_M_Search_cnt);
if ($_Grp_M_Search_URL != "") {
delpref($_Grp_M_Search_m2.$_Grp_M_Search_Delete.$_Grp_M_Search_cnt);
$_Grp_M_Search_cnt = $_Grp_M_Search_cnt +1 ;
} else {
$_Grp_M_Search_cnt = -1;
}
}
# delete group from inline menu
macros(_Grp_M_Search_BuildMenuGrp);
}
_Grp_M_Search_DelV {
$_Grp_M_Search_Names = getpref(STRING,"k-meleon_search_group.names");
$_Grp_M_Search_Mis = true ;
$_Grp_M_Search_NBreak = 0;
while( $_Grp_M_Search_NBreak != -1) {
$_Grp_M_Search_NBreak = index($_Grp_M_Search_Names, "%");
$_Grp_M_Search_Name = substr($_Grp_M_Search_Names,0,$_Grp_M_Search_NBreak);
$_Grp_M_Search_Name == $_Grp_M_Search_Delete ? $_Grp_M_Search_Mis = false :0 ;
$_Grp_M_Search_Names = substr($_Grp_M_Search_Names, $_Grp_M_Search_NBreak +1);
}
}
###### INSTRUCTIONS
_Grp_M_Search_Help {
macroinfo = _("Present help on saving multisearch groups.");
$_GMS1 = _("First")."\n";
$_GMS1=$_GMS1._("Use the dialog in 'Tools - Web Search - Configure' to set multisearch")." \n";
$_GMS1=$_GMS1._("to have the search engines that you require for a group.")." \n";
$_GMS1a = _("If you have installed Search+, the the dialog may be reach by")." \n";
$_GMS1a=$_GMS1a._("'Tools - Web Search - Search Options - Configure Search Engines'.")." \n\n";
$_GMS2 = _("Second")." \n";
$_GMS2=$_GMS2._("Use the 'Add Group' item in 'Group Multisearch' to give the search engines")." \n";
$_GMS2=$_GMS2._("in multisearch a name and store them as a group.")." \n\n";
$_GMS3 = _("Third")." \n";
$_GMS3=$_GMS3._("Repeat the first and second steps using search engines required for")." \n";
$_GMS3=$_GMS3._("other groups.")." \n\n\n";
$_GMS4 = _("To insert one of your groups to be the current multisearch list of engines,")." \n";
$_GMS4=$_GMS4._("just click on the group name in the inline menu. You may then search as")." \n";
$_GMS4=$_GMS4._("you are accustomed.");
alert($_GMS1.$_GMS1a.$_GMS2.$_GMS3.$_GMS4, _("Instructions"), INFO);
}
_Grp_M_Search_BuildMenu {
$_g = _("Group Multisearch");
setmenu("WebServices",popup,$_g,1);
setmenu($_g,macro,_("Add Group"),_Grp_M_Search_Add,0);
setmenu($_g,macro,_("Delete Group"),_Grp_M_Search_Del,1);
setmenu($_g,macro,_("Help"),_Grp_M_Search_Help,2);
setmenu($_g,separator,3);
macros(_Grp_M_Search_BuildMenuGrp);
}
_Grp_M_Search_BuildMenuGrp {
$_g = _("Group Multisearch");
$_m = "_MSGrps";
setmenu($_g, inline, $_m);
$_Grp_M_Search_ExistCnt = getpref(INT,"k-meleon_search_group.count");
$_Grp_M_Search_Names = getpref(STRING,"k-meleon_search_group.names");
$__incr = 0;
$_Grp_M_Search_NBreak = 0;
while( $_Grp_M_Search_NBreak != -1) {
$_Grp_M_Search_NBreak = index($_Grp_M_Search_Names, "%");
$_Grp_M_Search_Name = substr($_Grp_M_Search_Names,0,$_Grp_M_Search_NBreak);
if (length($_Grp_M_Search_Name) != 0) {
setmenu($_m, macro, $_Grp_M_Search_Name, "_Grp_M_Search_UseGrp(" . $_Grp_M_Search_Name . ")");
$_Grp_M_Search_Names = substr($_Grp_M_Search_Names, $_Grp_M_Search_NBreak +1);
}
$__incr = $__incr +1 ;
$_Grp_M_Search_Delete != "" ? setmenu($_m, macro, $_Grp_M_Search_Delete, "") : 0;
}
rebuildmenu($_g);
rebuildmenu($_m);
$_Grp_M_Search_Delete="";
}
_Grp_M_Search_Initial {
$_Grp_M_Search_Delete="";
}
## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$OnInit=$OnInit."_Grp_M_Search_Initial;_Grp_M_Search_BuildMenu;";
$macroModules=$macroModules."Grp_M_Search;";