Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Переименование кнопки пользователем. (https://javascript.ru/forum/dom-window/72739-pereimenovanie-knopki-polzovatelem.html)

vospa 22.02.2018 21:56

Переименование кнопки пользователем.
 
Доброго времени суток, дамы и господа!
Возник вопрос. Есть HTML-панель расширения для Photoshop. Хочу в ней сделать отдельную вкладку с незанятыми кнопками. Как-то вот так:

<button class="button_color" id="Cb1">A1</button>
<button class="button_color" id="Cb2">A2</button>
<button class="button_color" id="Cb3">A3</button>
<button class="button_color" id="Cb4">A4</button>

И так далее.
Как подвесить на каждую кнопку пользовательский Action понятно. Это в самом Photoshop делается. А дальше скриптом уже управлять:
$("#Cb1").button().click(function(a){csInterface.evalScript('$._ext.evalFile("'+extensionRoot+'Cb_1/1.jsx")')});
$("#Cb2").button().click(function(a){csInterface.evalScript('$._ext.evalFile("'+extensionRoot+'Cb_1/2.jsx")')});
$("#Cb3").button().click(function(a){csInterface.evalScript('$._ext.evalFile("'+extensionRoot+'Cb_1/3.jsx")')});
$("#Cb4").button().click(function(a){csInterface.evalScript('$._ext.evalFile("'+extensionRoot+'Cb_1/4.jsx")')});

А можно ли как-то сделать так, чтобы пользователь мог сам переименовывать кнопки А1, А2, А3, А4, ...? Ну и чтобы эти названия сохранялись и после выхода из Photoshop.
Подозреваю, что это, наверное, не очень сложно. Но так как я с JS строго на "Вы", то не знаю даже с какого боку подступать. Даже как правильно запрос написать в поисковике не сообразить.
Заранее благодарю за любую помощь.

Manyasha 23.02.2018 16:56

vospa, здравствуйте. В этом расширении можно и html и js и стили писать?
Так подойдет?
<head>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<script src="//code.jquery.com/jquery-1.9.1.min.js"></script>
<style>
.button_color {
  width: 60px;
}

.fa-cog {
  float: right;
  font-size: 14px;
  color: #5f5f5f;
  opacity: 0.5;
}

.fa-cog:hover {
  font-size: 16px;
  opacity: 1;
}
</style>

<script>
$(function() {
  $(".button_color").each(function() {
    if (localStorage.getItem(this.id)) {
      $(this).contents().eq(0).replaceWith(localStorage.getItem(this.id))
    }
  });

  $(".fa-cog").click(function(e) {
    e.stopPropagation();
    var x = prompt("Введите имя для кнопки");
    if (x) {
      $(this).parent().contents().eq(0).replaceWith(x);
      localStorage[$(this).parent().attr("id")] = x;
    }
  });
})
</script>
</head>
<body>
  <button class="button_color" id="Cb1">A1<i class="fa fa-cog"></i></button>
  <button class="button_color" id="Cb2">A2<i class="fa fa-cog"></i></button>
  <button class="button_color" id="Cb3">A3<i class="fa fa-cog"></i></button>
  <button class="button_color" id="Cb4">A4<i class="fa fa-cog"></i></button>
</body>

vospa 23.02.2018 17:14

Manyasha,
Ох, большое человеческое спасибо Вам, добрый человек!!! :thanks:
Да, теперь в расширениях для фотошопа, да и в остальных продуктах адобов, можно и html, и js, и стили писать.
Вроде, то, что надо. Доберусь до своего компа, уже на самой панели проверю.

vospa 23.02.2018 21:35

Manyasha,
Эхх... похоже я рано обрадовался... :(
На сайте все работает отлично, а вот в панели не хочет. При нажатии на иконку шестеренки, окошко "Введите имя для кнопки" тупо не появляется...

ПЫ.СЫ. В хроме все работает, а в лисе и ИЕ нет... Ну и в панели тоже... :(

Nexus 23.02.2018 22:48

Думаю стоит ознакомится с одним из этих документов:
CC14 Extension SDK
CC Extension SDK

vospa 23.02.2018 23:21

Цитата:

Сообщение от Nexus (Сообщение 478995)
Думаю стоит ознакомится с одним из этих документов:
CC14 Extension SDK
CC Extension SDK

Увы... я знаком с ними. Ну, в том смысле, что видел их :-) Но к большому для меня сожалению, чтобы понимать тонкости JS в приложениях Adobe, надо для начала знать сам JS. Чего о себе не могу сказать от слова совсем...
Надеялся, что может прокатит без этих адобовских нюансов. Увы...
Максимум на что меня хватило, это научиться запаковывать расширения в .zxp. Но это настолько там разжевано, что даже такой нуб, как я, разобрался :D
Но все равно спасибо :-)

vospa 24.02.2018 00:10

Manyasha,
Я идиот... :cray: Все работает. Перенес текст скрипта из html в управляющий js и все заработало :dance:
Еще раз, огромное человеческое спасибо! :thanks:

Manyasha 24.02.2018 12:41

Пожалуйста:victory:
Цитата:

Сообщение от vospa (Сообщение 478992)
ПЫ.СЫ. В хроме все работает, а в лисе и ИЕ нет... Ну и в панели тоже... :(

Проверила, и правда. Почему-то не работают события на элементах внутри button. Переделала:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<style>
.button_color {
  width: 60px;
}
 
.fa-cog {
  font-size: 14px;
  color: #5f5f5f;
  opacity: 0.5;
  margin-right:5px;
}
 
.fa-cog:hover {
  opacity: 1;
}
</style>
 
<script>
$(function() {
  $(".button_color").each(function() {
    if (localStorage.getItem(this.id)) {
      $(this).text(localStorage.getItem(this.id))
    }
  });
 
  $(".fa-cog").click(function(e) {
    var x = prompt("Введите имя для кнопки");
    if (x) {
      $(this).prev().text(x);
      localStorage[$(this).prev().attr("id")] = x;
    }
  });
})
</script>
</head>
<body>
  <button class="button_color" id="Cb1">A1</button><i class="fa fa-cog"></i>
  <button class="button_color" id="Cb2">A2</button><i class="fa fa-cog"></i>
  <button class="button_color" id="Cb3">A3</button><i class="fa fa-cog"></i>
  <button class="button_color" id="Cb4">A4</button><i class="fa fa-cog"></i>
</body>
</html>

vospa 24.02.2018 13:32

Цитата:

Сообщение от Manyasha (Сообщение 479007)
Пожалуйста:victory:

Проверила, и правда. Почему-то не работают события на элементах внутри button. Переделала:

Еще раз, огромное спасибо! :thanks:


Часовой пояс GMT +3, время: 00:58.