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:

Groups2.kmm

#  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;";


Comments & Questions

K-Meleon

(c) 2000-2010 kmeleonbrowser.org. All rights reserved.
design by splif.