Replace in selected only layers layer names

I use this script to find and replace words in layers. (The script targets only particular words, rather than the entire layer name).

I would like to do so it targets only the selected layers.

I found this script that loops through the selected only layers, but I don't know how to add search and replace the name functioality layer.

Thanks for any help that can be offered.

Big_SmiLe wrote:

Flipping through the guide, it does not seem to "hasSelectedArtwork", is built in function either. Are there tutorials or guides that explain how to target the selected layers?

Wrong reference manual, see this one:

http://www.Adobe.com/content/dam/Adobe/en/DevNet/PDF/Illustrator/scripting/CS6/Illustrator-scripting-r standard - JavaScript.pdf

Page 91 - CHAPTER 1: JavaScript object reference

Layer

Property

hasSelectedArtwork

Value type

Boolean

What it is

If true, an object in this layer has been selected; set to false to deselect all objects in the layer.

So, as I have spoken here:

W_J_T wrote:

Fix. Yes there is no direct way unfortunately (like many things through script), that's why I suggested using "hasSelectedArtwork", that might work if you select the target layer in the choice of your layers you want to rename.

and...

W_J_T wrote:

if(layerReferenceString.hasSelectedArtwork == true) {}

code

}

Who would offer a way of knowing whether a layer is selected.

As far as I know that is the only round about way to know if a layer is selected via the script.

Tags: Illustrator

Similar Questions

  • Select the layer name

    I need to select a specific layer or group by name.  What is the correct syntax to do this with Javascript?

    you want to select all the items on the layer? or only some types (e.g., blocks of text, groups, paths)?

    Let's take a look at the same time.

    Let's start by selecting all the elements on a given layer (in this case the layer is called "Target layer");

    Note that pageItems means that any element of art in the document. could be text, could be a path, can be a group, could be a compound path.

    var docRef = app.activeDocument;
    var layers = docRef.layers;
    var myLayer = layers["Target Layer"]; //this defines the layer that you want to get the selection from
    
    docRef.selection = null; //ensure there is nothing in the document selected already. this way you only get the selection you want.
    for(var a=0;a
    

    now lets do the same thing, but we will choose just the groupItems

    var docRef = app.activeDocument;
    var layers = docRef.layers;
    var myLayer = layers["Target Layer"];
    
    docRef.selection = null;
    for(var a=0;a
    

    and finally, in order to be comprehensive, allows to select two different types of art objects, but not all types. For example, if a single layer has text blocks, groups, paths and transparent traces. Let's just select managers of related texts and groupItems. This time we will have to include a conditional statement to find the correct item types.

    var docRef = app.activeDocument;
    var layers = docRef.layers;
    var myLayer = layers["Target Layer"];
    
    docRef.selection = null;
    for(var a=0;a		   
  • A Script to find and replace the layer names

    Is there scripts to find and replace the names of layers?

    There is an excellent script available for Photoshop that allows you not only to replace words in layer names, but also insert words as prefixes, Suffixes and sequential numbers.

    The version of the illustrator of this script allows only sequential numbering: it does not offer search and replace words.

    Ideally, it would be great if there were something that could find multiple and replaces in a go:

    (for example

    You have layers like this car, the dog, the bat

    You enter: because (Option1), dog (Option2), Bat (Option3)

    Your layers become then: option 1, option 2, Option3).

    )

    Big_SmiLe, which is a very good start! Step 1 of learning how to Script is indeed, by adjusting an existing simple script to make things more complicated. (And usually then "break something", which is also a necessary part of the process.)

    You are right your comment, it comes to repetitive things. For one or two different articles that wouldn't be a problem, but in the longer lists you are soon lost.

    As usual to work with lists of search - replace is to build a table:

    var layernames = [
    [ 'FHairBowlBoy *Hair', 'Hairboy1' ],
    [ 'FHairCurlyafroBoy *Hair', 'Hairboy2' ],
    [ 'FHairSpikyBoy *Hair', 'Hairboy3' ],
    ];
    

    The general idea is to loop through all the names, check if the current layer name is "layernames [i] [0]" (the left column) and if so, rename it "layernames [i] [1]" (the right column). If you know how to write a loop in Javascript, then you can implement this immediately.

    However...

    A more advanced method to do this didn't need even loop on all layernames - instead you can immediately 'get' the correct name by layer! It's magic! Almost!

    The trick is to use a Javascript object rather than a table. JavaScript objects are nothing special; "Layers" of Illustrator are an array of objects, and each object 'sex' has a 'name' property, which you can read and set the value. What I do here, is to create a new object, where the part 'name' is the name of the original layer and its value is the name of the new layer. All you need to check each layer is if there is a "object.originalLayerName" property and if so, assign its value to this layer name.

    It looks a bit like the table above, except that (1) you use {.} instead of [..] to create an object and (2) you add pairs "name: value" instead of 'value' only (in fact, the 'name' of a value in a table is simply her number).

    So here's what it looks like:

    // JavaScript Document
    var doc = app.activeDocument;
    // name indexed object
    var layernames = {
     'FHairBowlBoy *Hair':'Hairboy1',
     'FHairCurlyafroBoy *Hair':'Hairboy2',
     'FHairSpikyBoy *Hair':'Hairboy3'
    };
    // loop through all layers
    for (var i = 0; i < doc.layers.length; i++)
    {
     //Set up Variable to access layer name
     var currentLayer = app.activeDocument.layers[i];
     if (layernames[currentLayer.name])
     {
      currentLayer.name = layernames[currentLayer.name];
     }
    }
    

    Enjoy!

  • Replace the contents of the layer text by current image name

    Hi all new (I ve posted another topic about 1 hour ago )

    I have another question:

    Imagine opening an image called Gustavo.jpg (my name)

    Now, you manually create a layer of text placed at the right place and you type 'your name here '.

    This layer is selected in the layers panel.

    Now the question:

    Is there a simple way to make a script that replaces the selected type layer that s written 'your name here' by the name of the current image (Gustavo)?

    Thank you very much for the help.

    Gustavo.

    This will remove the extension...

    function main() {
    if (!app.documents.length ) return;
    var doc = app.activeDocument;
    var fnameLayer = doc.layers.getByName("Filename Layer");
    fnameLayer.textItem.contents = doc.name.replace(/\.[^\.]+$/, '');
    };
    main();
    
  • I can't get rid of the layer names in the general properties tab layers PCB Ultiboard

    A bunch of DXF layer names have been concluded by Ultiboard 10.1 error a few years during a DXF for import operation. I have recently updated to 12.0 and hope that the old layers would be eliminated. I wanted to get rid of them for a long time. I tried to delete the file ub_config in AppData, but it didn't remove them. Is that all you can think to extract them from the clutches of the program? Thanks, Tod

    Hi Tod,

    I suspect one of your design files is the cause.  If you go to Options > CFP properties > general Layers, you see here DXF layers?  If you see the layers, you can select it and then press the delete button?

  • How can I select only the lowest layer?

    On the Adobe site, he States:

    If you need the lowest layer selected, press Option + shift + -[.]

    Well, it does not work for me in all cases as if another layer is selected, both end up being selected.

    Inside of an Action, how can I select the lowest layer and only the lowest layer?

    And while I ask questions of Action, in an existing action, how do I start recording so that the new shares are placed right at the top? If I select the name of the Action, the new record is placed in the lower part. If I select the first element, the new record is ranked second.

    See if Option +, (comma) selects the lower layer.

    And Option +. (period) selects the top layer.

  • By selecting only visible layers

    I'm a novice scripter, trying to find a way to hide all the layers in a document.  The document contains hundreds of layers so by selecting all and then hide everything takes far too long to run.  Is it a way to simlply button hide all or select only the layers which are visible and can hide?

    Here's a way to disable all visibility of layers...

    //select top layer
    activeDocument.activeLayer = activeDocument.layers[0];
    
    //toggle all other layers visibility off
    toggleVisability();
    
    //toggle this layers visibility off
    activeDocument.activeLayer.visible=false;
    
    //This function is the same as Alt/Click on a layers eye
    function toggleVisability() {
    var desc = new ActionDescriptor();
    var list1 = new ActionList();
    var ref = new ActionReference();
    ref.putEnumerated( charIDToTypeID('Lyr '),charIDToTypeID('Ordn'),charIDToTypeID('Trgt') );
    list1.putReference( ref );
    desc.putList( charIDToTypeID('null'), list1 );
    desc.putBoolean( charIDToTypeID('TglO'), true );
    executeAction( charIDToTypeID('Shw '), desc, DialogModes.NO );
    };
    
  • doc.pathItems selected only return path layer, not all.

    Try to browse all pathItems in the specific document and could not make any success.

    Just this little script returns '1' only if I select the layer with the actual path. Otherwise will always be 0.

    But I need to extract all THE pathItems of the document.

    CS5 Extended (v12.1 x 64).

    Mac OS X 10.7.5

    Here's the test code:

    #target photoshop
    app.bringToFront();
    if (app.documents.length > 0) {
        var doc = app.activeDocument;
    
        var res = "pathItems.length:\n";
        res += doc.pathItems.length;
    
        Window.alert(res);
    }
    

    What am I doint evil?

    Iteration will still occur only on a pathItem, is selected manually in Photoshop.

    Select all layers manually won't make any difference.

    Greetings from King,

    Max

    app.activeDocument.pathItems.length Gets the number of document pathItems + the vector mask so the activeLayer has one.

    To determine the number of vector masks in a document I suppose you need to work through the layers.

  • Different behavior on the eyes; layer names are correct?

    Different behavior on the eyes; scales up and down, left right behaves as expected. All layer names are correct in artificial intelligence. Where to find a solution?Ai_layers_different_eye_behaviors.JPG

    Hmm, the sent JPG seems to be broken.

    But here's a place to look: in the Panel of the puppet, with no layers selected, you should see the behavior of face in the properties panel. Twirl in the group "Handles" to see what parts of the face it found. It shows the layers that you expect to find? (ToolTips will tell you what he's looking for.) Twirl down replacements also to see the layers of flashing. Note that if it does not find a layer of Blink for a certain look, it dimensionnera the eye that you close the eye rather than go to the work of replacement blink.

  • Select only the objects in a rectangle selection

    I am a new user of Illustrator CS5, switching from Freehand. I'm trying to find out if there is a way to select only the objects in a marquee? In AutoCAD, you can make a selection on the left window to the right and only those objects entirely in the window are selected. If you the window right on the left all the objects that are "crossed" or affected by the window are selected. Is there a similar technique in Illustrator?

    Currently, I have to select the objects, and then go back and hold the SHIFT key to deselect the object I don't want, or place objects on different layers and then lock the layers to prevent additional items get selected.

    In AutoCAD, my main program, you simply draw a window selection, left or right, depending on what your next step would be. No special tools or rocking or thinking, that's just the selection primary process and very intuitive.

    I posted a discussion on the Illustrator forum several months ago, which still arouses comments so this seems to be a tool that would be appreciated by many users. Someone posted a script but it has not worked for me yet.

    Thank you for everything that you can do to solve this problem.

    This is a copy of my last post of the original thread. I found some discussions confused because I have no experience in writing or by using scripts. So I copied all the recommendations in a document to read without the comments and digressions. After several hours and a lot of searching on Google I found what solution adapted to my goal, which was a selection process fast and simple with fewer steps to use.

    So, I think I have this job. The following is what I did:

    1 copy the script by Carlos Canto post #11 here:

    http://forums.Adobe.com/thread/856221?start=0&TSTART=0

    2. open the ExtendScript Toolkit Utilities > Adobe utilities - CS5.5 > ExtendScript Toolkit CS5.5 > ExtendScript Toolkit CS5.5.App

    3. when the program opens, paste the script in the large Panel on the left.

    4. then go to file > save as.

    5. that the dialog box click on the arrow next to the save box slot to expand the section options.

    6. next, go to Applications > Adobe Illustrator CS5.1 > Presets > en_US > Scripts.

    7. then, in the Save as box enter a name to identify the script (I named mine Window1).

    8. click on save and close the Toolbox.

    Launch Illustrator and open a drawing.

    1 using the rectangle tool, I drew a rectangle around the objects.

    2. make sure that the new rectangle is selected.

    3. I went to file > Scripts > Window1.

    4A got an error message - error 8705: target layer cannot be changed 25-> iart.selected + true line:

    Oops, you must have ALL unlocked layers.

    5. you click OK.

    6 unlocked all the layers.

    7. my new activated rectangle.

    8. went to file > Scripts > Window1.

    9 here! Items in the rectangle are selected and the rectangle is removed.

    So yes, this script works as requested. Thank you, Carlos.

  • Script to make the list of layer names.

    I wonder if someone could help me make the simple script that take the layer names and the list of their share on the A4 in canvas.

    Now I just got the screenshot of the list of Illustrator and edit it through photoshop to print, but it is too small, because each file have a approximately 25-50 layers.

    Looks like this:

    layer-list.jpg

    I tried to edit the script of John Wundes, which makes the list of the nuances, but it seems difficult for my skills.

    /////////////////////////////////////////////////////////////////
    // Render Swatch Legend v1.1 -- CS, CS2, CS3, CS4, CS5
    //>=--------------------------------------
    //
    //  This script will generate a legend of rectangles for every swatch in the main swatches palette.
    //  You can configure spacing and value display by configuring the variables at the top
    //  of the script. 
    //   update: v1.1 now tests color brightness and renders a white label if the color is dark.
    //>=--------------------------------------
    // JS code (c) copyright: John Wundes ( [email protected] ) www.wundes.com
    // copyright full text here:  http://www.wundes.com/js4ai/copyright.txt
    //
    ////////////////////////////////////////////////////////////////// 
        doc = activeDocument,
        swatches = doc.swatches,
        cols = 4,
        displayAs = "CMYKColor",  //or "RGBColor"
        rectRef=null,
        textRectRef=null,
        textRef=null,
        rgbColor=null,
        w=150;
        h=100,
        h_pad = 10,
        v_pad = 10,
        t_h_pad = 10,
        t_v_pad = 10,
        x=null,
        y=null,
        black = new GrayColor(),
        white = new GrayColor()
        ;
    
    
        black.gray = 100;
        white.gray = 0;
    
    
    activeDocument.layers[0].locked= false;
    var newGroup = doc.groupItems.add();
    newGroup.name = "NewGroup";
    newGroup.move( doc, ElementPlacement.PLACEATBEGINNING );
    
    
    for(var c=0,len=swatches.length;c<len;c++)
    {
            var swatchGroup = doc.groupItems.add();
            swatchGroup.name = swatches[c].name;
           
            x= (w+h_pad)*(c% cols);
            y=(h+v_pad)*(Math.floor((c+.01)/cols))*-1 ;
            rectRef = doc.pathItems.rectangle(y,x, w,h);
            rgbColor = swatches[c].color;
            rectRef.fillColor = rgbColor;
            textRectRef =  doc.pathItems.rectangle(y- t_v_pad,x+ t_h_pad, w-(2*t_h_pad),h-(2*t_v_pad));
            textRef = doc.textFrames.areaText(textRectRef);
            textRef.contents = swatches[c].name+ "\r" + getColorValues(swatches[c].color) ;
            textRef.textRange.fillColor = is_dark(swatches[c].color)? white : black;
            //
            rectRef.move( swatchGroup, ElementPlacement.PLACEATBEGINNING );     
            textRef.move( swatchGroup, ElementPlacement.PLACEATBEGINNING );
            swatchGroup.move( newGroup, ElementPlacement.PLACEATEND );
    }
    
    
    function getColorValues(color)
    {
            if(color.typename)
            {
                switch(color.typename)
                {
                    case "CMYKColor":
                        if(displayAs == "CMYKColor"){
                            return ([Math.floor(color.cyan),Math.floor(color.magenta),Math.floor(color.yellow),Math.floor(color.black)]);}
                        else
                        {
                            color.typename="RGBColor";
                            return  [Math.floor(color.red),Math.floor(color.green),Math.floor(color.blue)] ;
                           
                        }
                    case "RGBColor":
                       
                       if(displayAs == "CMYKColor"){
                            return rgb2cmyk(Math.floor(color.red),Math.floor(color.green),Math.floor(color.blue));
                       }else
                        {
                            return  [Math.floor(color.red),Math.floor(color.green),Math.floor(color.blue)] ;
                        }
                    case "GrayColor":
                        if(displayAs == "CMYKColor"){
                            return rgb2cmyk(Math.floor(color.gray),Math.floor(color.gray),Math.floor(color.gray));
                        }else{
                            return [Math.floor(color.gray),Math.floor(color.gray),Math.floor(color.gray)];
                        }
                    case "SpotColor":
                        return getColorValues(color.spot.color);
                }    
            }
        return "Non Standard Color Type";
    }
    function rgb2cmyk (r,g,b) {
     var computedC = 0;
     var computedM = 0;
     var computedY = 0;
     var computedK = 0;
    
    
     //remove spaces from input RGB values, convert to int
     var r = parseInt( (''+r).replace(/\s/g,''),10 ); 
     var g = parseInt( (''+g).replace(/\s/g,''),10 ); 
     var b = parseInt( (''+b).replace(/\s/g,''),10 ); 
    
    
     if ( r==null || g==null || b==null ||
         isNaN(r) || isNaN(g)|| isNaN(b) )
     {
       alert ('Please enter numeric RGB values!');
       return;
     }
     if (r<0 || g<0 || b<0 || r>255 || g>255 || b>255) {
       alert ('RGB values must be in the range 0 to 255.');
       return;
     }
    
    
     // BLACK
     if (r==0 && g==0 && b==0) {
      computedK = 1;
      return [0,0,0,1];
     }
    
    
     computedC = 1 - (r/255);
     computedM = 1 - (g/255);
     computedY = 1 - (b/255);
    
    
     var minCMY = Math.min(computedC,
                  Math.min(computedM,computedY));
     computedC = (computedC - minCMY) / (1 - minCMY) ;
     computedM = (computedM - minCMY) / (1 - minCMY) ;
     computedY = (computedY - minCMY) / (1 - minCMY) ;
     computedK = minCMY;
    
    
     return [Math.floor(computedC*100),Math.floor(computedM*100),Math.floor(computedY*100),Math.floor(computedK*100)];
    }
    
    
    function is_dark(color){
           if(color.typename)
            {
                switch(color.typename)
                {
                    case "CMYKColor":
                        return (color.black>50 || (color.cyan>50 &&  color.magenta>50)) ? true : false;
                    case "RGBColor":
                        return (color.red<100  && color.green<100 ) ? true : false;
                    case "GrayColor":
                        return color.gray > 50 ? true : false;
                    case "SpotColor":
                        return is_dark(color.spot.color);
                    
                    return false;
                }
            }
    }
    

    arop16461101,

    something like that?

    var theLayers = app.activeDocument.layers;
    var str = new Array ();
    for (i = 0; i < theLayers.length; i++) {
        str.push (theLayers[i].name)
        }
    var tF = theLayers[0].textFrames.add();
    tF.contents = str.join ("\r");
    alert("new text frame with layerlist added on layer " + theLayers[0].name);
    

    Have fun

  • Keep the layer names when describing the text

    I would like to know if there is a way to keep the names of the objects/layers of text when the text is converted to text outline, using scripts.

    I create files with dozens of text layers (player names on the back of the jerseys of sport) and send the .ai file to manufacturers. This means that I have to expose the text, but when I do, the layers all lose their names and everything becomes "< Group >.

    Can anyone think of a way of naming these layers with the text they contain?

    Hi openbracket,.

    It is impossible, if the text is underlined.

    But it is possible for the text and the outline of the text via script (don't forget that the selected text is only filled with no effects or stroke)

    You can try something like this:

    // required: an opened document with one selected text frame
    var aDoc = app.activeDocument;
    var aSel = aDoc.selection;
    if (aSel[0].typename =="TextFrame") {
        if (aSel[0].characters.length < 40) {
        var newName = aSel[0].contents;
        } else {
        newName = aSel[0].contents.substr(0, 39);
        }
    aSel[0].createOutline();
    aSel = aDoc.selection;
    // name of the new Group = contents or part of contents of selected text frame
    aSel[0].name = newName;
    }
    

    Have fun

  • Simultaneously select several layers and sous-calques

    Hello

    I'll have to select several layers and their Undercoats in Illustrator 2014, but sticking to the procedure described in the post below only lets you select several "main layers" with the left sublayer deselected.

    Re: Is it possible to select more than one layer by selecting the first and the last layers?

    Could someone please explain how the layers and sous-calques can be selected in the layers panel?

    In Illustrator, make more and more confused about the layer control...

    Thank you in advance,

    EAD

    That would be nice.

    Looks like a candidate for a feature request:

    Adobe - feature request/Bug Report Form

  • Find the alert and multi layer names

    Hi all

    I'm trying to export pdf using layer of condition names, if this layer should alert the names match, otherwise the pdf export.

    If only a single layer it works fine, when multi layers does not.

    my code is always alert if layer names are correct, what is the problem in my code, anyone can correct.

    help would be appreciated

    LY = app.activeDocument.layers.everyItem () .getElements ();

    for (i = 0; i < ly.length; i ++) {}

    If (ly [i] .name! = "BaseArtwork", "MagentaVariables", "PreprintedText", "OtherVariables") {}

    Alert ('layer names check'), exit();

    } else {}

    var myJobOptionName = "press [quality]";

    var myOutFolderPathName = ' / users/wleastudio/Desktop/Watched folder/Out / ";

    var myPDFFilePath;

    var InDJobOption = app.pdfExportPresets;

    myPDFFilePath = myOutFolderPathName+"/"+app.documents[0].name.split(".indd") [0].split(".) INDD") [0] +".pdf ";

    App.documents [0] .exportFile (ExportFormat.pdfType, myPDFFilePath, myJobOptionName, false);

    }

    }

    Thanks in advance

    Steve

    Hi Steve,.

    Try now.

    Array.prototype.contains = function(k)
    {
      for(var i=0; i < this.length; i++)
      {
            if(this[i] === k)
            {
                return true;
            }
        }
      return false;
    }
    var _layers = [ "BaseArtwork", "MagentaVariables", "PreprintedText", "OtherVariables"];
    var match = [];
    var ly = app.activeDocument.layers.everyItem().getElements();
    if(ly.length == 4){
        for (i=0; i
    

    Kind regards

    Cognet

  • Script to rename work with layer names plans

    I want to create a script to rename lots a number of work plans.

    -J' have 100 named layer.

    -J' have 100 work plans.

    -I would like to rename work plans to match the layer names.

    -Layers are organized in the same descent orderas work plans (ignoring the names real artboard *).

    -The plan of work in the foreground (1 in the list) would be renamed "Journal", the second plan of work would be renamed "typewriter", the third work plan would be renamed "books", etc..

    * in the example below, the artboard named 'Graphic Board 7' is actually the 6th work plan in the list.

    LayerNames-To-Artboards.png

    Any help would be wonderful.

    Hi sensibleworld, welcome to the forum.

    For your case, it should be fairly simple. The following excerpt from script bit renames work plans to match the corresponding layer names that you described in your first post above. It only works if the number of layers and work plans correspond to such indicated and talked about in your above description of requirements.

    if (app.documents.length == 0) {
        alert("No Open / Active Document Found");
    } else {
        var doc = app.activeDocument;
        if (doc.artboards.length == doc.layers.length && doc.layers.length == doc.artboards.length) {
            for (var i = 0, l = doc.artboards.length; i < l; i++) {
                var ab = doc.artboards[i];
                ab.name = doc.layers[i].name;
            }
            alert("Finished:\nRenaming of Artboards to match Layer names is complete");
        } else {
            alert("Opps: This wont work!\n The number of Layers and Artboards do not match");
        }
    }
    

    I hope that this is useful for your efforts and your requirements. Welcome back to the forum.

Maybe you are looking for

  • Crash on stand by

    After a few hours of waiting, I found the following journal crash. There are some indications of reason? Thank you Anonymous UUID: 6A31BDFD-D946-BC2D-1E91-30A1FB0C3E2B Mar 15 07:54:17 Mar 2016 Panic report *. panic (cpu 0 0xffffff80137d255a appellant

  • Still need mass of compilation by default values.llb in BT using TS4.2.1?

    I use 4.2.1 TestStand and LabVIEW 2009. Re-reading (new combination of software OR) "Using LabVIEW and LabWindows/CVI with TestStand I fell on this paragraph. Using a LabVIEW 8.6.x or advancement system When you install a version of LabVIEW later tha

  • Old archives Driver 6 Labview

    I need to know if there is an archive Alumni instrument Labview 6 Drivers.  I'm trying to control a Lake Shore 330 of six labview controller and all I can find are VI for labview 8.  I know that these devices have been around since the time of LV6 th

  • Prerecorded Wav files

    Hi all I'm trying to find a Wav file to use at the end of a LabVIEW program that prompts the user that the test is over. I use the LabVIEW VI but I'm looking for a pre recorded the wav file that reads "Test is now completed. I have had a look on Gool

  • How to get the toolbar of the browser

    my main browser/taskbar at the top is missing?  Help me please! original title: my browser/Tasks/menu which is usually in the top bar (where you can hit, discovers, file, save as etc. is gone! How can I get it back? __