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.
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.3a 2009-01-02 # 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_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; setpref( INT, "k-meleon_Groups2.count", $__GCnt); } $OnInit=$OnInit."_Groups2_compat;_Groups2_SetAccels;_Groups2_BuildMenu;"; $macroModules=$macroModules."Groups2;";