K-Meleon
KMeleonWiki > Resources > MacroLibrary > KmmGroups2
Submitted by: JamesD and desga2
Notes:
Groups2.kmm adds a limited groups function for KM version 1.5 and later. It does not replace Sessions, but can be used in addition to sessions. Groups2 can add a tab or group of tabs without clearing currently open tabs.
To save a group have a tab or multiple tabs open to the pages you desire and choose 'Save a Group' from the menu.
There are three ways to load a group. 1) You can click on the group's name in the menu. 2) You can enter the group's name in the URL bar and press ALT + ENTER. 3) You can use the 'Load a Group' item from the menu. This will pop up a box where you can enter the group name. Note that this method will clear any currently open tabs.
Updates:
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)
# File name: Groups2.kmm
# ---------- Groups2 in tabs for K-Meleon 1.5.x ----
#
# Dependencies : - main.kmm KM version 1.5 tabs
# Resources : -
# Preferences : - k-meleon_Groups2.<name>, <#>
# : - k-meleon_Groups2.<name>,<count>
# : - k-meleon_Groups2.count, <count>
# : - k-meleon_Groups2.<#>, <name>
# Version : - 0.3b 2009-02-05
# Authors : JamesD and desga2
# --------------------------------------------------------------------------------
_Groups2_RunCode_Save{
macroinfo="Save the current tab's URLS";
$_Groups2_Name = prompt("Assign a name for this group.", "Group Name (save)");
if($_Groups2_Name != "" ){
macros(_Groups2_ObtainC) ;
if ($_Groups2_Match== "true") {
$_Goverwrite = confirm("Group name: '".$_Groups2_Name."' already exist.\nDo you want overwrite it?", "Group Name (save)", YESNO, QUESTION);
$_Goverwrite == "YES" ? plugin(macros,"_Goverwrite(".$_Groups2_Name.")") : 0;
} else {
setpref( STRING, "k-meleon_Groups2.". $_Groups2_Exist_Count, $_Groups2_Name ) ;
$_Groups2_Exist_Count = $_Groups2_Exist_Count + 1;
setpref( INT, "k-meleon_Groups2.count", $_Groups2_Exist_Count);
$_Groups2_Number_of_Tabs = $TabNumber;
$_Groups2_Tab_Count = 0;
while( $_Groups2_Tab_Count < $_Groups2_Number_of_Tabs ) &_Groups2_Save_Loop;
&_Groups2_BuildGroupsMenu;
}
}
}
_Groups2_Save_Loop{
$_Groups2_Tab_Count == 0 ? setpref( INT, "k-meleon_Groups2.".$_Groups2_Name.".count", $_Groups2_Number_of_Tabs ) :0;
id(ID_TAB_NEXT);
setpref( STRING, "k-meleon_Groups2.".$_Groups2_Name.".".$_Groups2_Tab_Count, $URL );
$_Groups2_Tab_Count = $_Groups2_Tab_Count + 1;
}
_Goverwrite{
$_Groups2_Name = $ARG;
$_Groups2_Number_of_Tabs = getpref( INT, "k-meleon_Groups2.".$_Groups2_Name.".count");
$_Groups2_Tab_Count = 0 ;
while( $_Groups2_Tab_Count < $_Groups2_Number_of_Tabs ) &_Groups2_Delete_Loop;
$_Groups2_Number_of_Tabs = $TabNumber;
$_Groups2_Tab_Count = 0;
while( $_Groups2_Tab_Count < $_Groups2_Number_of_Tabs ) &_Groups2_Save_Loop;
}
Groups2_OpenGroup{
$_Groups2_Name = $ARG;
$_Groups2_Name==""?$_Groups2_Name=$URLBAR:0; $_Groups2_Name==""?$_Group=$URL:0;
$_Groups2_Name==$URL?0:$_Groups2_Number_of_Tabs = getpref( INT, "k-meleon_Groups2.".$_Groups2_Name.".count");
$_Groups2_Tab_Count = 0 ;
if($_Groups2_Name != $URL ) while($_Groups2_Tab_Count<$_Groups2_Number_of_Tabs) &_Groups2_Load_Loop;
}
_Groups2_RunCode_Load{
$_Groups2_Name = prompt("Enter name of group to load.", "Group Name (clear then load)");
if($_Groups2_Name != "" ){
macros(_Groups2_ObtainC) ;
if ($_Groups2_Match== "true") {
$_Groups2_Number_of_Tabs = getpref( INT, "k-meleon_Groups2.".$_Groups2_Name.".count");
$_Groups2_Tab_Count = 0 ;
id(ID_CLOSE_ALLTAB);
$URLBAR="about:blank";
while( $_Groups2_Tab_Count < $_Groups2_Number_of_Tabs ) &_Groups2_Load_Loop;
} else { alert("No group found with name: ".$_Groups2_Name, "Group Name (load)", EXCLAIM); }
}
}
_Groups2_Load_Loop{
$_Groups2_URL = getpref(STRING, "k-meleon_Groups2.".$_Groups2_Name.".".$_Groups2_Tab_Count );
if($URLBAR=="about:blank"){
open($_Groups2_URL);
$URLBAR="";
} else {
opentab( $_Groups2_URL );
}
$_Groups2_Tab_Count = $_Groups2_Tab_Count + 1;
}
_Groups2_RunCode_Delete{
$_Groups2_Name = prompt("Enter name of group to delete.", "Group Name (delete)");
if($_Groups2_Name != "" ){
macros(_Groups2_ObtainC) ;
if ($_Groups2_Match== "true") {
$_Groups2_DelName = $_Groups2_Name;
macros(_Groups2_collapse);
$_Groups2_Number_of_Tabs = getpref( INT, "k-meleon_Groups2.".$_Groups2_Name.".count");
$_Groups2_Tab_Count = 0 ;
while( $_Groups2_Tab_Count < $_Groups2_Number_of_Tabs ) &_Groups2_Delete_Loop;
setpref( INT, "k-meleon_Groups2.count",$_Groups2_Exist_Count -1 ) ;
&_Groups2_BuildGroupsMenu;
} else {
alert("No group found with name: ".$_Groups2_Name, "Group Name (delete)", EXCLAIM);
}
}
}
_Groups2_Delete_Loop{
$_Groups2_Tab_Count == 0 ? delpref("k-meleon_Groups2.".$_Groups2_Name.".count"):0;
delpref("k-meleon_Groups2.".$_Groups2_Name.".".$_Groups2_Tab_Count);
$_Groups2_Tab_Count = $_Groups2_Tab_Count + 1 ;
}
_Groups2_ObtainC{
$_Groups2_Exist_Count = getpref( INT, "k-meleon_Groups2.count");
if ($_Groups2_Exist_Count!=0) {
$_GU_cntr = 0;
while($_GU_cntr < $_Groups2_Exist_Count) { macros(_Groups2_Read); }
}
}
_Groups2_Read{
$_Groups2_EName = getpref( STRING, "k-meleon_Groups2.". $_GU_cntr ) ;
$_Groups2_Match = $_Groups2_Name == $_Groups2_EName ? "true" : "false" ;
if ($_Groups2_Match== "true") {
$_Groups2_Match_cntr = $_GU_cntr;
$_GU_cntr = $_GU_cntr + 990 ;
} else { $_GU_cntr = $_GU_cntr + 1 ;}
}
_Groups2_collapse{
while ( $_Groups2_Match_cntr +1 < $_Groups2_Exist_Count ) {
$_Groups2_collaspe_value = getpref( STRING, "k-meleon_Groups2.". $_Groups2_Match_cntr +1 ) ;
setpref( STRING, "k-meleon_Groups2.".$_Groups2_Match_cntr, $_Groups2_collaspe_value);
$_Groups2_Match_cntr = $_Groups2_Match_cntr +1 ;
}
delpref("k-meleon_Groups2.".$_Groups2_Exist_Count -1);
}
_Groups2_BuildMenu{
if($kTabs){
$_g="&Groups";
setmenu(Main,popup,$_g,"&Tools");
$__m="_Groups";
setmenu($_g,inline,$__m);
setmenu($__m,macro,"&Save a group",_Groups2_RunCode_Save);
setmenu($__m,macro,"&Load a group",_Groups2_RunCode_Load);
setmenu($__m,macro,"&Delete a group",_Groups2_RunCode_Delete);
setmenu($__m,separator,3);
$_Groups2_DelName = "";
&_Groups2_BuildGroupsMenu;
}
}
_Groups2_BuildGroupsMenu{
$_g="&Groups";
$_m="_Groups_List";
setmenu($_g,inline,$_m);
$_Groups2_Exist_Count = getpref( INT, "k-meleon_Groups2.count");
if ($_Groups2_Exist_Count!=0) {
$_GU_cntr = 0;
while($_GU_cntr < $_Groups2_Exist_Count) {
$_Groups2_EName = getpref( STRING, "k-meleon_Groups2.". $_GU_cntr ) ;
setmenu($_m,macro,$_Groups2_EName,"Groups2_OpenGroup(".$_Groups2_EName.")");
$_GU_cntr = $_GU_cntr + 1 ;
}
$_Groups2_DelName != ""?setmenu($_m,macro,$_Groups2_DelName,"") : 0;
}
rebuildmenu($_g);
rebuildmenu($_m);
$_Groups2_DelName = "";
}
_Groups2_SetAccels{
setaccel("ALT VK_RETURN","macros(Groups2_OpenGroup)");
}
_Groups2_compat{
## Automatic update from Ver. 0.2c to Ver. 0.3x
$__glist="";
$__GCnt=0;
$__glist=getpref( STRING, "k-meleon_Groups2.list");
$__glist!= "" ? delpref("k-meleon_Groups2.list") :0;
while($__glist != ""){
$__gname = substr($__glist, 0 , index($__glist, "|"));
setpref( STRING, "k-meleon_Groups2.". $__GCnt, $__gname ) ;
$__glist=sub( $__gname."|", "", $__glist );
$__GCnt = $__GCnt +1;
}
$__GRCnt = getpref( INT, "k-meleon_Groups2.count");
$__GRCnt != 0 ? $__GCnt = $__GRCnt:0;
setpref( INT, "k-meleon_Groups2.count", $__GCnt);
}
$OnInit=$OnInit."_Groups2_compat;_Groups2_SetAccels;_Groups2_BuildMenu;";
$macroModules=$macroModules."Groups2;";