bump to v 1.0

This commit is contained in:
karol@jagiello.it 2017-11-12 22:00:40 +01:00
parent 8088ad31df
commit 82a351c5d9
101 changed files with 10924 additions and 3238 deletions

View File

@ -5,6 +5,8 @@
"extDesc": {
"message": "Manage your tabs in the sidebar!"
},
"button_new": {
"message": "Press left mouse button to open new tab. \nPress middle mouse button to clone the active tab. \nPress right mouse button to scroll the list to the active tab."
},
@ -23,15 +25,15 @@
"button_tools": {
"message": "Tools"
},
"button_groups": {
"message": "Groups"
},
"filter_search_go_prev": {
"message": "Previous search result"
},
"filter_search_go_next": {
"message": "Next search result"
},
"button_filter_type": {
"message": "Search titles or urls"
},
"button_bookmarks": {
"message": "Unsorted bookmarks"
},
@ -53,6 +55,59 @@
"button_discard": {
"message": "Unload tabs"
},
"button_filter_type": {
"message": "Search titles or urls"
},
"button_groups_toolbar_hide": {
"message": "Hide/Show Groups toolbar"
},
"button_new_group": {
"message": "New group"
},
"button_remove_group": {
"message": "Remove group.\nHold shift key to close tabs from this group"
},
"button_edit_group": {
"message": "Edit group"
},
"button_import_group": {
"message": "Import group"
},
"button_export_group": {
"message": "Export group"
},
"button_backup": {
"message": "Session"
},
"button_import_bak": {
"message": "Import session"
},
"button_import_merge_bak": {
"message": "Import and merge session.\nImporter will try to match current tabs with those from saved session, instead of opening a new window."
},
"button_export_bak": {
"message": "Export session"
},
"button_load_bak1": {
"message": "EMERGENCY if lost groupings: Load latest internal backup (autosave is made every 5 minutes)"
},
"button_load_bak2": {
"message": "EMERGENCY if lost groupings: Load previous to latest internal backup (autosave is made every 10 minutes)"
},
"button_load_bak3": {
"message": "EMERGENCY if lost groupings: Load oldest internal backup (autosave is made every 30 minutes)"
},
"tabs_menu_expand_all": {
"message": "Expand all trees"
},
@ -89,6 +144,9 @@
"tabs_menu_unpin": {
"message": "Unpin"
},
"tabs_menu_close_tree": {
"message": "Close tree"
},
"tabs_menu_close": {
"message": "Close"
},
@ -104,6 +162,14 @@
"tabs_menu_discard": {
"message": "Unload"
},
"options_vivaldi": {
"message": " Vivaldi "
},
@ -122,8 +188,11 @@
"options_tabs": {
"message": " Tabs "
},
"options_skip_load": {
"message": "discard tree structure after browser's restart, this option is for those who don't use browser's session. Basically it disables loading database at startup."
"options_syncro_tabbar_tabs_order": {
"message": "synchronise TabBar tabs order with Tree Tabs (with too many tabs, after moving tabs, Tree Tabs may be unresponsive for a second)"
},
"options_switch_with_scroll": {
"message": "switch tabs with mouse wheel"
},
"options_close_with_MMB": {
"message": "close tabs with middle mouse button"
@ -131,18 +200,22 @@
"options_always_show_close": {
"message": "show close button on all tabs"
},
"options_never_show_close": {
"message": "don't show close button (option above will be ignored)"
},
"options_close_other_trees": {
"message": "automatically collapse other trees on expand"
},
"options_promote_children": {
"message": "promote children tabs on close, if disabled, when closing the parent of a tree structure, all tabs will be closed (be careful, because undo close tab will not recover the trees structure)"
},
"options_open_tree_on_hover": {
"message": "auto expand collapsed trees when dragging and holding for a second over them"
},
"options_max_tree_depth": {
"message": "maximum tree depth: set it to -1 for unlimited branches, 0 for flat tabs placement (no trees), any number above 0 will be its maximum"
"options_promote_children": {
"message": "promote children tabs on close, if disabled, when closing the parent of a tree structure, all tabs will be closed (be careful, because undo close tab will not recover the trees structure)"
},
"options_skip_load": {
"message": "discard tree structure after browser's restart, this option is for those who don't use browser's session. Basically it disables loading database at startup."
},
"options_append_child_tab": {
"message": "append children tabs at the"
},
@ -152,20 +225,9 @@
"options_append_child_tab_bottom": {
"message": "bottom"
},
"options_append_child_tab_after_limit": {
"message": "once reached tree depth, place tab on the same level, but"
},
"options_append_child_tab_after_limit_top": {
"message": "at the top"
},
"options_append_child_tab_after_limit_after": {
"message": "after parent"
},
"options_append_child_tab_after_limit_bottom": {
"message": "at the bottom"
},
"options_append_orphan_tab": {
"message": "append orphan tabs (opened from +, shortcut or bookmark)"
"message": "append orphan tabs (new tabs, tabs opened from shortcuts or from bookmarks)"
},
"options_append_orphan_tab_top": {
"message": "at the top"
@ -179,6 +241,7 @@
"options_append_orphan_tab_as_child": {
"message": "treat as active's tab child"
},
"options_after_closing_active_tab": {
"message": "after closing active tab,"
},
@ -191,50 +254,44 @@
"options_after_closing_active_tab_go_browser": {
"message": "let browser handle which tab to activate"
},
"options_append_child_tab_after_limit": {
"message": "once reached tree depth, place tab on the same level, but"
},
"options_append_child_tab_after_limit_top": {
"message": "at the top"
},
"options_append_child_tab_after_limit_after": {
"message": "after parent"
},
"options_append_child_tab_after_limit_bottom": {
"message": "at the bottom"
},
"options_max_tree_drag_drop": {
"message": "Limit Drag&Drop to tree's maximum depth as well"
},
"options_max_tree_depth": {
"message": "maximum tree depth: set it to -1 for unlimited branches, 0 for flat tabs placement (no trees), any number above 0 will be its maximum"
},
"options_theme": {
"message": "Theme"
},
"options_theme_tabs": {
"message": " Tabs look "
},
"options_theme_tabs_sample_text_normal": {
"message": "Normal"
},
"options_theme_tabs_sample_text_active_selected": {
"message": "Active and selected"
},
"options_theme_tabs_sample_text_discarded": {
"message": "Unloaded (discarded)"
},
"options_theme_tabs_sample_text_search_result": {
"message": "Search result"
},
"options_theme_tabs_sample_text_search_result_higlighted": {
"message": "Search result higlighted"
},
"options_theme_tabs_sample_text_search_result_selected": {
"message": "Search result, selected"
},
"options_theme_tabs_sample_text_search_result_selected_active": {
"message": "Search result, selected, active"
},
"options_toolbar": {
"message": " Toolbar "
},
"options_available_buttons": {
"message": "Drag and drop buttons to arrange them, drop to the green box, buttons you don't want to use"
},
"options_scrollbars": {
"message": " Scrollbars "
},
"options_scrollbar_pin_list": {
"message": "pinned tabs bar scrollbar height"
},
"options_scrollbar_tab_list": {
"message": "tabs list scrollbar width"
},
"options_tabs_size": {
"message": "Tabs size"
"options_rename_theme_button": {
"message": "Rename"
},
"options_add_theme_button": {
"message": "Add new"
@ -242,15 +299,216 @@
"options_remove_theme_button": {
"message": "Remove"
},
"options_export_theme_button": {
"message": "Export"
},
"options_import_theme_button": {
"message": "Import"
},
"options_rename_theme_button": {
"message": "Rename"
"options_export_theme_button": {
"message": "Export"
},
"options_toolbar": {
"message": " Toolbar "
},
"options_available_buttons": {
"message": "Drag and drop buttons to arrange them, drop to the green box, buttons you don't want to use"
},
"options_reset_toolbar_button": {
"message": "Reset toolbar"
},
"options_theme_tabs": {
"message": " Tabs look "
},
"options_theme_tabs_sample_text_normal": {
"message": "Normal"
},
"options_theme_tabs_sample_text_normal_hover": {
"message": "Normal, mouse hover over"
},
"options_theme_tabs_sample_text_normal_selected": {
"message": "Normal selected"
},
"options_theme_tabs_sample_text_normal_selected_hover": {
"message": "Normal selected, mouse hover over"
},
"options_theme_tabs_sample_text_active": {
"message": "Active"
},
"options_theme_tabs_sample_text_active_hover": {
"message": "Active, mouse hover over"
},
"options_theme_tabs_sample_text_active_selected": {
"message": "Active and selected"
},
"options_theme_tabs_sample_text_active_selected_hover": {
"message": "Active and selected, mouse hover over"
},
"options_theme_tabs_sample_text_discarded": {
"message": "Unloaded (discarded)"
},
"options_theme_tabs_sample_text_discarded_hover": {
"message": "Unloaded, mouse hover over"
},
"options_theme_tabs_sample_text_discarded_selected": {
"message": "Unloaded and selected"
},
"options_theme_tabs_sample_text_discarded_selected_hover": {
"message": "Unloaded and selected, mouse hover over"
},
"options_theme_tabs_sample_text_search_result": {
"message": "Search result"
},
"options_theme_tabs_sample_text_search_result_hover": {
"message": "Search result, mouse hover over"
},
"options_theme_tabs_sample_text_search_result_active": {
"message": "Search result active"
},
"options_theme_tabs_sample_text_search_result_active_hover": {
"message": "Search result active, mouse hover over"
},
"options_theme_tabs_sample_text_search_result_selected": {
"message": "Search result selected"
},
"options_theme_tabs_sample_text_search_result_selected_hover": {
"message": "Search result selected, mouse hover over"
},
"options_theme_tabs_sample_text_search_result_selected_active": {
"message": "Search result selected, active"
},
"options_theme_tabs_sample_text_search_result_selected_active_hover": {
"message": "Search result selected, active, mouse hover over"
},
"options_theme_tabs_sample_text_search_result_highlighted": {
"message": "Search result highlighted"
},
"options_theme_tabs_sample_text_search_result_highlighted_hover": {
"message": "Search result highlighted, mouse hover over"
},
"options_theme_tabs_sample_text_search_result_highlighted_active": {
"message": "Search result highlighted, active"
},
"options_theme_tabs_sample_text_search_result_highlighted_active_hover": {
"message": "Search result highlighted, active, mouse hover over"
},
"options_theme_tabs_sample_text_search_result_highlighted_selected": {
"message": "Search result highlighted, selected"
},
"options_theme_tabs_sample_text_search_result_highlighted_selected_hover": {
"message": "Search result highlighted, selected, mouse hover over"
},
"options_theme_tabs_sample_text_search_result_highlighted_selected_active": {
"message": "Search result highlighted, selected, active"
},
"options_theme_tabs_sample_text_search_result_highlighted_selected_active_hover": {
"message": "Search result highlighted, selected, active, mouse hover over"
},
"options_color_pick_filter_clear_icon": {
"message": "Clear search result x button color"
},
"options_color_pick_hover": {
"message": "On hover"
},
"options_color_pick_border": {
"message": "Border color"
},
"options_color_pick_background": {
"message": "Fill color"
},
"options_color_pick_font": {
"message": "Font color"
},
"options_tabs_indentation_down": {
"message": "Decrease tabs indentation"
},
"options_tabs_indentation_up": {
"message": "Increase tabs indentation"
},
"options_tabs_roundness_down": {
"message": "Make tabs corners more square"
},
"options_tabs_roundness_up": {
"message": "Make tabs rounder"
},
"options_tabs_size_down": {
"message": "Decrease tabs size"
},
"options_tabs_size_up": {
"message": "Increase tabs size"
},
"options_tab_list_scrollbar_width_down": {
"message": "Decrease scrollbars width"
},
"options_tab_list_scrollbar_width_up": {
"message": "Increase scrollbars width"
},
"options_tab_list_scrollbar_height_down": {
"message": "Decrease scrollbars height"
},
"options_tab_list_scrollbar_height_up": {
"message": "Increase scrollbars height"
},
"options_there_is_a_theme_with_this_name": {
"message": "Theme with this name already exists, try a new name"
},
@ -266,160 +524,70 @@
"options_loaded_theme_newer_version": {
"message": "Looks like loaded theme was saved in a newer version of the extension, can't load!"
},
"options_color_theme_toolbar_background": {
"message": " toolbar background"
},
"options_color_toolbar_border_bottom": {
"message": " toolbar borders"
},
"options_color_button_icons": {
"message": " button icon"
},
"options_color_button_border": {
"message": " button borders"
},
"options_color_button_background": {
"message": " button background"
},
"options_color_button_hover_border": {
"message": " button hover border"
},
"options_color_button_hover_background": {
"message": " button hover background"
},
"options_color_filter_box_background": {
"message": " searchbox background"
},
"options_color_filter_box_border": {
"message": " searchbox borders"
},
"options_color_filter_box_font": {
"message": " searchbox font"
},
"options_color_filter_clear_icon": {
"message": " searchbox clear button"
},
"options_color_pin_list_border_bottom": {
"message": " pin list separator line"
},
"options_color_pin_list_background": {
"message": " pin list background"
},
"options_color_tab_list_background": {
"message": " tab list background"
},
"options_color_tab_background": {
"message": " tab background"
},
"options_color_tab_border": {
"message": " tab border"
},
"options_color_tab_hover_background": {
"message": " hover over tab, background"
},
"options_color_tab_hover_border": {
"message": " hover over tab, border"
},
"options_color_drag_indicator": {
"message": " drag&drop indicator"
},
"options_color_tab_title": {
"message": " tab title font"
},
"options_color_tab_title_active": {
"message": " active tab title font"
},
"options_color_tab_title_discarded": {
"message": " unloaded tab title font"
},
"options_color_tab_selected_background": {
"message": " selected tab background"
},
"options_color_tab_selected_border": {
"message": " active/selected tab border"
},
"options_color_tab_selected_hover_border": {
"message": " hover over active/selected tab border"
},
"options_color_tab_selected_hover_background": {
"message": " hover over active/selected tab background"
},
"options_color_tab_filtered": {
"message": " search result"
},
"options_color_tab_filtered_highlighted": {
"message": " search result highlighted"
},
"options_color_tab_filtered_selected": {
"message": " search result selected"
},
"options_color_tab_filtered_selected_active": {
"message": " search result selected active"
},
"options_color_close_x": {
"message": " close button (x)"
},
"options_color_close_hover_x": {
"message": " hover over close button, x color"
},
"options_color_close_hover_border": {
"message": " hover over close button, border"
},
"options_color_close_hover_background": {
"message": " hover over close button, background"
},
"options_color_expand_open_border": {
"message": " open tab expand box, border"
},
"options_color_expand_open_background": {
"message": " open tab expand box, background"
},
"options_color_expand_closed_border": {
"message": " closed tab expand box, border"
},
"options_color_expand_closed_background": {
"message": " closed tab expand box, background"
},
"options_color_expand_lines": {
"message": " tree hierarchy lines"
},
"options_color_scrollbar_thumb": {
"message": " scrollbar thumb"
},
"options_color_scrollbar_thumb_hover": {
"message": " scrollbar thumb hover"
},
"options_color_scrollbar_track": {
"message": " scrollbar background"
},
"options_color_tabs_menu_background": {
"message": " background"
},
"options_color_tabs_menu_border": {
"message": " border"
},
"options_color_tabs_menu_hover_background": {
"message": " hover over item, background"
},
"options_color_tabs_menu_hover_border": {
"message": " hover over item, border"
},
"options_color_tabs_menu_font": {
"message": " font"
},
"options_color_tabs_menu_separator": {
"message": " separator"
},
"options_example_menu_item": {
"message": "menu item"
},
"options_menu": {
"message": " Menu "
},
"options_active_tab_font_bold": {
"message": "bold font for active tab"
"options_vivaldi_copied_url": {
"message": "Web Panel Url has been copied to clipboard, add a new Web Panel and paste url."
},
"options_copied_wallet_address": {
"message": "Wallet address has been copied to clipboard"
},
"options_clear_data": {
"message": "Sidebar is not loading? Clear everything! ATTENTION! Tabs arrangement will be lost as well!"
},
"group_edit_button_cancel": {
"message": "Cancel"
},
"group_edit_button_confirm": {
"message": "Ok"
},
"caption_ungrouped_group": {
"message": "Ungrouped tabs"
},
"caption_noname_group": {
"message": "untitled"
},
"caption_clear_filter": {
"message": "Clear search results"
},
@ -428,14 +596,9 @@
},
"caption_searchbox": {
"message": " Search tabs..."
},
"options_never_show_close": {
"message": "don't show close button (option above will be ignored)"
},
"tabs_menu_close_tree": {
"message": "Close tree"
},
"options_faster_scroll": {
"message": "Faster scrolling"
}
}

View File

@ -350,7 +350,7 @@
"options_theme_tabs_sample_text_search_result": {
"message": "Результат поиска"
},
"options_theme_tabs_sample_text_search_result_higlighted": {
"options_theme_tabs_sample_text_search_result_highlighted": {
"message": "Выделенный результат поиска"
},
"options_theme_tabs_sample_text_search_result_selected": {
@ -427,5 +427,14 @@
},
"options_active_tab_font_bold": {
"message": "жирный шрифт для активной вкладки"
},
"options_faster_scroll": {
"message": "Быстрая прокрутка"
},
"options_never_show_close": {
"message": "не показывать кнопку закрытия (опция выше будет проигнорирована)"
},
"tabs_menu_close_tree": {
"message": "Закрыть дерево"
}
}

8
background.html Normal file
View File

@ -0,0 +1,8 @@
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"/></head>
<body></body>
<script type="text/javascript" src="../scripts/global.js"></script>
<script type="text/javascript" src="../bg_v015_to_v1.js"></script>
<script type="text/javascript" src="../bg_ch.js"></script>
</html>

View File

@ -1,292 +0,0 @@
var opt = {
"skip_load": false, "new_open_below": false, "pin_list_multi_row": false, "close_with_MMB": true,
"always_show_close": false, "allow_pin_close": false,
"append_child_tab": "bottom", "append_child_tab_after_limit": "after",
"append_orphan_tab": "bottom", "after_closing_active_tab": "below", "close_other_trees": false,
"promote_children": true, "open_tree_on_hover": true, "max_tree_depth": -1, "never_show_close": false, "faster_scroll": false
};
var opt_toolbar = {
"active_toolbar_tool": "", "filter_type": "url"
};
var hold = true,
started = false,
schedule_save = 0,
tabs = {},
dt = {tabsIds: [], DropAfter: true, DropToTabId: 0, DropToIndex: 0, CameFromWindowId: 0, DroppedToWindowId: 0},
caption_clear_filter = chrome.i18n.getMessage("caption_clear_filter"),
caption_loading = chrome.i18n.getMessage("caption_loading"),
caption_searchbox = chrome.i18n.getMessage("caption_searchbox");
function Start(){
started = true;
// open options to set defaults
if (localStorage.getItem("themeDefault") === null){
chrome.tabs.create({url: "options.html" });
}
// all variables needed to load data
var loaded_options = {}, loaded_opt_toolbar = {};
// set loaded options
if (localStorage.getItem("current_options") !== null){
loaded_options = JSON.parse(localStorage["current_options"]);
}
for (var parameter in opt) {
if (loaded_options[parameter] != undefined && opt[parameter] != undefined){
opt[parameter] = loaded_options[parameter];
}
}
// toolbar shelfs options (search url-title and which shelf is active)
if (localStorage.getItem("current_toolbar_options") !== null){
loaded_opt_toolbar = JSON.parse(localStorage["current_toolbar_options"]);
}
for (var parameter in opt_toolbar) {
if (loaded_opt_toolbar[parameter] != undefined && opt_toolbar[parameter] != undefined){
opt_toolbar[parameter] = loaded_opt_toolbar[parameter];
}
}
LoadTabs(0);
}
function LoadTabs(retry){
chrome.tabs.query({windowType: "normal"}, function(qtabs){
// will loop forever if session restore tab is found
if (navigator.userAgent.match("Firefox") !== null){
var halt = false;
for (var t = 0; t < qtabs.length; t++){
if (qtabs[t].url.match("sessionrestore")){
halt = true;
chrome.tabs.update(qtabs[t].id, { active: true });
break;
}
}
if (halt){
setTimeout(function(){
LoadTabs(retry);
}, 2000);
return;
}
}
// create current tabs object
qtabs.forEach(function(Tab){
HashTab(Tab);
});
var reference_tabs = {};
var tabs_matched = 0;
// compare saved tabs from storage to current session tabs, but can be skipped if set in options
if (opt.skip_load == false){
qtabs.forEach(function(Tab){
for (var t = 0; t < 9999; t++){
if (localStorage.getItem("t"+t) !== null){
var LoadedTab = JSON.parse(localStorage["t"+t]);
if (LoadedTab[1] === tabs[Tab.id].h && reference_tabs[LoadedTab[0]] == undefined){
reference_tabs[LoadedTab[0]] = Tab.id;
tabs[Tab.id].p = LoadedTab[2];
tabs[Tab.id].n = LoadedTab[3];
tabs[Tab.id].o = LoadedTab[4];
tabs_matched++;
break;
}
} else {
break;
}
}
});
// replace parents tabIds to new ones, for that purpose reference_tabs was made before
for (var tabId in tabs){
if (reference_tabs[tabs[tabId].p] != undefined){
tabs[tabId].p = reference_tabs[tabs[tabId].p];
}
}
}
// will try to find tabs for 10 times, roughly 30 seconds
if (opt.skip_load == true || retry > 10 || localStorage.getItem("t0") === null || localStorage.getItem("t_count") === null || (tabs_matched > JSON.parse(localStorage["t_count"]))){
hold = false;
StartChromeListeners();
PeriodicCheck();
AutoSaveData();
} else {
setTimeout(function(){
LoadTabs(retry+1);
}, 3000);
}
});
}
// once a minute checking for missing tabs
function PeriodicCheck(){
setTimeout(function(){
PeriodicCheck();
if (!hold){
chrome.tabs.query({windowType: "normal"}, function(qtabs){
qtabs.forEach(function(Tab){
if (tabs[Tab.id] == undefined){
HashTab(Tab);
setTimeout(function(){
chrome.runtime.sendMessage({command: "recheck_tabs"});
},300);
setTimeout(function(){
schedule_save++;
},600);
}
});
});
}
},60000);
}
// save every 2 seconds if there is anything to save obviously
function AutoSaveData(){
setTimeout(function(){
AutoSaveData();
if (schedule_save > 0){
schedule_save = 1;
}
if (!hold && schedule_save > 0 && Object.keys(tabs).length > 1){
chrome.tabs.query({windowType: "normal"}, function(qtabs){
localStorage["t_count"] = qtabs.length*0.5;
for (var t = 0; t < qtabs.length; t++){
if (tabs[qtabs[t].id] != undefined && tabs[qtabs[t].id].h != undefined && tabs[qtabs[t].id].p != undefined && tabs[qtabs[t].id].n != undefined && tabs[qtabs[t].id].o != undefined){
var Tab = JSON.stringify([qtabs[t].id, tabs[qtabs[t].id].h, tabs[qtabs[t].id].p, tabs[qtabs[t].id].n, tabs[qtabs[t].id].o]);
if (localStorage.getItem("t"+t) == null || localStorage["t"+t] !== Tab){
localStorage["t"+t] = Tab;
}
}
}
schedule_save--;
});
}
}, 1000);
}
function SaveOptions(){
localStorage["current_options"] = JSON.stringify(opt);
}
function SaveToolbarOptions(){
localStorage["current_toolbar_options"] = JSON.stringify(opt_toolbar);
}
function HashTab(tab){
if (tabs[tab.id] == undefined){
tabs[tab.id] = {h: 0, p: tab.pinned ? "pin_list" : "tab_list", n: tab.index, o: "n"};
}
var hash = 0;
if (tab.url.length === 0){
return 0;
}
for (var i = 0; i < tab.url.length; i++){
hash = (hash << 5)-hash;
hash = hash+tab.url.charCodeAt(i);
hash |= 0;
}
tabs[tab.id].h = hash;
}
// start all listeners
function StartChromeListeners(){
chrome.tabs.onCreated.addListener(function(tab){
HashTab(tab);
chrome.runtime.sendMessage({command: "tab_created", windowId: tab.windowId, tab: tab, tabId: tab.id});
schedule_save++;
});
chrome.tabs.onAttached.addListener(function(tabId, attachInfo){
chrome.tabs.get(tabId, function(tab){
if (tabs[tabId] == undefined){ HashTab(tab); }
chrome.runtime.sendMessage({command: "tab_attached", windowId: attachInfo.newWindowId, tab: tab, tabId: tabId});
});
schedule_save++;
});
chrome.tabs.onRemoved.addListener(function(tabId, removeInfo){
chrome.runtime.sendMessage({command: "tab_removed", windowId: removeInfo.windowId, tabId: tabId});
delete tabs[tabId];
schedule_save++;
});
chrome.tabs.onDetached.addListener(function(tabId, detachInfo){
if (tabs[tabId] == undefined){ HashTab(tab); }
chrome.runtime.sendMessage({command: "tab_removed", windowId: detachInfo.oldWindowId, tabId: tabId});
schedule_save++;
});
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){
if (tabs[tabId] == undefined || changeInfo.url != undefined){ HashTab(tab); }
if (changeInfo.pinned == true){ tabs[tabId].p = "pin_list"; }
if (changeInfo.pinned == false){ tabs[tabId].p = "tab_list"; }
chrome.runtime.sendMessage({command: "tab_updated", windowId: tab.windowId, tab: tab, tabId: tabId, changeInfo: changeInfo});
if (changeInfo.url != undefined || changeInfo.pinned != undefined){schedule_save++;}
});
chrome.tabs.onMoved.addListener(function(tabId, moveInfo){
if (tabs[tabId] == undefined){ HashTab(tab); }
chrome.runtime.sendMessage({command: "tab_moved", windowId: moveInfo.windowId, tabId: tabId, moveInfo: moveInfo});
schedule_save++;
});
chrome.tabs.onReplaced.addListener(function(addedTabId, removedTabId){
chrome.tabs.get(addedTabId, function(tab){
if (addedTabId == removedTabId){
chrome.runtime.sendMessage({command: "tab_updated", windowId: tab.windowId, tab: tab, tabId: tab.id, changeInfo: {status: tab.status, url: tab.url, title: tab.title, audible: tab.audible, mutedInfo: tab.mutedInfo}});
} else {
if (tabs[removedTabId]){
tabs[addedTabId] = {h: GetHash(tab.url), p: tabs[removedTabId].p, n: tabs[removedTabId].n, o: tabs[removedTabId].o};
} else {
HashTab(tab);
}
chrome.runtime.sendMessage({command: "tab_removed", windowId: tab.windowId, tabId: removedTabId});
chrome.runtime.sendMessage({command: "tab_attached", windowId: tab.windowId, tab: tab, tabId: addedTabId});
delete tabs[removedTabId];
}
schedule_save++;
});
});
chrome.tabs.onActivated.addListener(function(activeInfo){
chrome.runtime.sendMessage({command: "tab_activated", windowId: activeInfo.windowId, tabId: activeInfo.tabId});
});
}
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse){
switch(message.command){
case "background_start":
if (!started){
Start();
}
break;
case "reload":
window.location.reload();
break;
case "options_save":
SaveOptions();
break;
case "toolbar_options_save":
SaveToolbarOptions();
break;
}
});
function log(m){
console.log(m);
}
chrome.runtime.onStartup.addListener(function(){
Start();
});
if (navigator.userAgent.match("Firefox") === null){
chrome.runtime.onSuspend.addListener(function(){
hold = true;
});
}

341
bg_ch.js Normal file
View File

@ -0,0 +1,341 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
if (localStorage.getItem("t0") !== null){
LoadV015(0);
} else {
LoadPreferences();
ChromeLoadTabs(0);
ChromeMessageListeners();
}
function ChromeLoadTabs(retry) {
chrome.windows.getAll({windowTypes: ['normal'], populate: true}, function(w) {
var refTabs = {};
var tabs_matched = 0;
// load tabs and windows from hdd
var w_count = LoadData("w_count", 0);
var t_count = LoadData("t_count", 0);
var LoadedWindows = LoadData("windows", []);
var LoadedTabs = LoadData("tabs", []);
// if loaded tabs mismatch by 50%, then try to load back
if (LoadedTabs.length < t_count*0.5 || retry > 0) {
LoadedTabs = LoadData("tabs_BAK"+retry, []);
}
// if loaded windows mismatch, then try to load back
if (LoadedWindows.length < w_count || retry > 0) {
LoadedWindows = LoadData("windows_BAK"+retry, []);
}
// CACHED COUNTS
var WinCount = w.length;
var LoadedWinCount = LoadedWindows.length;
var LoadedTabsCount = LoadedTabs.length;
for (var wIndex = 0; wIndex < WinCount; wIndex++) {
if (w[wIndex].tabs[0].url != "chrome://videopopout/") { // this is for opera for their extra video popup, which is weirdly queried as a "normal" window
let winId = w[wIndex].id;
let url1 = w[wIndex].tabs[0].url;
let url2 = w[wIndex].tabs[w[wIndex].tabs.length-1].url;
windows[winId] = {group_bar: true, active_shelf: "", active_group: "tab_list", groups: {tab_list: {id: "tab_list", index: 0, activetab: 0, name: caption_ungrouped_group, font: ""}}, folders: {}};
for (var LwIndex = 0; LwIndex < LoadedWinCount; LwIndex++) {
if (LoadedWindows[LwIndex].url1 == url1 || LoadedWindows[LwIndex].url2 == url2) {
windows[winId].group_bar = LoadedWindows[LwIndex].group_bar;
windows[winId].active_shelf = LoadedWindows[LwIndex].active_shelf;
windows[winId].active_group = LoadedWindows[LwIndex].active_group;
if (Object.keys(LoadedWindows[LwIndex].groups).length > 0) { windows[winId].groups = Object.assign({}, LoadedWindows[LwIndex].groups); }
if (Object.keys(LoadedWindows[LwIndex].folders).length > 0) { windows[winId].folders = Object.assign({}, LoadedWindows[LwIndex].folders); }
LoadedWindows[LwIndex].url1 = "";
LoadedWindows[LwIndex].url2 = "";
break;
}
}
}
}
for (var wIndex = 0; wIndex < WinCount; wIndex++) {
var TabsCount = w[wIndex].tabs.length;
for (var tabIndex = 0; tabIndex < TabsCount; tabIndex++) {
ChromeHashURL(w[wIndex].tabs[tabIndex]);
}
}
// compare saved tabs from storage to current session tabs, but can be skipped if set in options
if (opt.skip_load == false && LoadedTabs.length > 0) {
// match loaded tabs
for (var wIndex = 0; wIndex < WinCount; wIndex++) {
var TabsCount = w[wIndex].tabs.length;
for (var tabIndex = 0; tabIndex < TabsCount; tabIndex++) {
for (var LtabIndex = 0; LtabIndex < LoadedTabsCount; LtabIndex++) {
let tabId = w[wIndex].tabs[tabIndex].id;
if (LoadedTabs[LtabIndex].hash == tabs[tabId].hash && refTabs[LoadedTabs[LtabIndex].id] == undefined) {
refTabs[LoadedTabs[LtabIndex].id] = tabId;
tabs[tabId].parent = LoadedTabs[LtabIndex].parent;
tabs[tabId].index = LoadedTabs[LtabIndex].index;
tabs[tabId].expand = LoadedTabs[LtabIndex].expand;
LoadedTabs[LtabIndex].hash = undefined;
tabs_matched++;
break;
}
}
}
}
// replace parents tabIds for new ones, for that purpose refTabs was made before
for (var tabId in tabs) {
if (refTabs[tabs[tabId].parent] != undefined) {
tabs[tabId].parent = refTabs[tabs[tabId].parent];
}
}
}
// replace active tab ids for each group using refTabs
for (var windowId in windows) {
for (var group in windows[windowId].groups) {
if (refTabs[windows[windowId].groups[group].activetab]) {
windows[windowId].groups[group].activetab = refTabs[windows[windowId].groups[group].activetab];
}
}
}
// will try to find tabs for 3 times
if (opt.skip_load == true || retry > 2 || (tabs_matched > t_count*0.5)) {
schedule_save++;
hold = false;
ChromeAutoSaveData("", 1000);
ChromeAutoSaveData("_BAK1", 300000);
ChromeAutoSaveData("_BAK2", 600000);
ChromeAutoSaveData("_BAK3", 1800000);
ChromeListeners();
} else {
setTimeout(function() {ChromeLoadTabs(retry+1);}, 2000);
}
});
}
// You maybe are asking yourself why I save tabs in array? It's because, instead of, keeping 2 index numbers (one for browser tabs on top and one for my index in tree), it's easier to just arrange them in order and save it in localstorage.
// Another reason is that Object does not preserve order in chrome, I've been told that in Firefox it is. But I can't trust that.
async function ChromeAutoSaveData(BackupName, LoopTimer) {
setTimeout(function() {
ChromeAutoSaveData(BackupName, LoopTimer);
if (schedule_save > 1 || BackupName != "") {schedule_save = 1;}
if (!hold && schedule_save > 0 && Object.keys(tabs).length > 1) {
chrome.windows.getAll({windowTypes: ['normal'], populate: true}, function(w) {
var WinCount = w.length;
var t_count = 0;
var counter = 0;
var Windows = [];
var Tabs = [];
for (var wIndex = 0; wIndex < WinCount; wIndex++) {
t_count += w[wIndex].tabs.length;
}
for (var wIndex = 0; wIndex < WinCount; wIndex++) {
let winId = w[wIndex].id;
if (windows[winId] != undefined && windows[winId].group_bar != undefined && windows[winId].active_shelf != undefined && windows[winId].active_group != undefined && windows[winId].groups != undefined && windows[winId].folders != undefined) {
Windows.push({url1: w[wIndex].tabs[0].url, url2: w[wIndex].tabs[w[wIndex].tabs.length-1].url, group_bar: windows[winId].group_bar, active_shelf: windows[winId].active_shelf, active_group: windows[winId].active_group, groups: windows[winId].groups, folders: windows[winId].folders});
}
let TabsCount = w[wIndex].tabs.length;
for (var tabIndex = 0; tabIndex < TabsCount; tabIndex++) {
let tabId = w[wIndex].tabs[tabIndex].id;
if (tabs[tabId] != undefined && tabs[tabId].hash != undefined && tabs[tabId].parent != undefined && tabs[tabId].index != undefined && tabs[tabId].expand != undefined) {
Tabs.push({id: tabId, hash: tabs[tabId].hash, parent: tabs[tabId].parent, index: tabs[tabId].index, expand: tabs[tabId].expand});
counter++;
}
}
if (counter == t_count) {
localStorage["t_count"] = JSON.stringify(t_count);
localStorage["w_count"] = JSON.stringify(WinCount);
localStorage["windows"+BackupName] = JSON.stringify(Windows);
localStorage["tabs"+BackupName] = JSON.stringify(Tabs);
}
}
schedule_save--;
});
}
}, LoopTimer);
}
function ChromeHashURL(tab){
if (tabs[tab.id] == undefined) {
tabs[tab.id] = {hash: 0, parent: tab.pinned ? "pin_list" : "tab_list", index: tab.index, expand: "n"};
}
var hash = 0;
for (var charIndex = 0; charIndex < tab.url.length; charIndex++){
hash += tab.url.charCodeAt(charIndex);
}
tabs[tab.id].hash = hash;
}
function ReplaceParents(oldTabId, newTabId) {
for (var tabId in tabs) {
if (tabs[tabId].parent == oldTabId) {
tabs[tabId].parent = newTabId;
}
}
// TO DO FOLDERS
}
// start all listeners
function ChromeListeners() {
chrome.tabs.onCreated.addListener(function(tab) {
ChromeHashURL(tab);
chrome.runtime.sendMessage({command: "tab_created", windowId: tab.windowId, tab: tab, tabId: tab.id});
schedule_save++;
});
chrome.tabs.onRemoved.addListener(function(tabId, removeInfo) {
chrome.runtime.sendMessage({command: "tab_removed", windowId: removeInfo.windowId, tabId: tabId});
delete tabs[tabId];
schedule_save++;
});
chrome.tabs.onAttached.addListener(function(tabId, attachInfo) {
chrome.tabs.get(tabId, function(tab) {
chrome.runtime.sendMessage({command: "tab_attached", windowId: attachInfo.newWindowId, tab: tab, tabId: tabId, ParentId: tabs[tabId].parent});
});
schedule_save++;
});
chrome.tabs.onDetached.addListener(function(tabId, detachInfo) {
chrome.runtime.sendMessage({command: "tab_detached", windowId: detachInfo.oldWindowId, tabId: tabId});
schedule_save++;
});
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if (tabs[tabId] == undefined || changeInfo.url != undefined) {
ChromeHashURL(tab);
}
if (changeInfo.pinned != undefined) {
schedule_save++;
}
if (changeInfo.pinned == true) {
tabs[tabId].parent = "pin_list";
}
if (changeInfo.title != undefined && !tab.active) {
chrome.runtime.sendMessage({command: "tab_attention", windowId: tab.windowId, tabId: tabId});
}
chrome.runtime.sendMessage({command: "tab_updated", windowId: tab.windowId, tab: tab, tabId: tabId, changeInfo: changeInfo});
});
chrome.tabs.onMoved.addListener(function(tabId, moveInfo) {
schedule_save++;
});
chrome.tabs.onReplaced.addListener(function(addedTabId, removedTabId) {
chrome.tabs.get(addedTabId, function(tab) {
if (addedTabId == removedTabId) {
chrome.runtime.sendMessage({command: "tab_updated", windowId: tab.windowId, tab: tab, tabId: tab.id, changeInfo: {status: tab.status, url: tab.url, title: tab.title, audible: tab.audible, mutedInfo: tab.mutedInfo}});
} else {
ReplaceParents(tabId, tab.id);
if (tabs[removedTabId]) {
tabs[addedTabId] = tabs[removedTabId];
} else {
ChromeHashURL(tab);
}
chrome.runtime.sendMessage({command: "tab_removed", windowId: tab.windowId, tabId: removedTabId});
chrome.runtime.sendMessage({command: "tab_attached", windowId: tab.windowId, tab: tab, tabId: addedTabId});
delete tabs[removedTabId];
}
schedule_save++;
});
});
chrome.tabs.onActivated.addListener(function(activeInfo) {
chrome.runtime.sendMessage({command: "tab_activated", windowId: activeInfo.windowId, tabId: activeInfo.tabId});
});
chrome.windows.onCreated.addListener(function(window) {
windows[window.id] = {group_bar: true, active_shelf: "", active_group: "tab_list", groups: {tab_list: {id: "tab_list", index: 0, activetab: 0, name: caption_ungrouped_group, font: ""}}, folders: {}};
schedule_save++;
});
chrome.windows.onRemoved.addListener(function(windowId) {
delete windows[windowId];
schedule_save++;
});
chrome.runtime.onSuspend.addListener(function() {
hold = true;
});
}
function ChromeMessageListeners() {
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
switch(message.command) {
case "reload":
window.location.reload();
break;
case "get_windows":
sendResponse(windows);
break;
case "get_groups":
if (windows[message.windowId]) {
sendResponse(windows[message.windowId].groups);
}
break;
case "save_groups":
windows[message.windowId].groups = Object.assign({}, message.groups);
schedule_save++;
break;
case "set_active_group":
windows[message.windowId].active_group = message.active_group;
schedule_save++;
break;
case "get_active_group":
if (windows[message.windowId]) {
sendResponse(windows[message.windowId].active_group);
}
break;
case "set_active_shelf":
windows[message.windowId].active_shelf = message.active_shelf;
schedule_save++;
break;
case "get_active_shelf":
if (windows[message.windowId]) {
sendResponse(windows[message.windowId].active_shelf);
}
break;
case "set_group_bar":
windows[message.windowId].group_bar = message.group_bar;
schedule_save++;
break;
case "get_group_bar":
if (windows[message.windowId]) {
sendResponse(windows[message.windowId].group_bar);
}
break;
case "console_log":
console.log(message.m);
break;
case "get_browser_tabs":
sendResponse(tabs);
break;
case "is_bg_busy":
sendResponse(hold);
break;
case "update_tab":
if (tabs[message.tabId]) {
for (var parameter in message.tab) {
tabs[message.tabId][parameter] = message.tab[parameter];
}
schedule_save++;
}
break;
}
});
}

433
bg_ff.js Normal file
View File

@ -0,0 +1,433 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
if (localStorage.getItem("t0") !== null){
LoadV015(0);
} else {
LoadPreferences();
FirefoxStart();
FirefoxMessageListeners();
}
function FirefoxStart() {
var SafeToRun = true;
chrome.tabs.query({windowType: "normal"}, function(t) {
// will loop forever if session restore tab is found
for (var tabIndex = 0; tabIndex < t.length; tabIndex++) {
if (t[tabIndex].url.match("about:sessionrestore") && t.length < 5) {
SafeToRun = false;
chrome.tabs.update(t[tabIndex].id, { active: true });
}
if (tabIndex == t.length-1) {
if (SafeToRun) {
FirefoxLoadTabs(0);
} else {
setTimeout(function() {
FirefoxStart();
}, 1000);
}
}
}
});
}
function FirefoxLoadTabs(retry) {
chrome.windows.getAll({windowTypes: ["normal"], populate: true}, function(w) {
var refTabs = {};
var tabs_matched = 0;
var tabs_count = 0;
for (var wIndex = 0; wIndex < w.length; wIndex++) {
tabs_count += w[wIndex].tabs.length;
}
// load tabs and windows from hdd
var LoadedWindows = LoadData("windows", []);
var LoadedTabs = LoadData("tabs", []);
// if loaded tabs mismatch by 50%, then try to load back
if (LoadedTabs.length < tabs_count*0.5 || retry > 0) {
LoadedTabs = LoadData("tabs_BAK"+retry, []);
}
// if loaded windows mismatch, then try to load back
if (LoadedWindows.length < w.length || retry > 0) {
LoadedWindows = LoadData("windows_BAK"+retry, []);
}
// CACHED COUNTS AND STUFF
var lastWinId = w[w.length-1].id;
var lastTabId = w[w.length-1].tabs[w[w.length-1].tabs.length-1].id;
var LoadedWinCount = LoadedWindows.length;
var LoadedTabsCount = LoadedTabs.length;
var WinCount = w.length;
for (var wIndex = 0; wIndex < WinCount; wIndex++) {
let winIndex = wIndex;
let winId = w[winIndex].id;
let tabsCount = w[winIndex].tabs.length;
let win = Promise.resolve(browser.sessions.getWindowValue(winId, "TTId")).then(function(TTId) { // LOAD TTID FROM FIREFOX GET WINDOW VALUE
if (TTId != undefined) {
windows[winId] = {ttid: TTId, group_bar: true, active_shelf: "", active_group: "tab_list", groups: {tab_list: {id: "tab_list", index: 0, activetab: 0, name: caption_ungrouped_group, font: ""}}, folders: {}};
} else {
windows[winId] = {ttid: "", group_bar: true, active_shelf: "", active_group: "tab_list", groups: {tab_list: {id: "tab_list", index: 0, activetab: 0, name: caption_ungrouped_group, font: ""}}, folders: {}};
}
for (var tIndex = 0; tIndex < tabsCount; tIndex++) {
let tabIndex = tIndex;
let tabId = w[winIndex].tabs[tabIndex].id;
let tabPinned = w[winIndex].tabs[tabIndex].pinned;
let tab = Promise.resolve(browser.sessions.getTabValue(tabId, "TTId")).then(function(TTId) { // LOAD TTID FROM FIREFOX GET TAB VALUE
if (TTId != undefined) {
tabs[tabId] = {ttid: TTId, parent: tabPinned ? "pin_list" : "tab_list", index: tabIndex, expand: "n"};
} else {
tabs[tabId] = {ttid: "", parent: tabPinned ? "pin_list" : "tab_list", index: tabIndex, expand: "n"};
}
// IF ON LAST TAB AND LAST WINDOW, START MATCHING LOADED DATA
if (tabId == lastTabId && winId == lastWinId) {
for (var ThisSessonWinId in windows) {
if (windows[ThisSessonWinId].ttid != ""){
for (var LwIndex = 0; LwIndex < LoadedWinCount; LwIndex++) {
if (LoadedWindows[LwIndex].ttid == windows[ThisSessonWinId].ttid) {
windows[ThisSessonWinId].group_bar = LoadedWindows[LwIndex].group_bar;
windows[ThisSessonWinId].active_shelf = LoadedWindows[LwIndex].active_shelf;
windows[ThisSessonWinId].active_group = LoadedWindows[LwIndex].active_group;
if (Object.keys(LoadedWindows[LwIndex].groups).length > 0) { windows[ThisSessonWinId].groups = Object.assign({}, LoadedWindows[LwIndex].groups); }
if (Object.keys(LoadedWindows[LwIndex].folders).length > 0) { windows[ThisSessonWinId].folders = Object.assign({}, LoadedWindows[LwIndex].folders); }
LoadedWindows[LwIndex].ttid = "";
break;
}
}
} else {
AppendWinTTId(parseInt(ThisSessonWinId));
}
}
// OK, DONE WITH WINDOWS, START TABS LOOP
for (var ThisSessonTabId in tabs) {
if (tabs[ThisSessonTabId].ttid != ""){
for (var LtabIndex = 0; LtabIndex < LoadedTabsCount; LtabIndex++) {
if (LoadedTabs[LtabIndex].ttid == tabs[ThisSessonTabId].ttid) {
refTabs[LoadedTabs[LtabIndex].id] = ThisSessonTabId;
tabs[ThisSessonTabId].parent = LoadedTabs[LtabIndex].parent;
tabs[ThisSessonTabId].index = LoadedTabs[LtabIndex].index;
tabs[ThisSessonTabId].expand = LoadedTabs[LtabIndex].expand;
LoadedTabs[LtabIndex].ttid = "";
tabs_matched++;
break;
}
}
} else {
AppendTabTTId(parseInt(ThisSessonTabId));
}
}
// OK, DONE, NOW REPLACE OLD PARENTS IDS WITH THIS SESSION IDS
for (var ThisSessonTabId in tabs) {
if (refTabs[tabs[ThisSessonTabId].parent] != undefined) {
tabs[ThisSessonTabId].parent = refTabs[tabs[ThisSessonTabId].parent];
}
}
// OK, SAME THING FOR ACTIVE TABS IN GROUPS
for (var ThisSessonWinId in windows) {
for (var group in windows[ThisSessonWinId].groups) {
if (refTabs[windows[ThisSessonWinId].groups[group].activetab]) {
windows[ThisSessonWinId].groups[group].activetab = refTabs[windows[ThisSessonWinId].groups[group].activetab];
}
}
}
// TODO
// replace parent tab ids for each folder using reference_tabs, unless tabs will be nested ONLY in tabs and folders ONLY in folders, I did not decide yet
// will try to find tabs for 3 times
if (opt.skip_load == true || retry > 2 || (tabs_matched > tabs_count*0.5)) {
hold = false;
FirefoxAutoSaveData("", 1000);
FirefoxAutoSaveData("_BAK1", 300000);
FirefoxAutoSaveData("_BAK2", 600000);
FirefoxAutoSaveData("_BAK3", 1800000);
FirefoxListeners();
} else {
setTimeout(function() {FirefoxLoadTabs(retry+1);}, 2000);
}
}
});
}
});
}
});
}
// save every second if there is anything to save obviously
// async function FirefoxAutoSaveData(BAK, timer) {
async function FirefoxAutoSaveData(BackupName, LoopTimer) {
setTimeout(function() {
FirefoxAutoSaveData(BackupName, LoopTimer);
if (schedule_save > 1 || BackupName != "") {schedule_save = 1;}
if (!hold && schedule_save > 0 && Object.keys(tabs).length > 1) {
chrome.windows.getAll({windowTypes: ['normal'], populate: true}, function(w) {
var WinCount = w.length;
var t_count = 0;
var counter = 0;
var Windows = [];
var Tabs = [];
for (var wIndex = 0; wIndex < WinCount; wIndex++) {
t_count = t_count + w[wIndex].tabs.length;
}
for (var wIndex = 0; wIndex < WinCount; wIndex++) {
let winId = w[wIndex].id;
if (windows[winId] != undefined && windows[winId].ttid != undefined && windows[winId].group_bar != undefined && windows[winId].active_shelf != undefined && windows[winId].active_group != undefined && windows[winId].groups != undefined && windows[winId].folders != undefined) {
Windows.push({ttid: windows[winId].ttid, group_bar: windows[winId].group_bar, active_shelf: windows[winId].active_shelf, active_group: windows[winId].active_group, groups: windows[winId].groups, folders: windows[winId].folders});
}
let TabsCount = w[wIndex].tabs.length;
for (var tabIndex = 0; tabIndex < TabsCount; tabIndex++) {
let tabId = w[wIndex].tabs[tabIndex].id;
if (tabs[tabId] != undefined && tabs[tabId].ttid != undefined && tabs[tabId].parent != undefined && tabs[tabId].index != undefined && tabs[tabId].expand != undefined) {
Tabs.push({id: tabId, ttid: tabs[tabId].ttid, parent: tabs[tabId].parent, index: tabs[tabId].index, expand: tabs[tabId].expand});
counter++;
}
}
if (counter == t_count) {
localStorage["t_count"] = JSON.stringify(t_count);
localStorage["w_count"] = JSON.stringify(WinCount);
localStorage["windows"+BackupName] = JSON.stringify(Windows);
localStorage["tabs"+BackupName] = JSON.stringify(Tabs);
}
}
schedule_save--;
});
}
}, LoopTimer);
}
function GenerateNewWindowID(){
var newID = GenerateRandomID();
var newIdAvailable = true;
for (var windowId in windows) {
if (windows[windowId].ttid == newID) {
newIdAvailable = false;
}
}
if (newIdAvailable) {
return newID;
} else {
GenerateNewWindowID();
}
}
function GenerateNewTabID(){
var newID = GenerateRandomID();
var newIdAvailable = true;
for (var tabId in tabs) {
if (tabs[tabId].ttid == newID) {
newIdAvailable = false;
}
}
if (newIdAvailable) {
return newID;
} else {
GenerateNewTabID();
}
}
function AppendTabTTId(tabId){
let NewTTTabId = GenerateNewTabID();
browser.sessions.setTabValue(tabId, "TTId", NewTTTabId);
if (tabs[tabId] != undefined) {
tabs[tabId].ttid = NewTTTabId;
} else {
tabs[tabId] = {ttid: NewTTTabId, parent: "tab_list", index: 0, expand: "n"};
}
}
function AppendWinTTId(windowId){
let NewTTWindowId = GenerateNewWindowID();
browser.sessions.setWindowValue(windowId, "TTId", NewTTWindowId);
if (windows[windowId] != undefined) {
windows[windowId].ttid = NewTTWindowId;
} else {
windows[windowId] = {ttid: NewTTWindowId, group_bar: true, active_shelf: "", active_group: "tab_list", groups: {tab_list: {id: "tab_list", index: 0, activetab: 0, name: caption_ungrouped_group, font: ""}}, folders: {}};
}
}
function ReplaceParents(oldTabId, newTabId) {
for (var tabId in tabs) {
if (tabs[tabId].parent == oldTabId) {
console.log("replaced tab id "+oldTabId+" with "+newTabId);
tabs[tabId].parent = newTabId;
}
}
// TO DO FOLDERS
}
var DETACHED_TABS___Bug1398272___WTF_ARE_YOU_DOING_MOZILLA = {};
// start all listeners
function FirefoxListeners() {
browser.browserAction.onClicked.addListener(function() {
browser.sidebarAction.setPanel({panel: (browser.extension.getURL("/sidebar.html")) });
browser.sidebarAction.open();
});
chrome.tabs.onCreated.addListener(function(tab) {
AppendTabTTId(tab.id);
chrome.runtime.sendMessage({command: "tab_created", windowId: tab.windowId, tab: tab, tabId: tab.id});
schedule_save++;
});
chrome.tabs.onAttached.addListener(function(tabId, attachInfo) {
chrome.tabs.get(tabId, function(tab) {
ReplaceParents(tabId, tab.id);
DETACHED_TABS___Bug1398272___WTF_ARE_YOU_DOING_MOZILLA[tabId] = tab.id;
tabs[tab.id] = tabs[tabId];
AppendTabTTId(tab.id);
// let ParentId = DETACHED_TABS___Bug1398272___WTF_ARE_YOU_DOING_MOZILLA[tabs[tabId].parent] ? DETACHED_TABS___Bug1398272___WTF_ARE_YOU_DOING_MOZILLA[tabs[tabId].parent] : tabs[tabId].parent;
// chrome.runtime.sendMessage({command: "tab_attached", windowId: attachInfo.newWindowId, tab: tab, tabId: tabId, ParentId: ParentId});
chrome.runtime.sendMessage({command: "tab_attached", windowId: attachInfo.newWindowId, tab: tab, tabId: tabId, ParentId: tabs[tabId].parent});
schedule_save++;
});
});
chrome.tabs.onDetached.addListener(function(tabId, detachInfo) {
let detachTabId = tabId;
if (DETACHED_TABS___Bug1398272___WTF_ARE_YOU_DOING_MOZILLA[tabId] != undefined) {
detachTabId = DETACHED_TABS___Bug1398272___WTF_ARE_YOU_DOING_MOZILLA[tabId];
setTimeout(function() {
delete DETACHED_TABS___Bug1398272___WTF_ARE_YOU_DOING_MOZILLA[tabId];
},2000);
}
chrome.runtime.sendMessage({command: "tab_detached", windowId: detachInfo.oldWindowId, tabId: detachTabId});
});
chrome.tabs.onRemoved.addListener(function(tabId, removeInfo) {
chrome.runtime.sendMessage({command: "tab_removed", windowId: removeInfo.windowId, tabId: tabId});
delete tabs[tabId];
schedule_save++;
});
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if (changeInfo.pinned == true) {
tabs[tabId].parent = "pin_list";
}
if (changeInfo.title != undefined && !tab.active) {
chrome.runtime.sendMessage({command: "tab_attention", windowId: tab.windowId, tabId: tabId});
}
chrome.runtime.sendMessage({command: "tab_updated", windowId: tab.windowId, tab: tab, tabId: tabId, changeInfo: changeInfo});
});
chrome.tabs.onReplaced.addListener(function(addedTabId, removedTabId) {
chrome.tabs.get(addedTabId, function(tab) {
if (addedTabId == removedTabId) {
chrome.runtime.sendMessage({command: "tab_updated", windowId: tab.windowId, tab: tab, tabId: tab.id, changeInfo: {status: tab.status, url: tab.url, title: tab.title, audible: tab.audible, mutedInfo: tab.mutedInfo}});
} else {
if (tabs[removedTabId]) {
tabs[addedTabId] = tabs[removedTabId];
}
ReplaceParents(tabId, tab.id);
chrome.runtime.sendMessage({command: "tab_removed", windowId: tab.windowId, tabId: removedTabId});
chrome.runtime.sendMessage({command: "tab_attached", windowId: tab.windowId, tab: tab, tabId: addedTabId, ParentId: tabs[addedTabId].parent});
delete tabs[removedTabId];
}
setTimeout(function() {
AppendTabTTId(addedTabId);
schedule_save++;
}, 100);
});
});
chrome.tabs.onActivated.addListener(function(activeInfo) {
chrome.runtime.sendMessage({command: "tab_activated", windowId: activeInfo.windowId, tabId: activeInfo.tabId});
});
chrome.windows.onCreated.addListener(function(window) {
AppendWinTTId(window.id);
schedule_save++;
});
chrome.windows.onRemoved.addListener(function(windowId) {
delete windows[windowId];
schedule_save++;
});
}
function FirefoxMessageListeners() {
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
switch(message.command) {
case "reload":
window.location.reload();
break;
case "get_windows":
sendResponse(windows);
break;
case "get_groups":
if (windows[message.windowId]) {
sendResponse(windows[message.windowId].groups);
}
break;
case "save_groups":
windows[message.windowId].groups = Object.assign({}, message.groups);
schedule_save++;
break;
case "set_active_group":
windows[message.windowId].active_group = message.active_group;
schedule_save++;
break;
case "get_active_group":
if (windows[message.windowId]) {
sendResponse(windows[message.windowId].active_group);
}
break;
case "set_active_shelf":
windows[message.windowId].active_shelf = message.active_shelf;
schedule_save++;
break;
case "get_active_shelf":
if (windows[message.windowId]) {
sendResponse(windows[message.windowId].active_shelf);
}
break;
case "set_group_bar":
windows[message.windowId].group_bar = message.group_bar;
schedule_save++;
break;
case "get_group_bar":
if (windows[message.windowId]) {
sendResponse(windows[message.windowId].group_bar);
}
break;
case "console_log":
console.log(message.m);
break;
case "get_browser_tabs":
sendResponse(tabs);
break;
case "is_bg_busy":
sendResponse(hold);
break;
case "update_tab":
if (tabs[message.tabId]) {
for (var parameter in message.tab) {
tabs[message.tabId][parameter] = message.tab[parameter];
}
schedule_save++;
}
break;
}
});
}

106
bg_v015_to_v1.js Normal file
View File

@ -0,0 +1,106 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
function OldHashTab(tab){
if (tabs[tab.id] == undefined){
tabs[tab.id] = {ttid: "", hash: 0, h: 0, parent: tab.pinned ? "pin_list" : "tab_list", index: tab.index, expand: "n"};
}
var hash = 0;
if (tab.url.length === 0){
return 0;
}
for (var i = 0; i < tab.url.length; i++){
hash = (hash << 5)-hash;
hash = hash+tab.url.charCodeAt(i);
hash |= 0;
}
tabs[tab.id].h = hash;
}
function LoadV015(retry){
var loaded_options = {};
for (var parameter in DefaultPreferences) {
opt[parameter] = DefaultPreferences[parameter];
}
// set loaded options
if (localStorage.getItem("current_options") !== null){
loaded_options = JSON.parse(localStorage["current_options"]);
}
for (var parameter in opt) {
if (loaded_options[parameter] != undefined && opt[parameter] != undefined){
opt[parameter] = loaded_options[parameter];
}
}
SavePreferences();
if (localStorage.getItem("current_options") !== null){
localStorage.removeItem("current_options");
}
chrome.tabs.query({windowType: "normal"}, function(qtabs){
// create current tabs object
qtabs.forEach(function(Tab){
OldHashTab(Tab);
});
var reference_tabs = {};
var tabs_to_save = [];
var tabs_matched = 0;
// compare saved tabs from storage to current session tabs, but can be skipped if set in options
qtabs.forEach(function(Tab){
for (var t = 0; t < 9999; t++){
if (localStorage.getItem("t"+t) !== null){
var LoadedTab = JSON.parse(localStorage["t"+t]);
if (LoadedTab[1] === tabs[Tab.id].h && reference_tabs[LoadedTab[0]] == undefined){
reference_tabs[LoadedTab[0]] = Tab.id;
tabs[Tab.id].parent = LoadedTab[2];
tabs[Tab.id].index = LoadedTab[3];
tabs[Tab.id].expand = LoadedTab[4];
tabs_matched++;
break;
}
} else {
break;
}
}
});
// replace parents tabIds to new ones, for that purpose reference_tabs was made before
for (var tabId in tabs){
if (reference_tabs[tabs[tabId].parent] != undefined){
tabs[tabId].parent = reference_tabs[tabs[tabId].parent];
}
}
if (browserId == "F") {
// append ids to firefox tabs
qtabs.forEach(function(Tab){
AppendTabTTId(Tab.id);
});
qtabs.forEach(function(Tab){
tabs_to_save.push({id: Tab.id, ttid: tabs[tabId].ttid, parent: tabs[Tab.id].parent, index: tabs[Tab.id].index, expand: tabs[Tab.id].expand});
});
} else {
// create new hashes
qtabs.forEach(function(Tab){
ChromeHashURL(Tab);
});
qtabs.forEach(function(Tab){
tabs_to_save.push({id: Tab.id, hash: tabs[Tab.id].hash, parent: tabs[Tab.id].parent, index: tabs[Tab.id].index, expand: tabs[Tab.id].expand});
});
}
localStorage["t_count"] = JSON.stringify(qtabs.length);
localStorage["tabs"] = JSON.stringify(tabs_to_save);
for (var t = 0; t < 9999; t++){
if (localStorage.getItem("t"+t) !== null){
localStorage.removeItem("t"+t);
}
}
window.location.reload();
});
}

View File

@ -1,298 +0,0 @@
var ColorsSet = {
// scrolls
"scrollbar_thumb": "#cdcdcd",
"scrollbar_thumb_hover": "#a6a6a6",
"scrollbar_track": "#e4e4e4",
// toolbar
"toolbar_background": "#f2f2f2",
"toolbar_border_bottom": "#cccccc",
"button_border": "#f2f2f2",
"button_background": "#f2f2f2",
"button_hover_border": "#bebebe",
"button_hover_background": "#dcdcdc",
"button_icons": "#808080",
"filter_box_background": "#fafafa",
"filter_box_border": "#cccccc",
"filter_box_font": "#333333",
"filter_clear_icon": "#808080",
// lists
"pin_list_border_bottom": "#cccccc",
"pin_list_background": "#fafafa",
"tab_list_background": "#fafafa",
// tabs
"tab_background": "#f2f2f2",
"tab_border": "#bebebe",
"tab_hover_background": "#d7d7d7",
"tab_hover_border": "#878787",
"tab_selected_background": "#e5f3fb",
"tab_selected_border": "#70c0e7",
"tab_selected_hover_border": "#78aee5",
"tab_selected_hover_background": "#d0e2f0",
"tab_filtered": "#e8e000",
"tab_filtered_highlighted": "#ffa500",
"tab_filtered_selected": "#0f8079",
"tab_filtered_selected_active": "#1299a9",
"active_font_weight": "bold",
// tabs title
"tab_title": "#000000",
"tab_title_active": "#000000",
"tab_title_discarded": "#7e7e7e",
// drag&drop placeholder indicator
"drag_indicator": "#339bf3",
// close button
"close_x": "#7d7d7d",
"close_hover_x": "#fbfcfe",
"close_hover_border": "#757676",
"close_hover_background": "#939394",
// trees expand
"expand_open_border": "#339bf3",
"expand_open_background": "#d0e2f0",
"expand_closed_border": "#969696",
"expand_closed_background": "#eaeaea",
"expand_lines": "#cccccc",
"tabs_menu_font": "#333333",
"tabs_menu_background": "#fafafa",
"tabs_menu_border": "#bebebe",
"tabs_menu_hover_background": "#efefef",
"tabs_menu_hover_border": "#bebebe",
"tabs_menu_separator": "#efefef"
}
var TabsSizeSets = [
//0
{
"pin_width": "22px",
"pin_height": "20px",
"tab_height": "15px",
"tab_height_line": "17px",
"expand_box_size": "5px",
"expand_box_top": "4px",
"expand_box_left": "3px",
"expand_line_h_top": "7px",
"expand_line_h_width": "12px",
"expand_line_h_oc_width": "3px",
"expand_line_v_top": "-7px",
"expand_line_v_left": "0px",
"expand_line_v_last_height": "15px",
"title_padding_with_close": "20px",
"title_font_size": "10.5px",
"title_padding_left": "19px",
"drag_area_top": "6px",
"drag_area_bottom": "4px",
"close_top": "1px",
"close_right": "1px",
"close_size": "11px",
"favicon_size": "13px 13px",
"favicon_pos": "2px center"
},
//1
{
"pin_width": "24px",
"pin_height": "22px",
"tab_height": "17px",
"tab_height_line": "19px",
"expand_box_size": "5px",
"expand_box_top": "5px",
"expand_box_left": "3px",
"expand_line_h_top": "8px",
"expand_line_h_width": "12px",
"expand_line_h_oc_width": "3px",
"expand_line_v_top": "-8px",
"expand_line_v_left": "0px",
"expand_line_v_last_height": "17px",
"title_padding_with_close": "20px",
"title_font_size": "10.5px",
"title_padding_left": "20px",
"drag_area_top": "7px",
"drag_area_bottom": "5px",
"close_top": "2px",
"close_right": "2px",
"close_size": "11px",
"favicon_size": "14px 14px",
"favicon_pos": "3px center"
},
//2
{
"pin_width": "26px",
"pin_height": "24px",
"tab_height": "19px",
"tab_height_line": "23px",
"expand_box_size": "5px",
"expand_box_top": "6px",
"expand_box_left": "3px",
"expand_line_h_top": "9px",
"expand_line_h_width": "12px",
"expand_line_h_oc_width": "3px",
"expand_line_v_top": "-9px",
"expand_line_v_left": "0px",
"expand_line_v_last_height": "19px",
"title_padding_with_close": "24px",
"title_font_size": "12px",
"title_padding_left": "25px",
"drag_area_top": "7px",
"drag_area_bottom": "5px",
"close_top": "2px",
"close_right": "2px",
"close_size": "13px",
"favicon_size": "16px 16px",
"favicon_pos": "4px center"
},
//3
{
"pin_width": "28px",
"pin_height": "26px",
"tab_height": "21px",
"tab_height_line": "25px",
"expand_box_size": "5px",
"expand_box_top": "7px",
"expand_box_left": "3px",
"expand_line_h_top": "10px",
"expand_line_h_width": "12px",
"expand_line_h_oc_width": "3px",
"expand_line_v_top": "-10px",
"expand_line_v_left": "0px",
"expand_line_v_last_height": "21px",
"title_padding_with_close": "24px",
"title_font_size": "12px",
"title_padding_left": "25px",
"drag_area_top": "8px",
"drag_area_bottom": "5px",
"close_top": "3px",
"close_right": "3px",
"close_size": "13px",
"favicon_size": "16px 16px",
"favicon_pos": "4px center"
},
//4
{
"pin_width": "30px",
"pin_height": "28px",
"tab_height": "23px",
"tab_height_line": "26px",
"expand_box_size": "5px",
"expand_box_top": "8px",
"expand_box_left": "3px",
"expand_line_h_top": "11px",
"expand_line_h_width": "12px",
"expand_line_h_oc_width": "3px",
"expand_line_v_top": "-11px",
"expand_line_v_left": "0px",
"expand_line_v_last_height": "23px",
"title_padding_with_close": "24px",
"title_font_size": "12.5px",
"title_padding_left": "25px",
"drag_area_top": "9px",
"drag_area_bottom": "6px",
"close_top": "4px",
"close_right": "4px",
"close_size": "14px",
"favicon_size": "16px 16px",
"favicon_pos": "4px center"
}
];
var CurrentThemeVersion = 1;
var TabsSizeSet = 2;
var ScrollbarPinList = 4;
var ScrollbarTabList = 16;
var ToolbarShow = true;
var ToolbarSet = $("#toolbar").html();
function SaveTheme(themeName){
var themeObj = {
"toolbar": ToolbarSet,
"ToolbarShow": ToolbarShow,
"ColorsSet": ColorsSet,
"TabsSizeSetNumber": TabsSizeSet,
"TabsSizeSet": TabsSizeSets[TabsSizeSet],
"ScrollbarPinList": ScrollbarPinList,
"ScrollbarTabList": ScrollbarTabList,
"theme_version": CurrentThemeVersion
};
localStorage["theme"+themeName] = JSON.stringify(themeObj);
return themeObj;
}
if (localStorage.getItem("themeDefault") === null){
SaveTheme("Default");
localStorage["current_theme"] = "Default";
} else {
var theme = JSON.parse(localStorage["themeDefault"]);
if (theme.theme_version != CurrentThemeVersion){
SaveTheme("Default");
}
}

View File

@ -0,0 +1,8 @@
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"/></head>
<body></body>
<script type="text/javascript" src="../scripts/global.js"></script>
<script type="text/javascript" src="../bg_v015_to_v1.js"></script>
<script type="text/javascript" src="../bg_ch.js"></script>
</html>

341
files_chrome/bg_ch.js Normal file
View File

@ -0,0 +1,341 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
if (localStorage.getItem("t0") !== null){
LoadV015(0);
} else {
LoadPreferences();
ChromeLoadTabs(0);
ChromeMessageListeners();
}
function ChromeLoadTabs(retry) {
chrome.windows.getAll({windowTypes: ['normal'], populate: true}, function(w) {
var refTabs = {};
var tabs_matched = 0;
// load tabs and windows from hdd
var w_count = LoadData("w_count", 0);
var t_count = LoadData("t_count", 0);
var LoadedWindows = LoadData("windows", []);
var LoadedTabs = LoadData("tabs", []);
// if loaded tabs mismatch by 50%, then try to load back
if (LoadedTabs.length < t_count*0.5 || retry > 0) {
LoadedTabs = LoadData("tabs_BAK"+retry, []);
}
// if loaded windows mismatch, then try to load back
if (LoadedWindows.length < w_count || retry > 0) {
LoadedWindows = LoadData("windows_BAK"+retry, []);
}
// CACHED COUNTS
var WinCount = w.length;
var LoadedWinCount = LoadedWindows.length;
var LoadedTabsCount = LoadedTabs.length;
for (var wIndex = 0; wIndex < WinCount; wIndex++) {
if (w[wIndex].tabs[0].url != "chrome://videopopout/") { // this is for opera for their extra video popup, which is weirdly queried as a "normal" window
let winId = w[wIndex].id;
let url1 = w[wIndex].tabs[0].url;
let url2 = w[wIndex].tabs[w[wIndex].tabs.length-1].url;
windows[winId] = {group_bar: true, active_shelf: "", active_group: "tab_list", groups: {tab_list: {id: "tab_list", index: 0, activetab: 0, name: caption_ungrouped_group, font: ""}}, folders: {}};
for (var LwIndex = 0; LwIndex < LoadedWinCount; LwIndex++) {
if (LoadedWindows[LwIndex].url1 == url1 || LoadedWindows[LwIndex].url2 == url2) {
windows[winId].group_bar = LoadedWindows[LwIndex].group_bar;
windows[winId].active_shelf = LoadedWindows[LwIndex].active_shelf;
windows[winId].active_group = LoadedWindows[LwIndex].active_group;
if (Object.keys(LoadedWindows[LwIndex].groups).length > 0) { windows[winId].groups = Object.assign({}, LoadedWindows[LwIndex].groups); }
if (Object.keys(LoadedWindows[LwIndex].folders).length > 0) { windows[winId].folders = Object.assign({}, LoadedWindows[LwIndex].folders); }
LoadedWindows[LwIndex].url1 = "";
LoadedWindows[LwIndex].url2 = "";
break;
}
}
}
}
for (var wIndex = 0; wIndex < WinCount; wIndex++) {
var TabsCount = w[wIndex].tabs.length;
for (var tabIndex = 0; tabIndex < TabsCount; tabIndex++) {
ChromeHashURL(w[wIndex].tabs[tabIndex]);
}
}
// compare saved tabs from storage to current session tabs, but can be skipped if set in options
if (opt.skip_load == false && LoadedTabs.length > 0) {
// match loaded tabs
for (var wIndex = 0; wIndex < WinCount; wIndex++) {
var TabsCount = w[wIndex].tabs.length;
for (var tabIndex = 0; tabIndex < TabsCount; tabIndex++) {
for (var LtabIndex = 0; LtabIndex < LoadedTabsCount; LtabIndex++) {
let tabId = w[wIndex].tabs[tabIndex].id;
if (LoadedTabs[LtabIndex].hash == tabs[tabId].hash && refTabs[LoadedTabs[LtabIndex].id] == undefined) {
refTabs[LoadedTabs[LtabIndex].id] = tabId;
tabs[tabId].parent = LoadedTabs[LtabIndex].parent;
tabs[tabId].index = LoadedTabs[LtabIndex].index;
tabs[tabId].expand = LoadedTabs[LtabIndex].expand;
LoadedTabs[LtabIndex].hash = undefined;
tabs_matched++;
break;
}
}
}
}
// replace parents tabIds for new ones, for that purpose refTabs was made before
for (var tabId in tabs) {
if (refTabs[tabs[tabId].parent] != undefined) {
tabs[tabId].parent = refTabs[tabs[tabId].parent];
}
}
}
// replace active tab ids for each group using refTabs
for (var windowId in windows) {
for (var group in windows[windowId].groups) {
if (refTabs[windows[windowId].groups[group].activetab]) {
windows[windowId].groups[group].activetab = refTabs[windows[windowId].groups[group].activetab];
}
}
}
// will try to find tabs for 3 times
if (opt.skip_load == true || retry > 2 || (tabs_matched > t_count*0.5)) {
schedule_save++;
hold = false;
ChromeAutoSaveData("", 1000);
ChromeAutoSaveData("_BAK1", 300000);
ChromeAutoSaveData("_BAK2", 600000);
ChromeAutoSaveData("_BAK3", 1800000);
ChromeListeners();
} else {
setTimeout(function() {ChromeLoadTabs(retry+1);}, 2000);
}
});
}
// You maybe are asking yourself why I save tabs in array? It's because, instead of, keeping 2 index numbers (one for browser tabs on top and one for my index in tree), it's easier to just arrange them in order and save it in localstorage.
// Another reason is that Object does not preserve order in chrome, I've been told that in Firefox it is. But I can't trust that.
async function ChromeAutoSaveData(BackupName, LoopTimer) {
setTimeout(function() {
ChromeAutoSaveData(BackupName, LoopTimer);
if (schedule_save > 1 || BackupName != "") {schedule_save = 1;}
if (!hold && schedule_save > 0 && Object.keys(tabs).length > 1) {
chrome.windows.getAll({windowTypes: ['normal'], populate: true}, function(w) {
var WinCount = w.length;
var t_count = 0;
var counter = 0;
var Windows = [];
var Tabs = [];
for (var wIndex = 0; wIndex < WinCount; wIndex++) {
t_count += w[wIndex].tabs.length;
}
for (var wIndex = 0; wIndex < WinCount; wIndex++) {
let winId = w[wIndex].id;
if (windows[winId] != undefined && windows[winId].group_bar != undefined && windows[winId].active_shelf != undefined && windows[winId].active_group != undefined && windows[winId].groups != undefined && windows[winId].folders != undefined) {
Windows.push({url1: w[wIndex].tabs[0].url, url2: w[wIndex].tabs[w[wIndex].tabs.length-1].url, group_bar: windows[winId].group_bar, active_shelf: windows[winId].active_shelf, active_group: windows[winId].active_group, groups: windows[winId].groups, folders: windows[winId].folders});
}
let TabsCount = w[wIndex].tabs.length;
for (var tabIndex = 0; tabIndex < TabsCount; tabIndex++) {
let tabId = w[wIndex].tabs[tabIndex].id;
if (tabs[tabId] != undefined && tabs[tabId].hash != undefined && tabs[tabId].parent != undefined && tabs[tabId].index != undefined && tabs[tabId].expand != undefined) {
Tabs.push({id: tabId, hash: tabs[tabId].hash, parent: tabs[tabId].parent, index: tabs[tabId].index, expand: tabs[tabId].expand});
counter++;
}
}
if (counter == t_count) {
localStorage["t_count"] = JSON.stringify(t_count);
localStorage["w_count"] = JSON.stringify(WinCount);
localStorage["windows"+BackupName] = JSON.stringify(Windows);
localStorage["tabs"+BackupName] = JSON.stringify(Tabs);
}
}
schedule_save--;
});
}
}, LoopTimer);
}
function ChromeHashURL(tab){
if (tabs[tab.id] == undefined) {
tabs[tab.id] = {hash: 0, parent: tab.pinned ? "pin_list" : "tab_list", index: tab.index, expand: "n"};
}
var hash = 0;
for (var charIndex = 0; charIndex < tab.url.length; charIndex++){
hash += tab.url.charCodeAt(charIndex);
}
tabs[tab.id].hash = hash;
}
function ReplaceParents(oldTabId, newTabId) {
for (var tabId in tabs) {
if (tabs[tabId].parent == oldTabId) {
tabs[tabId].parent = newTabId;
}
}
// TO DO FOLDERS
}
// start all listeners
function ChromeListeners() {
chrome.tabs.onCreated.addListener(function(tab) {
ChromeHashURL(tab);
chrome.runtime.sendMessage({command: "tab_created", windowId: tab.windowId, tab: tab, tabId: tab.id});
schedule_save++;
});
chrome.tabs.onRemoved.addListener(function(tabId, removeInfo) {
chrome.runtime.sendMessage({command: "tab_removed", windowId: removeInfo.windowId, tabId: tabId});
delete tabs[tabId];
schedule_save++;
});
chrome.tabs.onAttached.addListener(function(tabId, attachInfo) {
chrome.tabs.get(tabId, function(tab) {
chrome.runtime.sendMessage({command: "tab_attached", windowId: attachInfo.newWindowId, tab: tab, tabId: tabId, ParentId: tabs[tabId].parent});
});
schedule_save++;
});
chrome.tabs.onDetached.addListener(function(tabId, detachInfo) {
chrome.runtime.sendMessage({command: "tab_detached", windowId: detachInfo.oldWindowId, tabId: tabId});
schedule_save++;
});
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if (tabs[tabId] == undefined || changeInfo.url != undefined) {
ChromeHashURL(tab);
}
if (changeInfo.pinned != undefined) {
schedule_save++;
}
if (changeInfo.pinned == true) {
tabs[tabId].parent = "pin_list";
}
if (changeInfo.title != undefined && !tab.active) {
chrome.runtime.sendMessage({command: "tab_attention", windowId: tab.windowId, tabId: tabId});
}
chrome.runtime.sendMessage({command: "tab_updated", windowId: tab.windowId, tab: tab, tabId: tabId, changeInfo: changeInfo});
});
chrome.tabs.onMoved.addListener(function(tabId, moveInfo) {
schedule_save++;
});
chrome.tabs.onReplaced.addListener(function(addedTabId, removedTabId) {
chrome.tabs.get(addedTabId, function(tab) {
if (addedTabId == removedTabId) {
chrome.runtime.sendMessage({command: "tab_updated", windowId: tab.windowId, tab: tab, tabId: tab.id, changeInfo: {status: tab.status, url: tab.url, title: tab.title, audible: tab.audible, mutedInfo: tab.mutedInfo}});
} else {
ReplaceParents(tabId, tab.id);
if (tabs[removedTabId]) {
tabs[addedTabId] = tabs[removedTabId];
} else {
ChromeHashURL(tab);
}
chrome.runtime.sendMessage({command: "tab_removed", windowId: tab.windowId, tabId: removedTabId});
chrome.runtime.sendMessage({command: "tab_attached", windowId: tab.windowId, tab: tab, tabId: addedTabId});
delete tabs[removedTabId];
}
schedule_save++;
});
});
chrome.tabs.onActivated.addListener(function(activeInfo) {
chrome.runtime.sendMessage({command: "tab_activated", windowId: activeInfo.windowId, tabId: activeInfo.tabId});
});
chrome.windows.onCreated.addListener(function(window) {
windows[window.id] = {group_bar: true, active_shelf: "", active_group: "tab_list", groups: {tab_list: {id: "tab_list", index: 0, activetab: 0, name: caption_ungrouped_group, font: ""}}, folders: {}};
schedule_save++;
});
chrome.windows.onRemoved.addListener(function(windowId) {
delete windows[windowId];
schedule_save++;
});
chrome.runtime.onSuspend.addListener(function() {
hold = true;
});
}
function ChromeMessageListeners() {
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
switch(message.command) {
case "reload":
window.location.reload();
break;
case "get_windows":
sendResponse(windows);
break;
case "get_groups":
if (windows[message.windowId]) {
sendResponse(windows[message.windowId].groups);
}
break;
case "save_groups":
windows[message.windowId].groups = Object.assign({}, message.groups);
schedule_save++;
break;
case "set_active_group":
windows[message.windowId].active_group = message.active_group;
schedule_save++;
break;
case "get_active_group":
if (windows[message.windowId]) {
sendResponse(windows[message.windowId].active_group);
}
break;
case "set_active_shelf":
windows[message.windowId].active_shelf = message.active_shelf;
schedule_save++;
break;
case "get_active_shelf":
if (windows[message.windowId]) {
sendResponse(windows[message.windowId].active_shelf);
}
break;
case "set_group_bar":
windows[message.windowId].group_bar = message.group_bar;
schedule_save++;
break;
case "get_group_bar":
if (windows[message.windowId]) {
sendResponse(windows[message.windowId].group_bar);
}
break;
case "console_log":
console.log(message.m);
break;
case "get_browser_tabs":
sendResponse(tabs);
break;
case "is_bg_busy":
sendResponse(hold);
break;
case "update_tab":
if (tabs[message.tabId]) {
for (var parameter in message.tab) {
tabs[message.tabId][parameter] = message.tab[parameter];
}
schedule_save++;
}
break;
}
});
}

View File

@ -0,0 +1,8 @@
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"/></head>
<body></body>
<script type="text/javascript" src="../scripts/global.js"></script>
<script type="text/javascript" src="../bg_v015_to_v1.js"></script>
<script type="text/javascript" src="../bg_ff.js"></script>
</html>

View File

@ -2,7 +2,7 @@
"manifest_version": 2,
"default_locale": "en",
"background": {
"scripts": [ "background.js" ],
"page": "background.html",
"persistent": true
},
"name": "Tree Tabs",
@ -15,32 +15,24 @@
"16": "icons/16.png"
},
"permissions": [ "tabs", "sessions", "<all_urls>" ],
"commands": {
"goto_tab_above": {
"suggested_key": {
"default": "Alt+1"
},
"description": "Go to tab above"
},
"goto_tab_below": {
"suggested_key": {
"default": "Alt+2"
},
"description": "Go to tab below"
}
},
"sidebar_action": {
"default_icon": {
"16": "icons/16.png",
"19": "icons/16.png",
"38": "icons/38.png"
},
"default_panel": "sidebar.html",
"default_title": "Tree Tabs"
"default_title": "Tree Tabs",
"browser_style": false
},
"browser_action": {
"default_icon": "icons/24.png"
},
"applications": {
"gecko": {
"id": "TreeTabs@jagiello.it",
"strict_min_version": "54.0"
"strict_min_version": "57.0"
}
},
"options_ui": {

View File

@ -15,7 +15,7 @@
"19": "icons/16.png",
"16": "icons/16.png"
},
"permissions": [ "tabs", "sessions", "chrome://favicon/" ],
"permissions": [ "tabs", "sessions", "<all_urls>" ],
"commands": {
"goto_tab_above": {
"suggested_key": {

View File

@ -14,7 +14,7 @@
"19": "icons/16.png",
"16": "icons/16.png"
},
"permissions": [ "tabs", "sessions", "chrome://favicon/" ],
"permissions": [ "tabs", "sessions", "<all_urls>" ],
"commands": {
"goto_tab_above": {
"suggested_key": {
@ -33,5 +33,5 @@
"page": "options.html",
"open_in_tab": false
},
"version": "0.0.16"
"version": "1.0"
}

View File

@ -2,7 +2,7 @@
"manifest_version": 2,
"default_locale": "en",
"background": {
"scripts": [ "background.js" ],
"page": "background.html",
"persistent": true
},
"name": "Tree Tabs",
@ -14,24 +14,30 @@
"19": "icons/16.png",
"16": "icons/16.png"
},
"permissions": [ "tabs", "sessions", "chrome://favicon/" ],
"commands": {
"goto_tab_above": {
"suggested_key": {
"default": "Alt+1"
},
"description": "Go to tab above"
"permissions": [ "tabs", "sessions", "<all_urls>" ],
"sidebar_action": {
"default_icon": {
"16": "icons/16.png",
"19": "icons/16.png",
"38": "icons/38.png"
},
"goto_tab_below": {
"suggested_key": {
"default": "Alt+2"
},
"description": "Go to tab below"
"default_panel": "sidebar.html",
"default_title": "Tree Tabs",
"browser_style": false
},
"browser_action": {
"default_icon": "icons/24.png"
},
"applications": {
"gecko": {
"id": "TreeTabs@jagiello.it",
"strict_min_version": "57.0"
}
},
"options_ui": {
"page": "options.html",
"open_in_tab": false
"open_in_tab": true
},
"version": "0.0.16"
}
"version": "1.0"
}

View File

@ -3,88 +3,37 @@
<head>
<meta charset="utf-8"/>
<title></title>
<style rel="stylesheet">
body:hover #donate {
animation: shake 0.82s cubic-bezier(.36,.07,.19,.97) both;
transform: translate3d(0, 0, 0);
backface-visibility: hidden;
perspective: 1000px;
}
@keyframes shake {
10%, 90% {
transform: translate3d(-1px, 0, 0);
}
20%, 80% {
transform: translate3d(2px, 0, 0);
}
30%, 50%, 70% {
transform: translate3d(-4px, 0, 0);
}
40%, 60% {
transform: translate3d(4px, 0, 0);
}
}
body {
margin: 20px;
background-color: transparent;
border: none;
width: auto;
height: auto;
overflow: auto;
padding: 0;
font-family: Arial;
font-size: 13px;
cursor: default;
}
.field {
width: 850px;
word-wrap: break-word;
overflow: hidden;
margin-bottom:15px;
}
ul {
padding-left: 22px;
}
ul li {
margin: 5px;
}
.label {
padding-left: 6px;
padding-right: 6px;
}
.cp {
position:relative;
left:-10px;
top:-10px;
width:40px;
height:40px;
border:none;
margin:none;
}
.cb {
border:1px solid #636363;
overflow:hidden;
width:20px;
height:20px;
margin-bottom:2px;
}
</style>
<link type="text/css" rel="stylesheet" media="all" href="../options/options.css" id="main_body_css" />
<link type="text/css" rel="stylesheet" media="all" href="../theme/theme_size_preset_0.css" id="sizes_preset_0" />
<link type="text/css" rel="stylesheet" media="all" href="../theme/theme_size_preset_1.css" id="sizes_preset_1" />
<link type="text/css" rel="stylesheet" media="all" href="../theme/theme_size_preset_2.css" id="sizes_preset_2" />
<link type="text/css" rel="stylesheet" media="all" href="../theme/theme_size_preset_3.css" id="sizes_preset_3" />
<link type="text/css" rel="stylesheet" media="all" href="../theme/theme_size_preset_4.css" id="sizes_preset_4" />
<link type="text/css" rel="stylesheet" media="all" href="../theme/theme_colors.css" id="theme_colors" />
<link type="text/css" rel="stylesheet" media="all" href="../theme/theme.css" id="theme" />
<link type="text/css" rel="stylesheet" media="all" href="../options/theme_size_settings_0.css" id="size_settings_0" />
<link type="text/css" rel="stylesheet" media="all" href="../options/theme_size_settings_1.css" id="size_settings_1" />
<link type="text/css" rel="stylesheet" media="all" href="../options/theme_size_settings_2.css" id="size_settings_2" />
<link type="text/css" rel="stylesheet" media="all" href="../options/theme_size_settings_3.css" id="size_settings_3" />
<link type="text/css" rel="stylesheet" media="all" href="../options/theme_size_settings_4.css" id="size_settings_4" />
<style rel="stylesheet"> #red_higlights_go_here { background-color: transparent; } </style>
<script type="text/javascript" src="../lib_jquery/jquery-3.2.1.min.js"></script>
</head>
<body id="body">
<div style="width:850px; align:left;"><span style="width:100%; font-size:20px; display:inline-block; text-align:center; ">Tree Tabs</span></div>
<br>
<fieldset class="field" id="field_vivaldi">
<legend class="label" id="options_vivaldi"></legend>
<table>
<tr>
<td class="label" id="opt_url_for_web_panel"></td>
<td><input style="position:relative;width:450px;left:8px;" type="text" id="url_for_web_panel" value="test"></input></td>
<td><div style="position:relative; width:20px; height: 20px; left:8px; background-size: 20px 20px; background-image: url(../options/options_copy_icon.png);" id="copy_vivaldi_url_for_web_panel" ></div></td>
</tr>
</table>
</fieldset>
@ -109,6 +58,16 @@
<fieldset class="field" id="field_tabs">
<legend class="label" id="options_tabs"></legend>
<table style="display:vinline-block;">
<tr>
<td><input type="checkbox" class="opt_checkbox bg_opt" id="syncro_tabbar_tabs_order"></input></td>
<td style="position:relative;left:2px;width:3px;">-</td>
<td class="label" id="options_syncro_tabbar_tabs_order"></td>
</tr>
<tr>
<td><input type="checkbox" class="opt_checkbox bg_opt" id="switch_with_scroll"></input></td>
<td style="position:relative;left:2px;width:3px;">-</td>
<td class="label" id="options_switch_with_scroll"></td>
</tr>
<tr>
<td><input type="checkbox" class="opt_checkbox bg_opt" id="close_with_MMB"></input></td>
<td style="position:relative;left:2px;width:3px;">-</td>
@ -144,17 +103,13 @@
<td style="position:relative;top:-1px;left:2px;width:3px;">-</td>
<td class="label" id="options_skip_load"></td>
</tr>
</table>
<table id="faster_scroll_for_firefox" style="display:vinline-block;">
<tr>
<td><input type="checkbox" class="opt_checkbox bg_opt" id="faster_scroll"></input></td>
<td><input type="checkbox" class="opt_checkbox bg_opt" id="max_tree_drag_drop"></input></td>
<td style="position:relative;left:2px;width:3px;">-</td>
<td class="label" id="options_faster_scroll"></td>
<td class="label" id="options_max_tree_drag_drop"></td>
</tr>
</table>
<ul>
<li>
<label class="label" id="options_append_child_tab"></label>
@ -212,236 +167,149 @@
<button class="set_button" type="button" id="options_remove_theme_button" style="margin:10px;">Remove</button>
<button class="set_button" type="button" id="options_import_theme_button" style="margin:10px;">Import</button>
<button class="set_button" type="button" id="options_export_theme_button" style="margin:10px;">Export</button>
<input type="file" multiple id="import_theme" style="display:none"></input>
<fieldset class="field" id="field_show_toolbar" style="width:816px;">
<fieldset class="field" id="field_show_toolbar" style="position: relative; width:816px;">
<legend id="toolbar_legend">
<input type="checkbox" style="position:relative; top:-1px;" id="show_toolbar"></input>
<label class="label" style="position:relative; top:-3px;" id="options_toolbar"></label>
</legend>
<label class="label" style="margin-bottom: 10px; margin-top: 4px; display: inline-block;" id="options_available_buttons"></label>
<label class="label" style="margin-top: 4px;" id="options_available_buttons"></label>
<div class="toolbar" id="toolbar" style="height: 94px; width: 250px;">
<div class="toolbar_int" id="toolbar_main">
<div class="button" id="button_new"><div class="button_img"></div></div>
<div class="button" id="button_pin"><div class="button_img"></div></div>
<div class="button" id="button_undo"><div class="button_img"></div></div>
<div class="button" id="button_search"><div class="button_img"></div></div>
<div class="button" id="button_tools"><div class="button_img"></div></div>
<div id="sample_toolbar_block" style="position:relative; margin-top: 10px; width: 355px;">
<div id="toolbar_unused_buttons" style="position: relative; background-color: #b8ffbf; height: 30px; width: 350px;"></div>
<div id="toolbar_colors_pick_block" style="position: relative; top: 5px; width: 355px; height: 26px;">
<div class="pick_col font_color" id="filter_box_font"></div>
<div class="pick_col color_x" id="filter_clear_icon"></div>
<div class="pick_col color_bucket" id="filter_box_background"></div>
<div class="pick_col color_border" id="filter_box_border"></div>
<div class="pick_col color_bucket" id="button_background"></div>
<div class="pick_col color_bucket pick_col_hover" id="button_hover_background"></div>
<div class="pick_col color_bucket" id="toolbar_background"></div>
<div class="pick_col color_border" id="toolbar_border_bottom"></div>
<div class="pick_col color_toolbar_icon" id="button_icons"></div>
<div class="pick_col color_toolbar_icon pick_col_hover" id="button_icons_hover"></div>
<div class="pick_col color_border" id="button_border"></div>
<div class="pick_col color_border pick_col_hover" id="button_hover_border"></div>
</div>
<div class="toolbar_int" id="toolbar_search">
<div id="toolbar_search_input_box">
<input id="filter_box" type="text" placeholder="Search tabs..."></input>
<div id="button_filter_clear" style="opacity:0;" type="reset"></div>
</div>
<div id="toolbar_search_buttons">
<div class="button" id="button_filter_type"><div class="button_img"></div></div>
<div class="button" id="filter_search_go_prev"><div class="button_img"></div></div>
<div class="button" id="filter_search_go_next"><div class="button_img"></div></div>
</div>
</div>
<div class="toolbar_int" id="toolbar_tools">
<div class="button" id="button_options"><div class="button_img"></div></div>
<div class="button" id="button_bookmarks"><div class="button_img"></div></div>
<div class="button" id="button_downloads"><div class="button_img"></div></div>
<div class="button" id="button_history"><div class="button_img"></div></div>
<div class="button" id="button_settings"><div class="button_img"></div></div>
<div class="button" id="button_extensions"><div class="button_img"></div></div>
<div class="button" id="button_discard"><div class="button_img"></div></div>
<div class="button" id="button_move"><div class="button_img"></div></div>
</div>
<div id="toolbar_separator">
</div>
<div class="toolbar_int" id="toolbar_unused_buttons">
</div>
<div class="toolbar" id="toolbar" style="position: relative; top: 5px; height: 26px; width: 350px; overflow:hidden;"></div>
</div>
<br>
<table id="toolbar_colors" style="margin: 10px; vertical-align: top;">
<tr>
<td><div class="cb"><input class="cp" id="toolbar_background" type="color"></div></td>
<td class="cpl" id="options_color_theme_toolbar_background"></td>
<td><div class="cb"><input class="cp" id="toolbar_border_bottom" type="color"></div></td>
<td class="cpl" id="options_color_toolbar_border_bottom"></td>
</tr>
<tr>
<td><div class="cb"><input class="cp" id="button_icons" type="color"></div></td>
<td class="cpl" id="options_color_button_icons"></td>
<td><div class="cb"><input class="cp" id="button_border" type="color"></div></td>
<td class="cpl" id="options_color_button_border"></td>
<td><div class="cb"><input class="cp" id="button_background" type="color"></div></td>
<td class="cpl" id="options_color_button_background"></td>
</tr>
<tr>
<td><div class="cb"><input class="cp" id="button_hover_border" type="color"></div></td>
<td class="cpl" id="options_color_button_hover_border"></td>
<td><div class="cb"><input class="cp" id="button_hover_background" type="color"></div></td>
<td class="cpl" id="options_color_button_hover_background"></td>
<td><div class="cb"><input class="cp" id="filter_box_background" type="color"></div></td>
<td class="cpl" id="options_color_filter_box_background"></td>
</tr>
<tr>
<td><div class="cb"><input class="cp" id="filter_box_border" type="color"></div></td>
<td class="cpl" id="options_color_filter_box_border"></td>
<td><div class="cb"><input class="cp" id="filter_box_font" type="color"></div></td>
<td class="cpl" id="options_color_filter_box_font"></td>
<td><div class="cb"><input class="cp" id="filter_clear_icon" type="color"></div></td>
<td class="cpl" id="options_color_filter_clear_icon"></td>
</tr>
</table>
<button class="set_button" type="button" id="options_reset_toolbar_button" style="margin:10px;">Reset</button>
</fieldset>
<fieldset class="field" id="Tabs" style="width:816px;">
<fieldset class="field" id="Tabs" style="position: relative; top: 6px; width:816px; height: 860px;">
<legend class="label" id="options_theme_tabs"></legend>
<table style="display: inline-block;">
<tr>
<td>
<div class="pin_list" id="pin_list" style="height: 30px; width: 250px;">
</div>
<br>
<div class="tab_list" id="tab_list" style="height: 80px; width: 250px;">
</div>
</td>
<table style="position:relative;top:-35px;display: inline-block;">
<tr>
<td>
<button id="options_tabs_size_down" style="margin-top:10px;margin-left:10px;">-</button>
<label class="label" id="options_tabs_size"></label>
<button id="options_tabs_size_up" style="margin-top:10px;">+</button>
</td>
</tr>
<tr>
<td style="position:relative;left:10px">
<input style="position:relative;top:2px;" type="checkbox" id="active_tab_font_bold"></input> - <label class="label" id="options_active_tab_font_bold"></label>
</td>
</tr>
</table>
</tr>
</table>
<table style="display: inline-block; margin-top: 10px;margin-left: 10px;vertical-align: top;">
<tr>
<td><div class="cb"><input class="cp" id="pin_list_border_bottom" type="color"></div></td>
<td class="cpl" id="options_color_pin_list_border_bottom"></td>
<td><div class="cb"><input class="cp" id="pin_list_background" type="color"></div></td>
<td class="cpl" id="options_color_pin_list_background"></td>
<td><div class="cb"><input class="cp" id="tab_list_background" type="color"></div></td>
<td class="cpl" id="options_color_tab_list_background"></td>
<td><div class="cb"><input class="cp" id="expand_lines" type="color"></div></td>
<td class="cpl" id="options_color_expand_lines"></td>
</tr>
<tr>
<td><div class="cb"><input class="cp" id="tab_background" type="color"></div></td>
<td class="cpl" id="options_color_tab_background"></td>
<td><div class="cb"><input class="cp" id="tab_border" type="color"></div></td>
<td class="cpl" id="options_color_tab_border"></td>
<td><div class="cb"><input class="cp" id="tab_hover_background" type="color"></div></td>
<td class="cpl" id="options_color_tab_hover_background"></td>
<td><div class="cb"><input class="cp" id="tab_hover_border" type="color"></div></td>
<td class="cpl" id="options_color_tab_hover_border"></td>
</tr>
<tr>
<td><div class="cb"><input class="cp" id="drag_indicator" type="color"></div></td>
<td class="cpl" id="options_color_drag_indicator"></td>
<td><div class="cb"><input class="cp" id="tab_title" type="color"></div></td>
<td class="cpl" id="options_color_tab_title"></td>
<td><div class="cb"><input class="cp" id="tab_title_active" type="color"></div></td>
<td class="cpl" id="options_color_tab_title_active"></td>
<td><div class="cb"><input class="cp" id="tab_title_discarded" type="color"></div></td>
<td class="cpl" id="options_color_tab_title_discarded"></td>
</tr>
<tr>
<td><div class="cb"><input class="cp" id="tab_selected_background" type="color"></div></td>
<td class="cpl" id="options_color_tab_selected_background"></td>
<td><div class="cb"><input class="cp" id="tab_selected_border" type="color"></div></td>
<td class="cpl" id="options_color_tab_selected_border"></td>
<td><div class="cb"><input class="cp" id="tab_selected_hover_border" type="color"></div></td>
<td class="cpl" id="options_color_tab_selected_hover_border"></td>
<td><div class="cb"><input class="cp" id="tab_selected_hover_background" type="color"></div></td>
<td class="cpl" id="options_color_tab_selected_hover_background"></td>
</tr>
<tr>
<td><div class="cb"><input class="cp" id="tab_filtered" type="color"></div></td>
<td class="cpl" id="options_color_tab_filtered"></td>
<td><div class="cb"><input class="cp" id="tab_filtered_highlighted" type="color"></div></td>
<td class="cpl" id="options_color_tab_filtered_highlighted"></td>
<td><div class="cb"><input class="cp" id="tab_filtered_selected" type="color"></div></td>
<td class="cpl" id="options_color_tab_filtered_selected"></td>
<td><div class="cb"><input class="cp" id="tab_filtered_selected_active" type="color"></div></td>
<td class="cpl" id="options_color_tab_filtered_selected_active"></td>
</tr>
<tr>
<td><div class="cb"><input class="cp" id="close_x" type="color"></div></td>
<td class="cpl" id="options_color_close_x"></td>
<td><div class="cb"><input class="cp" id="close_hover_x" type="color"></div></td>
<td class="cpl" id="options_color_close_hover_x"></td>
<td><div class="cb"><input class="cp" id="close_hover_border" type="color"></div></td>
<td class="cpl" id="options_color_close_hover_border"></td>
<td><div class="cb"><input class="cp" id="close_hover_background" type="color"></div></td>
<td class="cpl" id="options_color_close_hover_background"></td>
</tr>
<tr>
<td><div class="cb"><input class="cp" id="expand_open_border" type="color"></div></td>
<td class="cpl" id="options_color_expand_open_border"></td>
<td><div class="cb"><input class="cp" id="expand_open_background" type="color"></div></td>
<td class="cpl" id="options_color_expand_open_background"></td>
<td><div class="cb"><input class="cp" id="expand_closed_border" type="color"></div></td>
<td class="cpl" id="options_color_expand_closed_border"></td>
<td><div class="cb"><input class="cp" id="expand_closed_background" type="color"></div></td>
<td class="cpl" id="options_color_expand_closed_background"></td>
</tr>
<div id="tabs_options_block">
<!-- normal --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_title_font_color"></div><div class="font_weight_normal" id="tab_title_font_weight"></div><div class="font_weight_bold" id="tab_title_font_weight"></div><div class="font_style_normal" id="tab_title_font_style"></div><div class="font_style_italic" id="tab_title_font_style"></div><div class="pick_col color_bucket" id="tab_background"></div><div class="pick_col color_border" id="tab_border"></div></div>
<!-- normal hover --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_hover_title_font_color"></div><div class="font_weight_normal" id="tab_hover_title_font_weight"></div><div class="font_weight_bold" id="tab_hover_title_font_weight"></div><div class="font_style_normal" id="tab_hover_title_font_style"></div><div class="font_style_italic" id="tab_hover_title_font_style"></div><div class="pick_col color_bucket" id="tab_hover_background"></div><div class="pick_col color_border" id="tab_hover_border"></div><div class="pick_col color_x" id="close_x"></div></div>
<!-- normal selected --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_selected_title_font_color"></div><div class="font_weight_normal" id="tab_selected_title_font_weight"></div><div class="font_weight_bold" id="tab_selected_title_font_weight"></div><div class="font_style_normal" id="tab_selected_title_font_style"></div><div class="font_style_italic" id="tab_selected_title_font_style"></div><div class="pick_col color_bucket" id="tab_selected_background"></div><div class="pick_col color_border" id="tab_selected_border"></div></div>
<!-- normal selected hover --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_selected_hover_title_font_color"></div><div class="font_weight_normal" id="tab_selected_hover_title_font_weight"></div><div class="font_weight_bold" id="tab_selected_hover_title_font_weight"></div><div class="font_style_normal" id="tab_selected_hover_title_font_style"></div><div class="font_style_italic" id="tab_selected_hover_title_font_style"></div><div class="pick_col color_bucket" id="tab_selected_hover_background"></div><div class="pick_col color_border" id="tab_selected_hover_border"></div><div class="pick_col color_x" id="close_hover_x"></div><div class="pick_col color_border" id="close_hover_border"></div><div class="pick_col color_bucket" id="close_hover_background"></div></div>
<!-- normal active --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_active_title_font_color"></div><div class="font_weight_normal" id="tab_active_title_font_weight"></div><div class="font_weight_bold" id="tab_active_title_font_weight"></div><div class="font_style_normal" id="tab_active_title_font_style"></div><div class="font_style_italic" id="tab_active_title_font_style"></div><div class="pick_col color_bucket" id="tab_active_background"></div><div class="pick_col color_border" id="tab_active_border"></div></div>
<!-- normal active hover --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_active_hover_title_font_color"></div><div class="font_weight_normal" id="tab_active_hover_title_font_weight"></div><div class="font_weight_bold" id="tab_active_hover_title_font_weight"></div><div class="font_style_normal" id="tab_active_hover_title_font_style"></div><div class="font_style_italic" id="tab_active_hover_title_font_style"></div><div class="pick_col color_bucket" id="tab_active_hover_background"></div><div class="pick_col color_border" id="tab_active_hover_border"></div></div>
<!-- normal selected active --><div class="tab_color_options_row"><div class="pick_col color_bucket" id="expand_closed_background"></div><div class="pick_col font_color" id="tab_active_selected_title_font_color"></div><div class="font_weight_normal" id="tab_active_selected_title_font_weight"></div><div class="font_weight_bold" id="tab_active_selected_title_font_weight"></div><div class="font_style_normal" id="tab_active_selected_title_font_style"></div><div class="font_style_italic" id="tab_active_selected_title_font_style"></div><div class="pick_col color_bucket" id="tab_active_selected_background"></div><div class="pick_col color_border" id="tab_active_selected_border"></div></div>
<!-- normal selected active hover --><div class="tab_color_options_row"><div class="pick_col color_bucket pick_col_hover" id="expand_hover_background"></div><div class="pick_col font_color" id="tab_selected_active_hover_title_font_color"></div><div class="font_weight_normal" id="tab_selected_active_hover_title_font_weight"></div><div class="font_weight_bold" id="tab_selected_active_hover_title_font_weight"></div><div class="font_style_normal" id="tab_selected_active_hover_title_font_style"></div><div class="font_style_italic" id="tab_selected_active_hover_title_font_style"></div><div class="pick_col color_bucket" id="tab_selected_active_hover_background"></div><div class="pick_col color_border" id="tab_selected_active_hover_border"></div></div>
<!-- unloaded --><div class="tab_color_options_row"><div class="pick_col color_bucket" id="expand_open_background"></div><div class="pick_col font_color" id="tab_discarded_title_font_color"></div><div class="font_weight_normal" id="tab_discarded_title_font_weight"></div><div class="font_weight_bold" id="tab_discarded_title_font_weight"></div><div class="font_style_normal" id="tab_discarded_title_font_style"></div><div class="font_style_italic" id="tab_discarded_title_font_style"></div><div class="pick_col color_bucket" id="tab_discarded_background"></div><div class="pick_col color_border" id="tab_discarded_border"></div></div>
<!-- unloaded hover --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_discarded_hover_title_font_color"></div><div class="font_weight_normal" id="tab_discarded_hover_title_font_weight"></div><div class="font_weight_bold" id="tab_discarded_hover_title_font_weight"></div><div class="font_style_normal" id="tab_discarded_hover_title_font_style"></div><div class="font_style_italic" id="tab_discarded_hover_title_font_style"></div><div class="pick_col color_bucket" id="tab_discarded_hover_background"></div><div class="pick_col color_border" id="tab_discarded_hover_border"></div></div>
<!-- unloaded selected --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_selected_discarded_title_font_color"></div><div class="font_weight_normal" id="tab_selected_discarded_title_font_weight"></div><div class="font_weight_bold" id="tab_selected_discarded_title_font_weight"></div><div class="font_style_normal" id="tab_selected_discarded_title_font_style"></div><div class="font_style_italic" id="tab_selected_discarded_title_font_style"></div><div class="pick_col color_bucket" id="tab_selected_discarded_background"></div><div class="pick_col color_border" id="tab_selected_discarded_border"></div><div class="pick_col color_bucket" id="drag_indicator"></div></div>
<!-- unloaded selected hover --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_selected_discarded_hover_title_font_color"></div><div class="font_weight_normal" id="tab_selected_discarded_hover_title_font_weight"></div><div class="font_weight_bold" id="tab_selected_discarded_hover_title_font_weight"></div><div class="font_style_normal" id="tab_selected_discarded_hover_title_font_style"></div><div class="font_style_italic" id="tab_selected_discarded_hover_title_font_style"></div><div class="pick_col color_bucket" id="tab_selected_discarded_hover_background"></div><div class="pick_col color_border" id="tab_selected_discarded_hover_border"></div></div>
<!-- search result --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_filtered_title_font_color"></div><div class="font_weight_normal" id="tab_filtered_title_font_weight"></div><div class="font_weight_bold" id="tab_filtered_title_font_weight"></div><div class="font_style_normal" id="tab_filtered_title_font_style"></div><div class="font_style_italic" id="tab_filtered_title_font_style"></div><div class="pick_col color_bucket" id="tab_filtered_background"></div><div class="pick_col color_border" id="tab_filtered_border"></div></div>
<!-- search result hover --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_filtered_hover_title_font_color"></div><div class="font_weight_normal" id="tab_filtered_hover_title_font_weight"></div><div class="font_weight_bold" id="tab_filtered_hover_title_font_weight"></div><div class="font_style_normal" id="tab_filtered_hover_title_font_style"></div><div class="font_style_italic" id="tab_filtered_hover_title_font_style"></div><div class="pick_col color_bucket" id="tab_filtered_hover_background"></div><div class="pick_col color_border" id="tab_filtered_hover_border"></div></div>
<!-- search result active --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_filtered_active_title_font_color"></div><div class="font_weight_normal" id="tab_filtered_active_title_font_weight"></div><div class="font_weight_bold" id="tab_filtered_active_title_font_weight"></div><div class="font_style_normal" id="tab_filtered_active_title_font_style"></div><div class="font_style_italic" id="tab_filtered_active_title_font_style"></div><div class="pick_col color_bucket" id="tab_filtered_active_background"></div><div class="pick_col color_border" id="tab_filtered_active_border"></div></div>
<!-- search result active hover --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_filtered_active_hover_title_font_color"></div><div class="font_weight_normal" id="tab_filtered_active_hover_title_font_weight"></div><div class="font_weight_bold" id="tab_filtered_active_hover_title_font_weight"></div><div class="font_style_normal" id="tab_filtered_active_hover_title_font_style"></div><div class="font_style_italic" id="tab_filtered_active_hover_title_font_style"></div><div class="pick_col color_bucket" id="tab_filtered_active_hover_background"></div><div class="pick_col color_border" id="tab_filtered_active_hover_border"></div></div>
<!-- search result selected --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_filtered_selected_title_font_color"></div><div class="font_weight_normal" id="tab_filtered_selected_title_font_weight"></div><div class="font_weight_bold" id="tab_filtered_selected_title_font_weight"></div><div class="font_style_normal" id="tab_filtered_selected_title_font_style"></div><div class="font_style_italic" id="tab_filtered_selected_title_font_style"></div><div class="pick_col color_bucket" id="tab_filtered_selected_background"></div><div class="pick_col color_border" id="tab_filtered_selected_border"></div></div>
<!-- search result selected hover --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_filtered_selected_hover_title_font_color"></div><div class="font_weight_normal" id="tab_filtered_selected_hover_title_font_weight"></div><div class="font_weight_bold" id="tab_filtered_selected_hover_title_font_weight"></div><div class="font_style_normal" id="tab_filtered_selected_hover_title_font_style"></div><div class="font_style_italic" id="tab_filtered_selected_hover_title_font_style"></div><div class="pick_col color_bucket" id="tab_filtered_selected_hover_background"></div><div class="pick_col color_border" id="tab_filtered_selected_hover_border"></div></div>
<!-- search result active selected --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_filtered_selected_active_title_font_color"></div><div class="font_weight_normal" id="tab_filtered_selected_active_title_font_weight"></div><div class="font_weight_bold" id="tab_filtered_selected_active_title_font_weight"></div><div class="font_style_normal" id="tab_filtered_selected_active_title_font_style"></div><div class="font_style_italic" id="tab_filtered_selected_active_title_font_style"></div><div class="pick_col color_bucket" id="tab_filtered_selected_active_background"></div><div class="pick_col color_border" id="tab_filtered_selected_active_border"></div></div>
<!-- search result active selected hover --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_filtered_selected_active_hover_title_font_color"></div><div class="font_weight_normal" id="tab_filtered_selected_active_hover_title_font_weight"></div><div class="font_weight_bold" id="tab_filtered_selected_active_hover_title_font_weight"></div><div class="font_style_normal" id="tab_filtered_selected_active_hover_title_font_style"></div><div class="font_style_italic" id="tab_filtered_selected_active_hover_title_font_style"></div><div class="pick_col color_bucket" id="tab_filtered_selected_active_hover_background"></div><div class="pick_col color_border" id="tab_filtered_selected_active_hover_border"></div></div>
<!-- search result highlighted --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_filtered_highlighted_search_title_font_color"></div><div class="font_weight_normal" id="tab_filtered_highlighted_search_title_font_weight"></div><div class="font_weight_bold" id="tab_filtered_highlighted_search_title_font_weight"></div><div class="font_style_normal" id="tab_filtered_highlighted_search_title_font_style"></div><div class="font_style_italic" id="tab_filtered_highlighted_search_title_font_style"></div><div class="pick_col color_bucket" id="tab_filtered_highlighted_search_background"></div><div class="pick_col color_border" id="tab_filtered_highlighted_search_border"></div></div>
<!-- search result highlighted hover --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_filtered_highlighted_search_hover_title_font_color"></div><div class="font_weight_normal" id="tab_filtered_highlighted_search_hover_title_font_weight"></div><div class="font_weight_bold" id="tab_filtered_highlighted_search_hover_title_font_weight"></div><div class="font_style_normal" id="tab_filtered_highlighted_search_hover_title_font_style"></div><div class="font_style_italic" id="tab_filtered_highlighted_search_hover_title_font_style"></div><div class="pick_col color_bucket" id="tab_filtered_highlighted_search_hover_background"></div><div class="pick_col color_border" id="tab_filtered_highlighted_search_hover_border"></div></div>
<!-- search result active highlighted --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_filtered_active_highlighted_search_title_font_color"></div><div class="font_weight_normal" id="tab_filtered_active_highlighted_search_title_font_weight"></div><div class="font_weight_bold" id="tab_filtered_active_highlighted_search_title_font_weight"></div><div class="font_style_normal" id="tab_filtered_active_highlighted_search_title_font_style"></div><div class="font_style_italic" id="tab_filtered_active_highlighted_search_title_font_style"></div><div class="pick_col color_bucket" id="tab_filtered_active_highlighted_search_background"></div><div class="pick_col color_border" id="tab_filtered_active_highlighted_search_border"></div></div>
<!-- search result active highlighted hover --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_filtered_active_highlighted_search_hover_title_font_color"></div><div class="font_weight_normal" id="tab_filtered_active_highlighted_search_hover_title_font_weight"></div><div class="font_weight_bold" id="tab_filtered_active_highlighted_search_hover_title_font_weight"></div><div class="font_style_normal" id="tab_filtered_active_highlighted_search_hover_title_font_style"></div><div class="font_style_italic" id="tab_filtered_active_highlighted_search_hover_title_font_style"></div><div class="pick_col color_bucket" id="tab_filtered_active_highlighted_search_hover_background"></div><div class="pick_col color_border" id="tab_filtered_active_highlighted_search_hover_border"></div></div>
<!-- search result selected highlighted --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_filtered_selected_highlighted_search_title_font_color"></div><div class="font_weight_normal" id="tab_filtered_selected_highlighted_search_title_font_weight"></div><div class="font_weight_bold" id="tab_filtered_selected_highlighted_search_title_font_weight"></div><div class="font_style_normal" id="tab_filtered_selected_highlighted_search_title_font_style"></div><div class="font_style_italic" id="tab_filtered_selected_highlighted_search_title_font_style"></div><div class="pick_col color_bucket" id="tab_filtered_selected_highlighted_search_background"></div><div class="pick_col color_border" id="tab_filtered_selected_highlighted_search_border"></div></div>
<!-- search result selected highlighted hover --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_filtered_selected_highlighted_search_hover_title_font_color"></div><div class="font_weight_normal" id="tab_filtered_selected_highlighted_search_hover_title_font_weight"></div><div class="font_weight_bold" id="tab_filtered_selected_highlighted_search_hover_title_font_weight"></div><div class="font_style_normal" id="tab_filtered_selected_highlighted_search_hover_title_font_style"></div><div class="font_style_italic" id="tab_filtered_selected_highlighted_search_hover_title_font_style"></div><div class="pick_col color_bucket" id="tab_filtered_selected_highlighted_search_hover_background"></div><div class="pick_col color_border" id="tab_filtered_selected_highlighted_search_hover_border"></div></div>
<!-- search result selected active highlighted --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_filtered_selected_active_highlighted_search_title_font_color"></div><div class="font_weight_normal" id="tab_filtered_selected_active_highlighted_search_title_font_weight"></div><div class="font_weight_bold" id="tab_filtered_selected_active_highlighted_search_title_font_weight"></div><div class="font_style_normal" id="tab_filtered_selected_active_highlighted_search_title_font_style"></div><div class="font_style_italic" id="tab_filtered_selected_active_highlighted_search_title_font_style"></div><div class="pick_col color_bucket" id="tab_filtered_selected_active_highlighted_search_background"></div><div class="pick_col color_border" id="tab_filtered_selected_active_highlighted_search_border"></div></div>
<!-- search result selected active highlighted hover --><div class="tab_color_options_row"><div class="pick_col font_color" id="tab_filtered_selected_active_highlighted_search_hover_title_font_color"></div><div class="font_weight_normal" id="tab_filtered_selected_active_highlighted_search_hover_title_font_weight"></div><div class="font_weight_bold" id="tab_filtered_selected_active_highlighted_search_hover_title_font_weight"></div><div class="font_style_normal" id="tab_filtered_selected_active_highlighted_search_hover_title_font_style"></div><div class="font_style_italic" id="tab_filtered_selected_active_highlighted_search_hover_title_font_style"></div><div class="pick_col color_bucket" id="tab_filtered_selected_active_highlighted_search_hover_background"></div><div class="pick_col color_border" id="tab_filtered_selected_active_highlighted_search_hover_border"></div></div>
</div>
<div id="scrollbar_size_indicator">
<div class="options_button_minus" id="options_tab_list_scrollbar_width_down"></div>
<div class="options_button_plus" id="options_tab_list_scrollbar_width_up"></div>
<div class="options_button_minus" id="options_tab_list_scrollbar_height_down"></div>
<div class="options_button_plus" id="options_tab_list_scrollbar_height_up"></div>
</div>
<div class="pick_col color_bucket" id="scrollbar_thumb"></div>
<div class="pick_col color_bucket pick_col_hover" id="scrollbar_thumb_hover"></div>
<div class="pick_col color_bucket" id="scrollbar_track"></div>
<div class="pin_list" id="pin_list"></div>
<div class="group" id="tab_list"></div>
<div id="pin_list_scrollbar"><div id="pin_list_scrollbar_thumb"></div></div>
<div id="group_scrollbar"><div id="group_scrollbar_thumb"></div></div>
<div class="pick_col color_bucket" id="group_list_background"></div>
<div class="pick_col color_border" id="group_list_borders"></div>
<div class="pick_col color_bucket pick_col_hover" id="group_list_button_hover_background"></div>
<div class="pick_col font_color" id="group_list_default_font_color"></div>
<div id="toolbar_groups_block">
<div class="scroll_group" id="scroll_group_up"></div>
<div class="group_list" id="group_list"></div>
<div class="scroll_group" id="scroll_group_down"></div>
</div>
<div id="options_tabs_indentation_indicator">
<div class="options_button_minus" id="options_tabs_indentation_down"></div>
<div class="options_button_plus" id="options_tabs_indentation_up"></div>
</div>
<div id="options_tabs_roundness_indicator">
<div class="options_button_minus" id="options_tabs_roundness_down"></div>
<div class="options_button_plus" id="options_tabs_roundness_up"></div>
</div>
<div id="options_tabs_size_indicator">
<div class="options_button_minus" id="options_tabs_size_down"></div>
<div class="options_button_plus" id="options_tabs_size_up"></div>
</div>
<div id="pin_list_options_block">
<div class="pick_col color_bucket" id="attention_background"></div>
<div class="pick_col color_border" id="attention_border"></div>
<div class="pick_col color_border" id="pin_list_border_bottom"></div>
<div class="pick_col color_bucket" id="pin_list_background"></div>
</div>
<div class="pick_col color_bucket" id="tab_list_background"></div>
</table>
</fieldset>
<fieldset class="field" id="field_scrollbars" style="width:816px;">
<legend class="label" id="options_scrollbars"></legend>
<table style="display:inline-block;margin-top:10px;margin-left:0px;vertical-align:top;">
<tr>
<td>
<div class="scrollbar" id="scrollbar" style="height:20px;width:25px;overflow:auto;">
<div style="height: 1px; width: 200px;"></div>
</div>
<br>
<div class="scrollbar" id="scrollbar" style="height:20px;width:25px;overflow:auto;">
<div style="height:1000px;width:5px;"></div>
</div>
</td>
<td>
<table style="display:inline-block;vertical-align:top;">
<tr>
<td><input type="number" style="width:40px;" min="0" max="20" step="1" id="scrollbar_pin_list"></input></td>
<td style="position:relative;left:2px;width:3px;">-</td>
<td class="label" id="options_scrollbar_pin_list"></td>
<td><div class="cb"><input class="cp" id="scrollbar_thumb" type="color"></div></td>
<td class="cpl" id="options_color_scrollbar_thumb"></td>
<td><div class="cb"><input class="cp" id="scrollbar_thumb_hover" type="color"></div></td>
<td class="cpl" id="options_color_scrollbar_thumb_hover"></td>
</tr>
<tr>
<td><input type="number" style="width:40px;" min="0" max="20" step="1" id="scrollbar_tab_list"></input></td>
<td style="position:relative;left:2px;width:3px;">-</td>
<td class="label" id="options_scrollbar_tab_list"></td>
<td><div class="cb"><input class="cp" id="scrollbar_track" type="color"></div></td>
<td class="cpl" id="options_color_scrollbar_track"></td>
</tr>
</table>
</td>
</tr>
</table>
</fieldset>
<fieldset class="field" style="width:816px;">
<legend class="label" id="options_menu"></legend>
<ul class="menu" id="tabs_menu" style="display:inline-block;position:relative;top:0px;left:0px;">
<li class="menu_item"></li>
<div id="menu_options_block" style="position:relative; top:0px; left:10px;">
<div class="pick_col color_border" id="tabs_menu_border"></div>
<div class="pick_col color_bucket" id="tabs_menu_background"></div>
<div class="pick_col font_color" id="tabs_menu_font"></div>
<div class="pick_col color_border" id="tabs_menu_hover_border"></div>
<div class="pick_col color_bucket" id="tabs_menu_hover_background"></div>
<div class="pick_col color_border" id="tabs_menu_separator"></div>
</div>
<ul class="menu" id="tabs_menu" style="display:inline-block;position:relative;top:0px;left:10px;">
<li class="menu_item" id="menu_hover_sample" style="border: 1px solid var(--tabs_menu_hover_border); background-color: var(--tabs_menu_hover_background);"></li>
<div class="separator"></div>
<li class="menu_item"></li>
<div class="separator"></div>
@ -449,49 +317,29 @@
</ul>
<table style="display:inline-block;vertical-align:top;margin-left:10px;margin-top:16px;">
<tr>
<td><div class="cb"><input class="cp" id="tabs_menu_background" type="color"></div></td>
<td class="cpl" id="options_color_tabs_menu_background"></td>
<td><div class="cb"><input class="cp" id="tabs_menu_border" type="color"></div></td>
<td class="cpl" id="options_color_tabs_menu_border"></td>
</tr>
<tr>
<td><div class="cb"><input class="cp" id="tabs_menu_hover_background" type="color"></div></td>
<td class="cpl" id="options_color_tabs_menu_hover_background"></td>
<td><div class="cb"><input class="cp" id="tabs_menu_hover_border" type="color"></div></td>
<td class="cpl" id="options_color_tabs_menu_hover_border"></td>
</tr>
<tr>
<td><div class="cb"><input class="cp" id="tabs_menu_font" type="color"></div></td>
<td class="cpl" id="options_color_tabs_menu_font"></td>
<td><div class="cb"><input class="cp" id="tabs_menu_separator" type="color"></div></td>
<td class="cpl" id="options_color_tabs_menu_separator"></td>
</tr>
</table>
</fieldset>
</fieldset>
</fieldset>
<script type="text/javascript" src="../lib_jquery/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="../defaults.js"></script>
<script type="text/javascript" src="../scripts/events_refresh.js"></script>
<button class="set_button" type="button" id="options_clear_data" style="margin:10px;"></button>
<input type="color" id="color_picker" style="position:absolute; left:-500px; top:-500px; overflow:hidden; user-select: none; -moz-user-select: none;">
<div id="DragImage" style="display: none; width:0px; height:0px;"></div>
<script type="text/javascript" src="../scripts/global.js"></script>
<script type="text/javascript" src="../scripts/toolbar.js"></script>
<script type="text/javascript" src="../scripts/tabs.js"></script>
<script type="text/javascript" src="../options.js"></script>
<script type="text/javascript" src="../scripts/groups.js"></script>
<script type="text/javascript" src="../options/refresh.js"></script>
<script type="text/javascript" src="../options/sample_tabs.js"></script>
<script type="text/javascript" src="../options/theme.js"></script>
<script type="text/javascript" src="../options/options.js"></script>
<div id="donate" style="position:absolute; top:10px; left:700px;">
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_donations">
<input type="hidden" name="business" value="karol@jagiello.it">
<input type="hidden" name="lc" value="US">
<input type="hidden" name="item_number" value="Vertical Tabs Support">
<input type="hidden" name="no_note" value="0">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="bn" value="PP-DonationsBF:btn_donateCC_LG.gif:NonHostedGuest">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
</div>
<div id="donate"></div>
<div id="donate_paypal" class="donation_button"></div>
<div id="donate_bitcoin" class="donation_button"></div>
<div id="donate_ethereum" class="donation_button"></div>
</body>

View File

@ -1,581 +0,0 @@
// ********** OPTIONS ***************
var bg;
if (navigator.userAgent.match("Firefox") !== null){
bg = browser.extension.getBackgroundPage();
} else {
bg = chrome.extension.getBackgroundPage();
}
var themes = [];
var theme = {};
document.addEventListener("DOMContentLoaded", function(){
document.title = "Tree Tabs";
if (bg.opt == undefined){
setTimeout(function(){
location.reload();
}, 3000);
}
if (localStorage.getItem("themes") != null){
themes = JSON.parse(localStorage["themes"]);
}
if (localStorage.getItem("current_theme") != null){
LoadTheme(localStorage["current_theme"]);
}
GetOptions();
RefreshFields();
SetEvents();
});
// AppendCSSSheets from theme
function AppendCSSSheets(theme){
var css_variables = "";
for (var css_variable in theme.TabsSizeSet){
css_variables = css_variables + "--" + css_variable + ":" + theme.TabsSizeSet[css_variable] + ";";
}
for (var css_variable in theme.ColorsSet){
ColorsSet[css_variable] = theme.ColorsSet[css_variable];
if ($("#"+css_variable)[0]) $("#"+css_variable)[0].value = theme.ColorsSet[css_variable];
css_variables = css_variables + "--" + css_variable + ":" + theme.ColorsSet[css_variable] + ";";
}
// remove previous css rules in css sheet 0
for (var r = 0; r < document.styleSheets[0].cssRules.length; r++){
if (document.styleSheets[0].cssRules[r].cssText.match("--pin_width") !== null){
document.styleSheets[0].deleteRule(r);
}
if (document.styleSheets[0].cssRules[r].cssText.match("::-webkit-scrollbar") !== null){
document.styleSheets[0].deleteRule(r);
}
}
document.styleSheets[0].insertRule("body { "+css_variables+" }", 0);
// scrollbars
if (navigator.userAgent.match("Firefox") === null){
document.styleSheets[0].insertRule("::-webkit-scrollbar { width:"+theme.ScrollbarTabList+"px; height:"+theme.ScrollbarPinList+"px; }", 3);
}
}
function LoadTheme(themeName){
var theme = JSON.parse(localStorage["theme"+themeName]);
TabsSizeSet = theme.TabsSizeSetNumber;
// append toolbar from theme
$("#toolbar").html(theme.toolbar);
AppendCSSSheets(theme);
$("#button_filter_type").addClass("url").removeClass("title");
// expand toolbar options
ToolbarShow = $("#show_toolbar")[0].checked = theme.ToolbarShow;
$("#field_show_toolbar").css({"height": $("#show_toolbar")[0].checked ? "" : "6"});
ToolbarShow ? $("#options_available_buttons, #toolbar, #toolbar_colors").show() : $("#options_available_buttons, #toolbar, #toolbar_colors").hide();
// append example tabs
$("#pin_list, #tab_list").html("");
// pins
AppendTab({tab: {id: "p0", pinned: true}, Append: true});
AppendTab({tab: {id: "p1", pinned: true, active: true}, Append: true});
// tabs
AppendTab({tab: {id: "t2", pinned: false}, Append: true});
$("#tab_titlet2")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_normal");
AppendTab({tab: {id: "t3", pinned: false, active: true}, Append: true, ParentId: "t2"});
$("#tab_titlet3")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_active_selected");
$(".tab#t3").addClass("c selected");
AppendTab({tab: {id: "t5", pinned: false, discarded: true}, Append: true});
$("#tab_titlet5")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_discarded");
AppendTab({tab: {id: "t6", pinned: false}, Append: true});
$("#tab_titlet6")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result");
$(".tab#t6").addClass("filtered");
AppendTab({tab: {id: "t7", pinned: false}, Append: true});
$("#tab_titlet7")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_higlighted");
$(".tab#t7").addClass("filtered highlighted_search");
AppendTab({tab: {id: "t8", pinned: false}, Append: true});
$("#tab_titlet8")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_selected");
$(".tab#t8").addClass("selected filtered");
AppendTab({tab: {id: "t9", pinned: false}, Append: true});
$("#tab_titlet9")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_selected_active");
$(".tab#t9").addClass("active selected filtered");
// drag&drop indicator
$(".drag_entered_bottom").first().addClass("highlighted_drop_target");
// toolbar events
$("#toolbar_tools, #toolbar_search").addClass("hidden");
$(".on").removeClass("on");
ScrollbarPinList = $("#scrollbar_pin_list")[0].value = theme.ScrollbarPinList;
ScrollbarTabList = $("#scrollbar_tab_list")[0].value = theme.ScrollbarTabList;
$("#active_tab_font_bold")[0].checked = theme.ColorsSet.active_font_weight == "normal" ? false : true;
$("#body").css({"background-color": "transparent"});
}
// document events
function GetOptions(){
// get language labels
$(".label").each(function(){
$(this).text(chrome.i18n.getMessage(this.id));
});
// get language for color pick labels
$(".cpl").each(function(){
$(this).text(chrome.i18n.getMessage(this.id));
});
// get language for menu labels
$(".menu_item").each(function(){
$(this).text(chrome.i18n.getMessage("options_example_menu_item"));
});
// get checkboxes from saved states
$(".opt_checkbox").each(function(){
$(this)[0].checked = bg.opt[this.id];
});
$(".set_button").each(function(){
$(this)[0].textContent = chrome.i18n.getMessage(this.id);
});
// get language dropdown menus
$(".bg_opt_drop_down_menu").each(function(){
$(this)[0].textContent = chrome.i18n.getMessage(this.id);
});
// get options for append child tab
for (var i = 0; i < $("#append_child_tab")[0].options.length; i++){
if ($("#append_child_tab")[0].options[i].value === bg.opt.append_child_tab){
$("#append_child_tab")[0].selectedIndex = i;
break;
}
}
// get options for append child tab after limit
for (var i = 0; i < $("#append_child_tab_after_limit")[0].options.length; i++){
if ($("#append_child_tab_after_limit")[0].options[i].value === bg.opt.append_child_tab_after_limit){
$("#append_child_tab_after_limit")[0].selectedIndex = i;
break;
}
}
// get options for append orphan tab
for (var i = 0; i < $("#append_orphan_tab")[0].options.length; i++){
if ($("#append_orphan_tab")[0].options[i].value === bg.opt.append_orphan_tab){
$("#append_orphan_tab")[0].selectedIndex = i;
break;
}
}
// get options for action after closing active tab
for (var i = 0; i < $("#after_closing_active_tab")[0].options.length; i++){
if ($("#after_closing_active_tab")[0].options[i].value === bg.opt.after_closing_active_tab){
$("#after_closing_active_tab")[0].selectedIndex = i;
break;
}
}
// get options for tabs tree depth option
$("#max_tree_depth")[0].value = bg.opt.max_tree_depth;
// append themes to dropdown menu
for (var i = 0; i < themes.length; i++){
var t_list = document.getElementById("theme_list");
var theme_name = document.createElement("option");
theme_name.value = themes[i];
theme_name.text = themes[i];
t_list.add(theme_name);
}
// select current theme in dropdown list
for (var i = 0; i < $("#theme_list")[0].options.length; i++){
if ($("#theme_list")[0].options[i].value === localStorage["current_theme"]){
$("#theme_list")[0].selectedIndex = i;
break;
}
}
}
function ExportTheme(filename) {
var themeObj = {
"ToolbarShow": ToolbarShow,
"ColorsSet": ColorsSet,
"TabsSizeSetNumber": TabsSizeSet,
"TabsSizeSet": TabsSizeSets[TabsSizeSet],
"ScrollbarPinList": ScrollbarPinList,
"ScrollbarTabList": ScrollbarTabList,
"theme_name": $("#theme_list").val(),
"theme_version": CurrentThemeVersion,
"toolbar": ToolbarSet
};
var data = JSON.stringify(themeObj);
var body = document.getElementById("body");
var link = document.createElement("a");
link.target = "_blank";
link.download = filename;
link.href = "data:text/csv;charset=utf-8," + encodeURIComponent(data);
body.appendChild(link);
link.click();
link.remove();
}
function ImportTheme(){
var file = document.getElementById("import_theme");
var fr = new FileReader();
if (file.files[0] == undefined) return;
fr.readAsText(file.files[0]);
fr.onload = function(){
var data = fr.result;
var themeObj = JSON.parse(data);
if (themeObj.theme_version > CurrentThemeVersion){
alert(chrome.i18n.getMessage("options_loaded_theme_newer_version"));
}
if (themeObj.theme_version < CurrentThemeVersion){
alert(chrome.i18n.getMessage("options_loaded_theme_older_version"));
}
if (themeObj.theme_version <= CurrentThemeVersion){
for (var val in ColorsSet){
ColorsSet[val] = themeObj.ColorsSet[val];
}
ToolbarShow = themeObj.ToolbarShow;
TabsSizeSet = themeObj.TabsSizeSetNumber;
ScrollbarPinList = themeObj.ScrollbarPinList;
ScrollbarTabList = themeObj.ScrollbarTabList;
$("#toolbar").html(themeObj.toolbar);
ToolbarSet = themeObj.toolbar;
if (themes.indexOf(themeObj.theme_name) != -1){
themeObj.theme_name = themeObj.theme_name + "(1)";
}
themes.push(themeObj.theme_name);
SaveTheme(themeObj.theme_name);
var t_list = document.getElementById("theme_list");
var theme_name = document.createElement("option");
theme_name.value = themeObj.theme_name;
theme_name.text = theme_name.value;
t_list.add(theme_name);
$("#theme_list")[0].selectedIndex = $("#theme_list")[0].options.length-1;
localStorage["themes"] = JSON.stringify(themes);
localStorage["current_theme"] = themeObj.theme_name;
LoadTheme(themeObj.theme_name);
RefreshFields();
}
}
}
// document events
function SetEvents(){
// import theme preset button
$(document).on("click", "#options_import_theme_button", function(event){
$("#import_theme").click();
});
$(document).on("change", "#import_theme", function(event){
ImportTheme();
});
// export theme preset button
$(document).on("click", "#options_export_theme_button", function(event){
if ($("#theme_list")[0].options.length == 0){
alert(chrome.i18n.getMessage("options_no_theme_to_export"));
} else {
ExportTheme($("#theme_list").val() + ".tt_theme");
}
});
// rename theme preset button
$(document).on("click", "#options_rename_theme_button", function(event){
if (themes.indexOf($("#new_theme_name")[0].value) != -1){
alert(chrome.i18n.getMessage("options_there_is_a_theme_with_this_name"));
return;
}
if ($("#new_theme_name")[0].value == ""){
alert(chrome.i18n.getMessage("options_theme_name_cannot_be_empty"));
return;
}
localStorage["theme"+($("#new_theme_name")[0].value)] = localStorage["theme"+($("#theme_list").val())];
localStorage.removeItem("theme"+($("#theme_list").val()));
var t_list = document.getElementById("theme_list");
themes[themes.indexOf(t_list.options[t_list.selectedIndex].value)] = $("#new_theme_name")[0].value;
t_list.options[t_list.selectedIndex].value = t_list.options[t_list.selectedIndex].text = $("#new_theme_name")[0].value;
localStorage["themes"] = JSON.stringify(themes);
localStorage["current_theme"] = $("#theme_list").val();
});
// set checkbox options on/off and save
$(document).on("click", ".bg_opt", function(event){
bg.opt[this.id] = $(this)[0].checked ? true : false;
chrome.runtime.sendMessage({command: "options_save"});
});
// set dropdown menu options
$("#append_child_tab, #append_child_tab_after_limit, #after_closing_active_tab, #append_orphan_tab").change(function(){
bg.opt[this.id] = $(this).val();
chrome.runtime.sendMessage({command: "options_save"});
});
// set tabs tree depth option
$(document).on("input", "#max_tree_depth", function(event){
bg.opt.max_tree_depth = $(this)[0].value;
chrome.runtime.sendMessage({command: "options_save"});
});
// set toolbar on/off and show/hide all toolbar options
$(document).on("click", "#show_toolbar", function(event){
ToolbarShow = $("#show_toolbar")[0].checked ? true : false;
SaveTheme($("#theme_list").val());
$("#field_show_toolbar").css({"height": $("#show_toolbar")[0].checked ? "" : "6"});
ToolbarShow ? $("#options_available_buttons, #toolbar, #toolbar_colors").show() : $("#options_available_buttons, #toolbar, #toolbar_colors").hide();
});
// block system dragging
$(document).bind("drop dragover", function(event){
event.preventDefault();
});
var dragged_button;
$(document).on("mousedown", ".button", function(event){
if ($(this).is("#button_filter_type, #filter_search_go_prev, #filter_search_go_next")){
return;
}
$(this).attr("draggable", "true");
dragged_button = this;
});
// set dragged button node
$(document).on("dragstart", ".button", function(event){
event.originalEvent.dataTransfer.setData(" "," ");
event.originalEvent.dataTransfer.setDragImage(document.getElementById("DragImage"), 0, 0);
});
// remove draggable attribute to clean html which will be saved in the toolbar
$(document).on("mouseleave", ".button", function(event){
$(".button").removeAttr("draggable");
});
// save toolbar
$(document).on("dragend", ".button", function(event){
ToolbarSet = $("#toolbar").html();
SaveTheme($("#theme_list").val());
});
// drag&drop buttons to lists
$(document).on("dragenter", "#toolbar_main, #toolbar_tools, #toolbar_unused_buttons", function(event){
if ($(dragged_button).is("#button_tools, #button_search") && $(this).is("#toolbar_tools")){
return;
}
if (dragged_button.parentNode.id != this.id){
$("#"+dragged_button.id).appendTo($(this));
}
});
// move (flip) buttons
$(document).on("dragenter", ".button", function(event){
if ($(dragged_button).is("#button_tools, #button_search") && $(this).parent().is("#toolbar_tools")){
return;
}
if ($(this).parent().is("#toolbar_search, #toolbar_search_buttons")){
return;
}
if ( $(this).index() <= $("#"+dragged_button.id).index()){
$("#"+dragged_button.id).insertBefore($(this));
} else {
$("#"+dragged_button.id).insertAfter($(this));
}
});
// add new theme preset button
$(document).on("click", "#options_add_theme_button", function(event){
if (themes.indexOf($("#new_theme_name")[0].value) != -1){
alert(chrome.i18n.getMessage("options_there_is_a_theme_with_this_name"));
return;
}
if ($("#new_theme_name")[0].value == ""){
alert(chrome.i18n.getMessage("options_theme_name_cannot_be_empty"));
return;
}
LoadTheme("Default");
themes.push($("#new_theme_name")[0].value);
var t_list = document.getElementById("theme_list");
var theme_name = document.createElement("option");
theme_name.value = $("#new_theme_name")[0].value;
theme_name.text = theme_name.value;
t_list.add(theme_name);
$("#theme_list")[0].selectedIndex = $("#theme_list")[0].options.length-1;
SaveTheme(theme_name.value);
localStorage["themes"] = JSON.stringify(themes);
localStorage["current_theme"] = $("#theme_list").val();
RefreshFields();
});
// remove theme preset button
$(document).on("click", "#options_remove_theme_button", function(event){
if ($("#theme_list")[0].options.length == 0){
localStorage["current_theme"] = "Default";
return;
}
themes.splice(themes.indexOf($("#theme_list").val()), 1);
localStorage["themes"] = JSON.stringify(themes);
localStorage.removeItem("theme"+($("#theme_list").val()));
var x = document.getElementById("theme_list");
x.remove(x.selectedIndex);
localStorage["current_theme"] = ($("#theme_list")[0].options.length > 0) ? $("#theme_list").val() : "Default";
LoadTheme(localStorage["current_theme"]);
RefreshFields();
});
// select theme from list
$("#theme_list").change(function(){
localStorage["current_theme"] = $(this).val();
LoadTheme($(this).val());
});
// change colors with color pickers
$(document).on("input", ".cp", function(event){
ColorsSet[this.id] = $(this)[0].value;
AppendCSSSheets(SaveTheme($("#theme_list").val()));
});
// set scrollbar sizes
$(document).on("input", "#scrollbar_pin_list, #scrollbar_tab_list", function(event){
ScrollbarPinList = $("#scrollbar_pin_list")[0].value;
ScrollbarTabList = $("#scrollbar_tab_list")[0].value;
SaveTheme($("#theme_list").val());
document.styleSheets[0].addRule("::-webkit-scrollbar", "width:"+ScrollbarTabList+"px; height:"+ScrollbarPinList+"px;");
});
// change tabs size preset(up)
$(document).on("click", "#options_tabs_size_up", function(event){
if (TabsSizeSet < TabsSizeSets.length-1){
TabsSizeSet++;
AppendCSSSheets(SaveTheme($("#theme_list").val()));
}
});
// change tabs size preset(down)
$(document).on("click", "#options_tabs_size_down", function(event){
if (TabsSizeSet > 0){
TabsSizeSet--;
AppendCSSSheets(SaveTheme($("#theme_list").val()));
}
});
// change active_tab_font_bold
$(document).on("click", "#active_tab_font_bold", function(event){
ColorsSet.active_font_weight = $(this)[0].checked ? "bold" : "normal";
AppendCSSSheets(SaveTheme($("#theme_list").val()));
});
// show close button on hover
$(document).on("mouseenter", ".close", function(event){
$(this).addClass("close_hover");
});
$(document).on("mouseleave", ".close", function(event){
$(".close_hover").removeClass("close_hover");
});
// tabs on hover
$(document).on("mouseover", ".tab_header", function(event){
$(this).addClass("tab_header_hover").addClass("close_show");
});
$(document).on("mouseleave", ".tab_header", function(event){
$(this).removeClass("tab_header_hover").removeClass("close_show");
});
$(document).on("click", "#button_tools, #button_search", function(event){
if (event.button != 0){
return;
}
if ($(this).is(".on")){
$("#button_tools, #button_search").removeClass("on");
$("#toolbar_tools, #toolbar_search").addClass("hidden");
} else {
$(this).addClass("on");
if ($(this).is("#button_tools")){
$("#button_search").removeClass("on");
$("#toolbar_search").addClass("hidden");
$("#toolbar_tools").removeClass("hidden");
} else {
$("#button_tools").removeClass("on");
$("#toolbar_tools").addClass("hidden");
$("#toolbar_search").removeClass("hidden");
}
}
});
}
// shrink or expand theme field
function RefreshFields(){
if ($("#theme_list")[0].options.length == 0){
$("#field_theme").css({"height": "45px"});
} else {
$("#field_theme").css({"height": ""});
}
if (navigator.userAgent.match("Firefox") !== null){
$("#field_scrollbars").hide();
} else {
$("#faster_scroll_for_firefox").hide();
}
if (navigator.userAgent.match("Vivaldi") !== null){
$("#url_for_web_panel").val(chrome.runtime.getURL("sidebar.html"));
$("#url_for_web_panel").prop("readonly", true);
$("#url_for_web_panel").select();
} else{
$("#field_vivaldi").hide();
}
}

BIN
options/donate_bitcoin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

BIN
options/donate_eth.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
options/donate_paypal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

86
options/donate_title.svg Normal file
View File

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="100"
height="20"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="New document 1">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="7.9195959"
inkscape:cx="63.81545"
inkscape:cy="-9.1704728"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1028"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1032.3622)">
<path
style="color:#000000;fill:#3765b5;fill-opacity:1;fill-rule:evenodd;stroke:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 0.75667769,1042.3145 0,-9.2176 4.70352281,0 c 2.7102908,0 4.9383345,0.057 5.2576195,0.1309 3.130969,0.7218 4.684581,3.7553 4.684581,9.1468 0,5.3531 -1.436499,8.1339 -4.63174,8.9662 -0.577575,0.1504 -1.658187,0.1883 -5.3685568,0.1883 l -4.64542651,0 0,-9.2176 z m 8.77570031,6.8065 c 0.2777919,-0.095 0.770113,-0.4357 1.094047,-0.7578 0.482529,-0.4797 0.647218,-0.7699 0.91126,-1.6057 0.808788,-2.5603 0.705947,-7.6419 -0.190205,-9.3985 -0.391772,-0.7679 -1.067168,-1.4294 -1.78459,-1.7478 -0.5834128,-0.2589 -0.9050489,-0.2996 -2.7137297,-0.3437 l -2.0518724,-0.05 0,7.0968 0,7.0967 2.1150069,-0.059 c 1.3022076,-0.036 2.3091082,-0.1251 2.6200832,-0.2311 l 0,0 z"
id="path3781"
inkscape:connector-curvature="0" />
<path
style="color:#000000;fill:#3765b5;fill-opacity:1;fill-rule:evenodd;stroke:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 21.959697,1051.6446 c -2.74973,-0.2263 -4.435794,-1.6726 -4.988362,-4.2789 -0.225171,-1.0621 -0.223374,-3.4929 0.0034,-4.5627 0.59698,-2.8164 2.415885,-4.2837 5.56262,-4.4872 3.503168,-0.2265 5.693781,1.0638 6.466874,3.8093 0.09778,0.3472 0.209791,1.37 0.248915,2.2728 0.233576,5.3901 -2.068073,7.677 -7.293421,7.2467 z m 2.459232,-1.9899 c 0.912733,-0.5143 1.244792,-1.7531 1.239797,-4.6254 -0.0064,-3.6688 -0.548091,-4.8365 -2.302543,-4.9634 -1.344019,-0.097 -2.199752,0.3971 -2.587302,1.4946 -0.607013,1.7189 -0.51871,5.7452 0.154704,7.0538 0.193499,0.376 0.493955,0.7891 0.667679,0.9181 0.647489,0.4806 2.08174,0.5426 2.827665,0.1223 z"
id="path3783"
inkscape:connector-curvature="0" />
<path
style="color:#000000;fill:#3765b5;fill-opacity:1;fill-rule:evenodd;stroke:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 30.682447,1044.9661 0,-6.5659 1.830901,0 1.830902,0 0,0.505 c 0,0.2778 0.03384,0.5051 0.07521,0.5051 0.04137,0 0.238042,-0.1159 0.437059,-0.2577 0.748889,-0.5332 1.744652,-0.7866 3.149535,-0.8015 1.607297,-0.017 2.454927,0.2311 3.144541,0.9208 0.918877,0.9188 0.896069,0.7453 0.896069,6.8182 l 0,5.442 -1.325825,0 -1.325825,0 0,-5.0448 c 0,-3.5871 -0.04275,-5.1386 -0.147951,-5.3695 -0.247471,-0.5432 -0.908475,-0.8564 -1.947905,-0.9231 -0.817132,-0.052 -1.009649,-0.02 -1.609607,0.2738 -0.423126,0.2071 -0.807293,0.515 -1.013383,0.8124 l -0.331917,0.479 0,4.8861 0,4.8861 -1.830902,0 -1.830901,0 0,-6.566 z"
id="path3785"
inkscape:connector-curvature="0" />
<path
style="color:#000000;fill:#3765b5;fill-opacity:1;fill-rule:evenodd;stroke:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 47.16056,1051.5725 c -0.722764,-0.1 -1.737084,-0.4365 -2.203618,-0.731 -1.050525,-0.6632 -1.457987,-1.4997 -1.447195,-2.9712 0.0177,-2.4131 1.583306,-3.5934 5.355446,-4.0374 1.825169,-0.2148 2.779302,-0.7532 3.086164,-1.7414 0.197797,-0.6369 -0.432303,-1.6061 -1.255263,-1.9306 -0.549159,-0.2166 -2.393883,-0.1838 -3.343017,0.059 -0.906814,0.2324 -1.588462,0.5936 -2.400453,1.272 -0.297361,0.2484 -0.555854,0.4356 -0.57443,0.416 -0.05156,-0.055 0.402113,-2.0717 0.502454,-2.234 0.155962,-0.2524 1.32995,-0.7784 2.323587,-1.0412 0.721307,-0.1907 1.366869,-0.256 2.544841,-0.2572 2.397947,0 3.77013,0.3935 4.746327,1.3697 0.938642,0.9387 0.929901,0.8765 0.933008,6.6411 l 0.0028,5.1454 -1.830901,0 -1.830902,0 0,-0.6305 0,-0.6305 -0.576368,0.44 c -0.317003,0.2419 -0.871008,0.5211 -1.231123,0.6203 -0.71358,0.1966 -2.198977,0.3245 -2.80133,0.2411 l 0,0 z m 3.010444,-2.0637 c 0.517399,-0.1598 0.971761,-0.3999 1.212857,-0.641 l 0.38552,-0.3855 -0.0085,-1.8528 c -0.0067,-1.4613 -0.03838,-1.7907 -0.149769,-1.5592 -0.196563,0.4085 -0.92118,0.7462 -1.942453,0.9053 -2.30912,0.3596 -3.202533,0.9938 -3.202533,2.2735 0,0.7065 0.177235,0.9882 0.79937,1.2707 0.699481,0.3176 1.855953,0.3132 2.905554,-0.011 l 0,0 z"
id="path3793"
inkscape:connector-curvature="0" />
<path
style="color:#000000;fill:#3765b5;fill-opacity:1;fill-rule:evenodd;stroke:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 62.881059,1051.5331 c -1.852562,-0.202 -2.861287,-0.7714 -3.472399,-1.9602 l -0.378807,-0.7369 -0.03894,-4.4603 -0.03894,-4.4603 -1.25532,0 -1.25532,0 0,-0.7576 0,-0.7576 1.26269,0 1.262691,0 0,-2.6517 0,-2.6516 1.830902,0 1.830901,0 0,2.6516 0,2.6517 1.262691,0 1.26269,0 0,0.7576 0,0.7576 -1.26269,0 -1.262691,0 2.02e-4,4.1984 c 1.77e-4,3.7476 0.0239,4.245 0.220971,4.6314 0.322497,0.6325 0.796023,0.9254 1.604498,0.9924 l 0.69971,0.058 0,0.8518 0,0.8517 -0.473509,0.078 c -0.524224,0.087 -0.619947,0.084 -1.799334,-0.044 z"
id="path3795"
inkscape:connector-curvature="0" />
<path
style="color:#000000;fill:#3765b5;fill-opacity:1;fill-rule:evenodd;stroke:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 71.214818,1051.6451 c -2.877087,-0.2526 -4.537488,-1.4811 -5.128326,-3.7945 -0.31037,-1.2153 -0.315316,-3.9449 -0.0094,-5.1889 0.751825,-3.0572 3.05882,-4.6043 6.47433,-4.3417 3.476201,0.2672 5.006809,2.0204 5.03071,5.7623 l 0.0093,1.4521 -4.117765,0.033 -4.117765,0.033 0.117493,0.6464 c 0.171638,0.9444 0.711211,2.3802 1.077735,2.8679 0.454241,0.6045 1.177034,0.8956 2.231734,0.8989 1.279325,0 2.317633,-0.2134 3.302758,-0.6918 0.479527,-0.2328 0.890391,-0.4048 0.913032,-0.3822 0.02264,0.023 -0.01557,0.26 -0.0849,0.5274 -0.06934,0.2675 -0.187307,0.7218 -0.262154,1.0097 -0.113516,0.4367 -0.215289,0.5552 -0.61363,0.7146 -1.056999,0.4229 -3.043209,0.6096 -4.823123,0.4533 z m 4.04061,-8.2806 c 0,-0.9022 -0.355033,-1.9869 -0.833131,-2.5455 -0.521677,-0.6094 -1.252976,-0.9159 -2.196423,-0.9204 -1.720585,-0.01 -2.578174,0.9972 -2.841389,3.3313 l -0.08188,0.7261 2.976409,0 2.976409,0 0,-0.5915 z"
id="path3797"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.5 KiB

101
options/options.css Normal file
View File

@ -0,0 +1,101 @@
:hover #donate {
animation: shake 0.82s cubic-bezier(.36,.07,.19,.97) both;
transform: translate3d(0, 0, 0);
backface-visibility: hidden;
perspective: 1000px;
}
#donate {
position:absolute;
top:17px;
left:700px;
width: 100px;
height: 20px;
background-image: url(../options/donate_title.svg);
}
#donate_paypal {
position:absolute;
top:14px;
left:790px;
width: 32px;
height: 32px;
background-image: url(../options/donate_paypal.png);
background-size: 30px 30px;
}
#donate_paypal:hover {
top: 13px;
left:789px;
background-size: 32px 32px;
}
#donate_bitcoin {
position:absolute;
top:14px;
left:825px;
width: 32px;
height: 32px;
background-image: url(../options/donate_bitcoin.png);
background-size: 30px 30px;
}
#donate_bitcoin:hover {
top: 13px;
left:824px;
background-size: 32px 32px;
}
#donate_ethereum {
position:absolute;
top:14px;
left:860px;
width: 32px;
height: 32px;
background-image: url(../options/donate_eth.png);
background-size: 30px 30px;
}
#donate_ethereum:hover {
top: 13px;
left:859px;
background-size: 32px 32px;
}
@keyframes shake {
10%, 90% {
transform: translate3d(-1px, 0, 0);
}
20%, 80% {
transform: translate3d(2px, 0, 0);
}
30%, 50%, 70% {
transform: translate3d(-4px, 0, 0);
}
40%, 60% {
transform: translate3d(4px, 0, 0);
}
}
body {
margin: 20px;
background-color: transparent;
border: none;
width: auto;
height: auto;
overflow: auto;
padding: 0;
font-family: Arial;
font-size: 13px;
}
.field {
width: 850px;
word-wrap: break-word;
overflow: hidden;
margin-bottom:15px;
}
ul:not(#tabs_menu) {
padding-left: 22px;
}
ul:not(#tabs_menu) li {
margin: 5px;
}
.label {
padding-left: 6px;
padding-right: 6px;
}

645
options/options.js Normal file
View File

@ -0,0 +1,645 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
// ********** OPTIONS ***************
var themes = [];
var SelectedTheme = Object.assign({}, DefaultTheme);
var dragged_button;
active_group = "tab_list";
document.addEventListener("DOMContentLoaded", function() {
LoadPreferences();
document.title = "Tree Tabs";
themes = LoadData("themes", []);
if (localStorage.getItem("current_theme") != null) {
LoadTheme(localStorage["current_theme"]);
}
GetOptions();
RefreshFields();
SetEvents();
SetToolbarShelfToggle("click");
AppendGroupToList("tab_list", caption_ungrouped_group, "");
AppendGroupToList("tab_list2", caption_ungrouped_group, "");
AppendSampleTabs();
});
// document events
function GetOptions() {
// get language labels
$(".label").each(function() {
$(this).text(chrome.i18n.getMessage(this.id));
});
// get language for color pick labels
$(".cpl").each(function() {
$(this).text(chrome.i18n.getMessage(this.id));
});
// get language for menu labels
$(".menu_item").each(function() {
$(this).text(chrome.i18n.getMessage("options_example_menu_item"));
});
// get checkboxes from saved states
$(".opt_checkbox").each(function() {
$(this)[0].checked = opt[this.id];
});
$(".set_button").each(function() {
$(this)[0].textContent = chrome.i18n.getMessage(this.id);
});
// get language dropdown menus
$(".bg_opt_drop_down_menu").each(function() {
$(this)[0].textContent = chrome.i18n.getMessage(this.id);
});
// get language for color pick labels
$(".color_border").each(function() {
$(this).attr("title", chrome.i18n.getMessage("options_color_pick_border"));
});
$(".color_bucket").each(function() {
$(this).attr("title", chrome.i18n.getMessage("options_color_pick_background"));
});
$(".pick_col_hover").each(function() {
$(this).attr("title", chrome.i18n.getMessage("options_color_pick_hover"));
});
$(".font_color").each(function() {
$(this).attr("title", chrome.i18n.getMessage("options_color_pick_font"));
});
$(".options_button_minus, .options_button_plus").each(function() {
$(this).attr("title", chrome.i18n.getMessage(this.id));
});
$("#filter_clear_icon").each(function() {
$(this).attr("title", chrome.i18n.getMessage("options_color_pick_filter_clear_icon"));
});
// get options for append child tab
for (var i = 0; i < $("#append_child_tab")[0].options.length; i++) {
if ($("#append_child_tab")[0].options[i].value === opt.append_child_tab) {
$("#append_child_tab")[0].selectedIndex = i;
break;
}
}
// get options for append child tab after limit
for (var i = 0; i < $("#append_child_tab_after_limit")[0].options.length; i++) {
if ($("#append_child_tab_after_limit")[0].options[i].value === opt.append_child_tab_after_limit) {
$("#append_child_tab_after_limit")[0].selectedIndex = i;
break;
}
}
// get options for append orphan tab
for (var i = 0; i < $("#append_orphan_tab")[0].options.length; i++) {
if ($("#append_orphan_tab")[0].options[i].value === opt.append_orphan_tab) {
$("#append_orphan_tab")[0].selectedIndex = i;
break;
}
}
// get options for action after closing active tab
for (var i = 0; i < $("#after_closing_active_tab")[0].options.length; i++) {
if ($("#after_closing_active_tab")[0].options[i].value === opt.after_closing_active_tab) {
$("#after_closing_active_tab")[0].selectedIndex = i;
break;
}
}
// get options for tabs tree depth option
$("#max_tree_depth")[0].value = opt.max_tree_depth;
// append themes to dropdown menu
for (var i = 0; i < themes.length; i++) {
var t_list = document.getElementById("theme_list");
var theme_name = document.createElement("option");
theme_name.value = themes[i];
theme_name.text = themes[i];
t_list.add(theme_name);
}
// select current theme in dropdown list
for (var i = 0; i < $("#theme_list")[0].options.length; i++) {
if ($("#theme_list")[0].options[i].value == localStorage["current_theme"]) {
$("#theme_list")[0].selectedIndex = i;
break;
}
}
}
function RemoveRedPreview() {
if (document.styleSheets[document.styleSheets.length-1].cssRules.length) {
document.styleSheets[document.styleSheets.length-1].deleteRule(document.styleSheets[document.styleSheets.length-1].cssRules.length-1);
}
}
// document events
function SetEvents() {
// --------------------------------DONATIONS------------------------------------------------------------------------------
// Donate
$(document).on("click", "#donate_paypal", function(event) {
chrome.tabs.create({url: "https://www.paypal.me/KarolJagiello/1"});
});
$(document).on("click", "#donate_bitcoin", function(event) {
copyStringToClipboard("19Z8w1RJEcBQpKSdiWa3UTBuKRJUkr96nJ");
alert(chrome.i18n.getMessage("options_copied_wallet_address"));
});
$(document).on("click", "#donate_ethereum", function(event) {
copyStringToClipboard("0x70B05eAD03bF08220d5aF4E1E868C351bfe145D6");
alert(chrome.i18n.getMessage("options_copied_wallet_address"));
});
// --------------------------------COPY VIVALDI LINK----------------------------------------------------------------------
$(document).on("click", "#copy_vivaldi_url_for_web_panel", function(event) {
copyStringToClipboard(chrome.runtime.getURL("sidebar.html"));
alert(chrome.i18n.getMessage("options_vivaldi_copied_url"));
});
// --------------------------------ADD RED PREVIEW------------------------------------------------------------------------
$(document).on("mouseenter", ".pick_col, #filter_box_font", function(event) {
document.styleSheets[document.styleSheets.length-1].insertRule("body { --"+this.id+": red; }", document.styleSheets[document.styleSheets.length-1].cssRules.length);
});
$(document).on("mouseenter", ".font_weight_normal", function(event) {
document.styleSheets[document.styleSheets.length-1].insertRule("body { --"+this.id+": normal; }", document.styleSheets[document.styleSheets.length-1].cssRules.length);
});
$(document).on("mouseenter", ".font_weight_bold", function(event) {
document.styleSheets[document.styleSheets.length-1].insertRule("body { --"+this.id+": bold; }", document.styleSheets[document.styleSheets.length-1].cssRules.length);
});
$(document).on("mouseenter", ".font_style_normal", function(event) {
document.styleSheets[document.styleSheets.length-1].insertRule("body { --"+this.id+": normal; }", document.styleSheets[document.styleSheets.length-1].cssRules.length);
});
$(document).on("mouseenter", ".font_style_italic", function(event) {
document.styleSheets[document.styleSheets.length-1].insertRule("body { --"+this.id+": italic; }", document.styleSheets[document.styleSheets.length-1].cssRules.length);
});
$(document).on("mouseleave", ".pick_col, .font_weight_normal, .font_weight_bold, .font_style_normal, .font_style_italic, #filter_box_font", function(event) {
RemoveRedPreview();
});
$(document).on("mouseenter", "#scrollbar_thumb_hover", function(event) {
$("#group_scrollbar_thumb, #pin_list_scrollbar_thumb").addClass("hover_blinking");
});
$(document).on("mouseleave", "#scrollbar_thumb_hover", function(event) {
$("#group_scrollbar_thumb, #pin_list_scrollbar_thumb").removeClass("hover_blinking");
});
$(document).on("mouseenter", "#group_list_button_hover_background", function(event) {
$("#_tab_list2").addClass("hover_blinking");
});
$(document).on("mouseleave", "#group_list_button_hover_background", function(event) {
$("#_tab_list2").removeClass("hover_blinking");
});
$(document).on("mouseenter", "#button_hover_background", function(event) {
$(".button").addClass("hover_blinking");
});
$(document).on("mouseleave", "#button_hover_background", function(event) {
$(".button").removeClass("hover_blinking");
});
$(document).on("mouseenter", "#button_icons_hover", function(event) {
$(".button_img").addClass("hover_blinking");
});
$(document).on("mouseleave", "#button_icons_hover", function(event) {
$(".button_img").removeClass("hover_blinking");
});
$(document).on("mouseenter", "#button_hover_border", function(event) {
$(".button").addClass("hover_border_blinking");
});
$(document).on("mouseleave", "#button_hover_border", function(event) {
$(".button").removeClass("hover_border_blinking");
});
// filter_box_font
$(document).on("mouseenter", "#options_tab_list_scrollbar_width_up, #options_tab_list_scrollbar_width_down", function(event) {
$("#group_scrollbar, #group_scrollbar_thumb").css({ "background-color": "red" });
});
$(document).on("mouseleave", "#options_tab_list_scrollbar_width_up, #options_tab_list_scrollbar_width_down", function(event) {
$("#group_scrollbar, #group_scrollbar_thumb").css({ "background-color": "" });
});
$(document).on("mouseenter", "#options_tab_list_scrollbar_height_up, #options_tab_list_scrollbar_height_down", function(event) {
$("#pin_list_scrollbar, #pin_list_scrollbar_thumb").css({ "background-color": "red" });
});
$(document).on("mouseleave", "#options_tab_list_scrollbar_height_up, #options_tab_list_scrollbar_height_down", function(event) {
$("#pin_list_scrollbar, #pin_list_scrollbar_thumb").css({ "background-color": "" });
});
// --------------------------------------COLOR PICKER---------------------------------------------------------------------
// change fonts weight
$(document).on("mousedown", ".font_weight_normal, .font_weight_bold", function(event) {
event.stopPropagation();
SelectedTheme["ColorsSet"][this.id] = $(this).is(".font_weight_normal") ? "normal" : "bold";
ApplyColorsSet(SelectedTheme["ColorsSet"]);
SaveTheme($("#theme_list").val());
});
// change fonts style
$(document).on("mousedown", ".font_style_normal, .font_style_italic", function(event) {
event.stopPropagation();
SelectedTheme["ColorsSet"][this.id] = $(this).is(".font_style_normal") ? "normal" : "italic";
ApplyColorsSet(SelectedTheme["ColorsSet"]);
SaveTheme($("#theme_list").val());
});
// show color picker
$(document).on("click", ".pick_col", function(event) {
RemoveRedPreview();
// if (event.shiftKey || event.ctrlKey) return;
event.stopPropagation();
PickColor = this.id;
let bod = document.getElementById("body");
let color = window.getComputedStyle(bod, null).getPropertyValue("--"+this.id);
$("#color_picker")[0].value = color.replace(" ", "");
$("#color_picker").click();
});
$(document).on("input", "#color_picker", function(event) {
event.stopPropagation();
SelectedTheme["ColorsSet"][PickColor] = $("#color_picker")[0].value;
ApplyColorsSet(SelectedTheme["ColorsSet"]);
SaveTheme($("#theme_list").val());
});
// ----------------------------------EVENTS FOR CHECKBOXES AND DROPDOWN MENUS---------------------------------------------
// set checkbox options on/off and save
$(document).on("click", ".bg_opt", function(event) {
opt[this.id] = $(this)[0].checked ? true : false;
SavePreferences();
});
// options that need reload
$(document).on("click", "#syncro_tabbar_tabs_order, #allow_pin_close, #switch_with_scroll, #always_show_close, #never_show_close, #close_other_trees", function(event) {
chrome.runtime.sendMessage({command: "reload_sidebar"});
});
// set dropdown menu options
$("#append_child_tab, #append_child_tab_after_limit, #after_closing_active_tab, #append_orphan_tab").change(function() {
opt[this.id] = $(this).val();
SavePreferences();
});
// set tabs tree depth option
$(document).on("input", "#max_tree_depth", function(event) {
opt.max_tree_depth = $(this)[0].value;
SavePreferences();
});
// set toolbar on/off and show/hide all toolbar options
$(document).on("click", "#show_toolbar", function(event) {
SelectedTheme.ToolbarShow = $("#show_toolbar")[0].checked ? true : false;
SaveTheme($("#theme_list").val());
LoadTheme($("#theme_list").val());
});
// ------------------------------OTHER------------------------------------------------------------------------------------
// block system dragging
$(document).bind("drop dragover", function(event) {
event.preventDefault();
});
// ----------------------------TOOLBAR CUSTOMIZATION----------------------------------------------------------------------
$(document).on("mousedown", ".button", function(event) {
$("#button_filter_clear").css({"opacity": "1", "position": "absolute"});
if ($(this).is("#button_filter_type, #filter_search_go_prev, #filter_search_go_next")) {
return;
}
$(this).attr("draggable", "true");
dragged_button = this;
});
// set dragged button node
$(document).on("dragstart", ".button", function(event) {
event.originalEvent.dataTransfer.setData(" "," ");
event.originalEvent.dataTransfer.setDragImage(document.getElementById("DragImage"), 0, 0);
});
// remove draggable attribute to clean html which will be saved in the toolbar
$(document).on("mouseleave", ".button", function(event) {
$(".button").removeAttr("draggable");
});
// drag&drop buttons to lists
$(document).on("dragenter", "#toolbar_main, .toolbar_shelf, #toolbar_unused_buttons", function(event) {
if ($(dragged_button).is("#button_tools, #button_search, #button_groups, #button_backup, #button_folders") && $(this).is(".toolbar_shelf")) {
return;
}
if (dragged_button.parentNode.id != this.id) {
// if ($(dragged_button).is("#button_tools, #button_search, #button_groups, #button_backup, #button_folders") && $(this).is("#toolbar_unused_buttons")) {
// $(".on").removeClass("on");
// }
$("#"+dragged_button.id).appendTo($(this));
}
});
// move (flip) buttons
$(document).on("dragenter", ".button", function(event) {
if ($(dragged_button).is("#button_tools, #button_search, #button_groups, #button_backup, #button_folders") && $(this).parent().is(".toolbar_shelf")) {
return;
}
if ($(this).parent().is("#toolbar_search, #toolbar_search_buttons")) {
return;
}
if ( $(this).index() <= $("#"+dragged_button.id).index()) {
$("#"+dragged_button.id).insertBefore($(this));
} else {
$("#"+dragged_button.id).insertAfter($(this));
}
});
// save toolbar
$(document).on("dragend", ".button", function(event) {
$("#button_filter_clear").css({"opacity": "0"});
SelectedTheme.toolbar = $("#toolbar").html();
SelectedTheme.unused_buttons = $("#toolbar_unused_buttons").html();
SaveTheme($("#theme_list").val());
$("#button_filter_clear").css({"opacity": "1"});
});
// reset toolbar
$(document).on("click", "#options_reset_toolbar_button", function(event) {
SelectedTheme["toolbar"] = DefaultToolbar;
SelectedTheme["unused_buttons"] = "";
$("#toolbar").html(DefaultToolbar);
$("#toolbar_unused_buttons").html("");
SaveTheme($("#theme_list").val());
$(".on").removeClass("on");
RefreshGUI();
});
// --------------------------------------THEME BUTTONS--------------------------------------------------------------------
// add new theme preset button
$(document).on("click", "#options_add_theme_button", function(event) {
AddNewTheme();
});
// remove theme preset button
$(document).on("click", "#options_remove_theme_button", function(event) {
DeleteSelectedTheme();
});
// select theme from list
$("#theme_list").change(function() {
localStorage["current_theme"] = $(this).val();
LoadTheme($(this).val());
});
// import theme preset button
$(document).on("click", "#options_import_theme_button", function(event) {
ShowOpenFileDialog("import_theme", ".tt_theme");
});
$(document).on("change", "#import_theme", function(event) {
ImportTheme();
});
// export theme preset button
$(document).on("click", "#options_export_theme_button", function(event) {
if ($("#theme_list")[0].options.length == 0) {
alert(chrome.i18n.getMessage("options_no_theme_to_export"));
} else {
SaveFile($("#theme_list").val() + ".tt_theme", SelectedTheme);
}
});
// rename theme preset button
$(document).on("click", "#options_rename_theme_button", function(event) {
RenameSelectedTheme();
});
// -------------------------------INDENTATION ADJUSTMENT------------------------------------------------------------------
// change tabs size preset(down)
$(document).on("click", "#options_tabs_indentation_down", function(event) {
let bod = document.getElementById("body");
var indentation = parseInt((window.getComputedStyle(bod, null).getPropertyValue("--children_padding_left")).replace("p","").replace("x",""));
if (indentation > 0) {
indentation--;
SelectedTheme["ColorsSet"]["children_padding_left"] = indentation+"px";
ApplyColorsSet(SelectedTheme["ColorsSet"]);
SaveTheme($("#theme_list").val());
}
});
// change tabs size preset(up)
$(document).on("click", "#options_tabs_indentation_up", function(event) {
let bod = document.getElementById("body");
var indentation = parseInt((window.getComputedStyle(bod, null).getPropertyValue("--children_padding_left")).replace("p","").replace("x",""));
if (indentation < 50) {
indentation++;
SelectedTheme["ColorsSet"]["children_padding_left"] = indentation+"px";
ApplyColorsSet(SelectedTheme["ColorsSet"]);
SaveTheme($("#theme_list").val());
}
});
// --------------------------TABS ROUNDNESS ADJUSTMENT--------------------------------------------------------------------
// change tabs roundness preset(down)
$(document).on("click", "#options_tabs_roundness_down", function(event) {
let bod = document.getElementById("body");
var border_radius = parseInt((window.getComputedStyle(bod, null).getPropertyValue("--tab_header_border_radius").replace("p","").replace("x","")));
if (border_radius > 0) {
border_radius--;
SelectedTheme["ColorsSet"]["tab_header_border_radius"] = border_radius+"px";
ApplyColorsSet(SelectedTheme["ColorsSet"]);
SaveTheme($("#theme_list").val());
}
});
// change tabs roundness preset(up)
$(document).on("click", "#options_tabs_roundness_up", function(event) {
let bod = document.getElementById("body");
var border_radius = parseInt((window.getComputedStyle(bod, null).getPropertyValue("--tab_header_border_radius")).replace("p","").replace("x",""));
if (border_radius < 25) {
border_radius++;
SelectedTheme["ColorsSet"]["tab_header_border_radius"] = border_radius+"px";
ApplyColorsSet(SelectedTheme["ColorsSet"]);
SaveTheme($("#theme_list").val());
}
});
// -------------------------------SIZE ADJUSTMENT-------------------------------------------------------------------------
// change tabs size preset(down)
$(document).on("click", "#options_tabs_size_down", function(event) {
if (SelectedTheme["TabsSizeSetNumber"] > 0) {
SelectedTheme["TabsSizeSetNumber"]--;
ApplySizeSet(SelectedTheme["TabsSizeSetNumber"]);
ApplySizeOptionsSet(SelectedTheme["TabsSizeSetNumber"]);
SaveTheme($("#theme_list").val());
}
});
// change tabs size preset(up)
$(document).on("click", "#options_tabs_size_up", function(event) {
if (SelectedTheme["TabsSizeSetNumber"] < 4) {
SelectedTheme["TabsSizeSetNumber"]++;
ApplySizeSet(SelectedTheme["TabsSizeSetNumber"]);
ApplySizeOptionsSet(SelectedTheme["TabsSizeSetNumber"]);
SaveTheme($("#theme_list").val());
}
});
// -------------------------------TABS SCROLLBAR SIZE ADJUSTMENT----------------------------------------------------------
// change tab list scrollbar preset(down)
$(document).on("mousedown", "#options_tab_list_scrollbar_width_down", function(event) {
let bod = document.getElementById("body");
var border_radius = parseInt((window.getComputedStyle(bod, null).getPropertyValue("--scrollbar_width").replace("p","").replace("x","")));
if (border_radius > 0) {
border_radius--;
SelectedTheme["ColorsSet"]["scrollbar_width"] = border_radius+"px";
ApplyColorsSet(SelectedTheme["ColorsSet"]);
SaveTheme($("#theme_list").val());
}
});
// change tab list scrollbar preset(up)
$(document).on("mousedown", "#options_tab_list_scrollbar_width_up", function(event) {
let bod = document.getElementById("body");
var border_radius = parseInt((window.getComputedStyle(bod, null).getPropertyValue("--scrollbar_width")).replace("p","").replace("x",""));
if (border_radius < 20) {
border_radius++;
SelectedTheme["ColorsSet"]["scrollbar_width"] = border_radius+"px";
ApplyColorsSet(SelectedTheme["ColorsSet"]);
SaveTheme($("#theme_list").val());
}
});
// change pin list scrollbar preset(down)
$(document).on("mousedown", "#options_tab_list_scrollbar_height_down", function(event) {
let bod = document.getElementById("body");
var border_radius = parseInt((window.getComputedStyle(bod, null).getPropertyValue("--scrollbar_height").replace("p","").replace("x","")));
if (border_radius > 0) {
border_radius--;
SelectedTheme["ColorsSet"]["scrollbar_height"] = border_radius+"px";
ApplyColorsSet(SelectedTheme["ColorsSet"]);
SaveTheme($("#theme_list").val());
}
});
// change pin list scrollbar preset(up)
$(document).on("mousedown", "#options_tab_list_scrollbar_height_up", function(event) {
let bod = document.getElementById("body");
var border_radius = parseInt((window.getComputedStyle(bod, null).getPropertyValue("--scrollbar_height")).replace("p","").replace("x",""));
if (border_radius < 20) {
border_radius++;
SelectedTheme["ColorsSet"]["scrollbar_height"] = border_radius+"px";
ApplyColorsSet(SelectedTheme["ColorsSet"]);
SaveTheme($("#theme_list").val());
}
});
// ----------------------CLEAR DATA BUTTON--------------------------------------------------------------------------------
// clear data
$(document).on("click", "#options_clear_data", function(event) {
localStorage.clear();
chrome.runtime.sendMessage({command: "reload"});
chrome.runtime.sendMessage({command: "reload_sidebar"});
location.reload();
});
// THIIIIIIIIIIIS IS TO MOVE ICONS FOR SETUP OPTIONS PAGE
// $(document).bind("contextmenu", function(event) {
// if (event.ctrlKey || event.shiftKey) {
// event.preventDefault();
// }
// });
// $(document).on("mousedown", "*", function(event) {
// $(document).on("mousedown", ".pick_col", function(event) {
// event.stopPropagation();
// if (event.button == 0 && event.shiftKey) {
// $(this).css({ "left": $(this).position().left-1 });
// }
// if (event.button == 2 && event.shiftKey) {
// $(this).css({ "left": $(this).position().left+1 });
// }
// if (event.button == 0 && event.ctrlKey) {
// $(this).css({ "top": $(this).position().top-1 });
// }
// if (event.button == 2 && event.ctrlKey) {
// $(this).css({ "top": $(this).position().top+1 });
// }
// console.log(this.id + " top: " + $(this).position().top + "px; left: " + $(this).position().left + "px;");
// console.log(this.id);
// });
}
function copyStringToClipboard(string) {
function handler (event){
event.clipboardData.setData('text/plain', string);
event.preventDefault();
document.removeEventListener('copy', handler, true);
}
document.addEventListener('copy', handler, true);
document.execCommand('copy');
}
// dummy functions
function BindTabsSwitchingToMouseWheel() {}
function GetFaviconAndTitle() {}
function RefreshMediaIcon() {}

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_color_border.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="7.9999996"
inkscape:cx="-2.1613271"
inkscape:cy="16.580136"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985"
inkscape:snap-smooth-nodes="true"
inkscape:object-nodes="true"
inkscape:snap-intersection-paths="true"
inkscape:object-paths="true" />
<path
style="fill:#f1f1f1;fill-opacity:1;stroke:#878787;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028589,15.999999 c 0,8.280961 -6.728528,14.994006 -15.028591,14.994006 -8.3000599,0 -15.02858523,-6.713045 -15.02858523,-14.994006 0,-8.2809587 6.72852533,-14.9940026 15.02858523,-14.9940026 8.300063,0 15.028591,6.7130439 15.028591,14.9940026 z"
id="path3769"
inkscape:connector-curvature="0" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4139"
width="15"
height="15"
x="8.5"
y="8.5" />
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_color_border_hover.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="11.313708"
inkscape:cx="9.1746459"
inkscape:cy="11.986143"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="fill:#e5f3fb;fill-opacity:1;stroke:#70c0e7;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028589,15.999999 c 0,8.280961 -6.728528,14.994006 -15.028591,14.994006 -8.3000599,0 -15.02858523,-6.713045 -15.02858523,-14.994006 0,-8.2809587 6.72852533,-14.9940026 15.02858523,-14.9940026 8.300063,0 15.028591,6.7130439 15.028591,14.9940026 z"
id="path3769"
inkscape:connector-curvature="0" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0064c6;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4139"
width="15"
height="15"
x="8.5"
y="8.5" />
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_color_border_hover.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="11.313708"
inkscape:cx="9.1746459"
inkscape:cy="11.986143"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="fill:#e5f3fb;fill-opacity:1;stroke:#70c0e7;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028589,15.999999 c 0,8.280961 -6.728528,14.994006 -15.028591,14.994006 -8.3000599,0 -15.02858523,-6.713045 -15.02858523,-14.994006 0,-8.2809587 6.72852533,-14.9940026 15.02858523,-14.9940026 8.300063,0 15.028591,6.7130439 15.028591,14.9940026 z"
id="path3769"
inkscape:connector-curvature="0" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0064c6;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4139"
width="15"
height="15"
x="8.5"
y="8.5" />
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_color_brush.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="7.9999996"
inkscape:cx="16.681392"
inkscape:cy="21.611806"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985"
inkscape:snap-smooth-nodes="true"
inkscape:object-nodes="true"
inkscape:snap-intersection-paths="true"
inkscape:object-paths="true" />
<path
style="fill:#f1f1f1;fill-opacity:1;stroke:#878787;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028589,15.999999 c 0,8.280961 -6.728528,14.994006 -15.028591,14.994006 -8.3000599,0 -15.02858523,-6.713045 -15.02858523,-14.994006 0,-8.2809587 6.72852533,-14.9940026 15.02858523,-14.9940026 8.300063,0 15.028591,6.7130439 15.028591,14.9940026 z"
id="path3769"
inkscape:connector-curvature="0" />
<path
id="path3816"
style="fill:#000000;fill-opacity:1;stroke:none"
d="m 50.460618,23.956724 -0.275992,-0.06491 -0.130311,0.801078 0.06444,0.01035 -0.378882,2.329239 0.169125,0.02722 c -0.250807,1.984008 -0.778809,3.755101 -1.29822,5.777604 l 6.25142,0.66919 c 0.16504,-1.884524 0.324516,-3.773576 0.658396,-5.543491 l 0.141264,0.02274 0.378885,-2.329237 0.04621,0.0074 0.130311,-0.80108 -0.285537,-0.04596 0.04441,-0.256247 c -0.819474,-0.264092 -2.36304,-1.67656 -1.726868,-3.858177 0.938293,-3.217685 1.918705,-4.175788 0.995162,-6.637404 -0.07634,-0.203524 -0.32066,-0.624366 -0.32066,-0.624366 0,0 -0.338635,0.339264 -0.480223,0.507308 -1.749955,2.076862 -1.056559,3.281947 -1.18588,6.620479 -0.08792,2.269865 -1.896367,3.117022 -2.757749,3.110557 l -0.03573,0.282481 m -0.162279,3.16145 -0.193333,1.759289 0.37017,-1.730825 0.351876,0.05664 -0.17284,1.43898 0.305642,-1.417607 0.604291,0.09727 -0.134363,1.412482 0.300414,-1.385754 0.371749,0.05984 -0.299319,2.59382 0.564966,-2.551058 0.318677,0.0513 -0.252321,2.263588 0.511283,-2.221902 0.803584,0.129345 -0.206405,1.603426 0.345892,-1.580975 0.524563,0.08443 -0.180234,1.568799 0.346236,-1.542078 0.310401,0.04997 -0.213604,1.669144 0.303244,-1.654716 0.240558,0.03873 c -0.242734,1.708292 -0.449568,3.322152 -0.571306,4.724494 -0.0486,0.03859 -0.148363,0.177681 -0.483092,0.153522 -0.208431,-0.01504 -0.260963,-0.34785 -0.545031,-0.410494 -0.396137,-0.08736 -0.256994,0.341639 -0.796263,0.362963 -0.415696,0.01644 -0.218414,-1.022571 -0.842956,-1.033293 -0.234291,-0.0041 -0.63581,1.212816 -1.604899,0.648907 0,0 -0.49223,-0.290631 -0.878859,-0.343696 -0.229483,-0.03151 -0.427773,0.200781 -0.427773,0.200781 0.429195,-1.695148 0.792619,-3.120182 1.095055,-5.116885 z m 4.395145,-12.215801 c 0.216535,0.03486 0.363517,0.238501 0.328314,0.454889 -0.03519,0.216385 -0.23924,0.36353 -0.455775,0.328674 -0.216532,-0.03486 -0.363517,-0.238498 -0.328314,-0.454887 0.03519,-0.216384 0.239243,-0.363532 0.455777,-0.328676 z m -4.275341,9.935035 c 0.0029,1.33e-4 0.0056,9.07e-4 0.0085,0.0013 l 5.256515,0.846104 c 0.04614,0.0074 0.07744,0.05014 0.06992,0.09624 l -0.0042,0.02603 c -0.0074,0.04612 -0.05081,0.07734 -0.09697,0.06992 L 50.39897,25.035698 c -0.04614,-0.0074 -0.07734,-0.05065 -0.06984,-0.09677 l 0.0042,-0.02603 c 0.0071,-0.04325 0.04559,-0.07328 0.08837,-0.07076 z m -0.227975,1.401489 c 0.0029,1.34e-4 0.0056,9.06e-4 0.0085,0.0013 l 5.256516,0.846105 c 0.04614,0.0074 0.07743,0.05012 0.06992,0.09624 l -0.0042,0.02603 c -0.0074,0.04612 -0.05081,0.07734 -0.09697,0.06992 L 50.17099,26.437162 c -0.04614,-0.0074 -0.07734,-0.05065 -0.06984,-0.09677 l 0.0042,-0.02602 c 0.0071,-0.04324 0.04559,-0.07327 0.08837,-0.07076 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccsscssccccccccccccccccccccccccccccsssscscccsssssccccccccccccccccccccc" />
<g
id="g4179"
transform="matrix(0.05277585,0,0,0.05277585,50.483248,15.769436)">
<path
sodipodi:nodetypes="zscsz"
inkscape:connector-curvature="0"
id="path4147"
d="m -133.87711,-165.57548 c 33.14071,0.0848 35.757496,-28.02679 35.761965,-35.77311 0.01935,-33.53721 -12.720695,-54.60527 -31.069155,-82.40822 -21.55328,28.76981 -38.18929,49.40878 -37.41295,82.24703 0.25784,10.9063 -0.42057,35.84949 32.72014,35.9343 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
sodipodi:nodetypes="cccsccccscsssscsssccccccccscsccscccscscc"
inkscape:connector-curvature="0"
d="m 42.311543,-424.34378 c 0.395256,16.05384 -0.179359,23.84563 -0.315374,38.99758 -9.227737,2.835 -16.236478,11.44279 -16.246169,21.0962 1e-6,12.15026 9.849736,22 22,22 12.150264,0 21.999999,-9.84974 22,-22 -0.0091,-8.45538 -4.678031,-16.8935 -11.743892,-20.72581 -0.12695,-15.3088 0.117587,-33.06731 0.128658,-37.50271 0,-28.19048 -0.152005,-38.37493 -0.152005,-38.37493 -4e-6,-14.4494 11.71355,-26.16296 26.162953,-26.16296 14.449404,0 26.162956,11.71356 26.162956,26.16296 0,0 -0.1739,10.92312 -0.1739,36.58978 0,21.45 -0.11531,39 -0.25586,39 -0.14056,0 -7.67525,-7.425 -16.744144,-16.5 -9.06889,-9.075 -16.603591,-16.5 -16.744141,-16.5 -0.14056,0 -0.544922,29.80273 -0.544922,29.80273 5.227234,6.16967 8.404297,14.19411 8.404297,22.96094 0,19.60611 -15.893891,35.5 -35.5,35.5 -19.606109,0 -35.5,-15.89389 -35.5,-35.5 0,-9.83458 3.998917,-18.73508 10.546875,-25.14453 0.05437,-30.34254 0.337891,-79.61914 0.337891,-79.61914 l -3.5,0 c -2.487534,-0.0238 -3.152623,-0.051 -4.25,1 -0.795275,0.79544 -141.249996,141.13867 -141.249996,141.13867 0,0 -2.02635,2.22772 -2.69064,4.81714 -0.0683,1.12441 0.22949,2.19601 1.37228,3.28246 0.71484,0.65702 1.11446,0.94051 2.07617,1.28517 1.60157,0.39811 2.49142,0.47656 5.99219,0.47656 l 5.75195,0 81.498046,81.5 c 44.82374,44.825 71.798368,71.46792 82.138672,81.5 2.922015,2.23088 4.210727,5.23365 9.611328,1.91603 27.952617,-24.66132 118.209144,-112.74909 137.582144,-133.39686 1.9946,-2.12585 2.81144,-4.64843 0.74599,-7.26915 -12.13848,-15.14925 -26.84725,-28.51344 -38.07813,-39.75 l -35,-34.9961 0,-48.25195 c 0,-31.8351 -0.26975,-43.84175 -0.26975,-43.84175 0,-23.04094 -18.67837,-41.71931 -41.719306,-41.71931 -23.040938,0 -41.719307,18.67837 -41.719303,41.71931 -0.04887,6.73426 -0.114868,7.99358 -0.114868,36.50967 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="path4159-3" />
</g>
<path
id="path4197-5"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 66.128757,14.083505 c -1.110351,-0.34118 -2.132767,-2.180989 -2.132767,-2.180989 0.464734,2.303894 1.872288,4.482611 3.029712,4.588023 0.349706,0.03185 0.959375,-0.117447 0.843616,-0.814325 -0.149995,-0.902958 -0.889679,-1.331256 -1.740558,-1.592705 z m 1.617893,3.102223 c 0.78487,1.039021 1.388967,2.022461 1.388967,2.022461 0.488002,-0.03859 0.994725,-0.450809 1.299086,-1.049476 0,0 -0.990227,-0.899815 -1.83846,-1.720645 -0.546715,0.0044 -0.788568,0.254985 -0.849595,0.747658 z m 1.657165,2.393269 c 0.827538,-0.268243 1.009774,-0.607946 1.32834,-1.110409 3.033381,3.223567 6.92555,8.851969 6.92555,8.851969 0.448443,0.571665 -0.140715,1.034699 -0.622861,0.50656 -2.646698,-2.805235 -4.51679,-4.661703 -7.631029,-8.24812 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="scssscsscccccccc" />
<path
id="path4197-0"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 8.0605278,11.213017 C 7.1675997,9.5557656 4.2447692,9.6420156 4.2447692,9.6420156 7.5940478,8.0518824 11.130292,8.3073782 11.716536,10.299325 c 0.177125,0.601852 0.203926,1.867548 -0.799718,2.393621 -1.3004195,0.681636 -2.1720325,-0.209951 -2.8562928,-1.479931 z m 3.0127672,2.778058 c 1.163474,1.321379 2.020707,2.655019 2.020707,2.655019 0.865952,-0.3581 1.842619,-1.371179 2.502353,-2.584624 0,0 -1.553475,-0.958811 -2.873771,-1.866358 -0.962051,0.334232 -1.439422,0.910557 -1.649289,1.795963 z m 2.414991,3.13371 c 1.510687,-0.956694 1.9018,-1.650937 2.566467,-2.707103 4.661517,3.742096 9.183616,9.76871 9.183616,9.76871 0.669338,0.717097 -0.462833,1.867001 -1.200488,1.245046 C 20.525934,22.84522 18.216406,21.4438 13.488286,17.124785 Z"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_color_brush_hover.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="7.9999996"
inkscape:cx="24.07573"
inkscape:cy="16.001218"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="fill:#e5f3fb;fill-opacity:1;stroke:#70c0e7;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028589,15.999999 c 0,8.280961 -6.728528,14.994006 -15.028591,14.994006 -8.3000599,0 -15.02858523,-6.713045 -15.02858523,-14.994006 0,-8.2809587 6.72852533,-14.9940026 15.02858523,-14.9940026 8.300063,0 15.028591,6.7130439 15.028591,14.9940026 z"
id="path3769"
inkscape:connector-curvature="0" />
<path
id="path4197-0"
style="fill:#0064c6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 8.0605278,11.213017 C 7.1675997,9.555766 4.2447692,9.642016 4.2447692,9.642016 7.5940478,8.0518828 11.130292,8.3073786 11.716536,10.299325 c 0.177125,0.601852 0.203926,1.867548 -0.799718,2.393621 -1.3004195,0.681636 -2.1720325,-0.209951 -2.8562928,-1.479931 z m 3.0127672,2.778058 c 1.163474,1.321379 2.020707,2.655019 2.020707,2.655019 0.865952,-0.3581 1.842619,-1.371179 2.502353,-2.584624 0,0 -1.553475,-0.958811 -2.873771,-1.866358 -0.962051,0.334232 -1.439422,0.910557 -1.649289,1.795963 z m 2.414991,3.13371 c 1.510687,-0.956694 1.9018,-1.650937 2.566467,-2.707103 4.661517,3.742096 9.183616,9.76871 9.183616,9.76871 0.669338,0.717097 -0.462833,1.867001 -1.200488,1.245046 C 20.525934,22.84522 18.216406,21.4438 13.488286,17.124785 Z"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_color_bucket.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="7.9999996"
inkscape:cx="16.686815"
inkscape:cy="12.255926"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985"
inkscape:snap-smooth-nodes="true"
inkscape:object-nodes="true"
inkscape:snap-intersection-paths="true"
inkscape:object-paths="true" />
<path
style="fill:#f1f1f1;fill-opacity:1;stroke:#878787;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028589,15.999999 c 0,8.280961 -6.728528,14.994006 -15.028591,14.994006 -8.3000599,0 -15.02858523,-6.713045 -15.02858523,-14.994006 0,-8.2809587 6.72852533,-14.9940026 15.02858523,-14.9940026 8.300063,0 15.028591,6.7130439 15.028591,14.9940026 z"
id="path3769"
inkscape:connector-curvature="0" />
<g
id="g4179"
transform="matrix(0.05277585,0,0,0.05277585,15.406064,32.197748)">
<path
sodipodi:nodetypes="zscsz"
inkscape:connector-curvature="0"
id="path4147"
d="m -133.87711,-165.57548 c 33.14071,0.0848 35.757496,-28.02679 35.761965,-35.77311 0.01935,-33.53721 -12.720695,-54.60527 -31.069155,-82.40822 -21.55328,28.76981 -38.18929,49.40878 -37.41295,82.24703 0.25784,10.9063 -0.42057,35.84949 32.72014,35.9343 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
sodipodi:nodetypes="cccsccccscsssscsssccccccccscsccscccscscc"
inkscape:connector-curvature="0"
d="m 42.311543,-424.34378 c 0.395256,16.05384 -0.179359,23.84563 -0.315374,38.99758 -9.227737,2.835 -16.236478,11.44279 -16.246169,21.0962 1e-6,12.15026 9.849736,22 22,22 12.150264,0 21.999999,-9.84974 22,-22 -0.0091,-8.45538 -4.678031,-16.8935 -11.743892,-20.72581 -0.12695,-15.3088 0.117587,-33.06731 0.128658,-37.50271 0,-28.19048 -0.152005,-38.37493 -0.152005,-38.37493 -4e-6,-14.4494 11.71355,-26.16296 26.162953,-26.16296 14.449404,0 26.162956,11.71356 26.162956,26.16296 0,0 -0.1739,10.92312 -0.1739,36.58978 0,21.45 -0.11531,39 -0.25586,39 -0.14056,0 -7.67525,-7.425 -16.744144,-16.5 -9.06889,-9.075 -16.603591,-16.5 -16.744141,-16.5 -0.14056,0 -0.544922,29.80273 -0.544922,29.80273 5.227234,6.16967 8.404297,14.19411 8.404297,22.96094 0,19.60611 -15.893891,35.5 -35.5,35.5 -19.606109,0 -35.5,-15.89389 -35.5,-35.5 0,-9.83458 3.998917,-18.73508 10.546875,-25.14453 0.05437,-30.34254 0.337891,-79.61914 0.337891,-79.61914 l -3.5,0 c -2.487534,-0.0238 -3.152623,-0.051 -4.25,1 -0.795275,0.79544 -141.249996,141.13867 -141.249996,141.13867 0,0 -2.02635,2.22772 -2.69064,4.81714 -0.0683,1.12441 0.22949,2.19601 1.37228,3.28246 0.71484,0.65702 1.11446,0.94051 2.07617,1.28517 1.60157,0.39811 2.49142,0.47656 5.99219,0.47656 l 5.75195,0 81.498046,81.5 c 44.82374,44.825 71.798368,71.46792 82.138672,81.5 2.922015,2.23088 4.210727,5.23365 9.611328,1.91603 27.952617,-24.66132 118.209144,-112.74909 137.582144,-133.39686 1.9946,-2.12585 2.81144,-4.64843 0.74599,-7.26915 -12.13848,-15.14925 -26.84725,-28.51344 -38.07813,-39.75 l -35,-34.9961 0,-48.25195 c 0,-31.8351 -0.26975,-43.84175 -0.26975,-43.84175 0,-23.04094 -18.67837,-41.71931 -41.719306,-41.71931 -23.040938,0 -41.719307,18.67837 -41.719303,41.71931 -0.04887,6.73426 -0.114868,7.99358 -0.114868,36.50967 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="path4159-3" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_color_bucket_hover.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="11.313708"
inkscape:cx="7.2176472"
inkscape:cy="12.300875"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="fill:#e5f3fb;fill-opacity:1;stroke:#70c0e7;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028589,15.999999 c 0,8.280961 -6.728528,14.994006 -15.028591,14.994006 -8.3000599,0 -15.02858523,-6.713045 -15.02858523,-14.994006 0,-8.2809587 6.72852533,-14.9940026 15.02858523,-14.9940026 8.300063,0 15.028591,6.7130439 15.028591,14.9940026 z"
id="path3769"
inkscape:connector-curvature="0" />
<g
id="g4179"
transform="matrix(0.05277585,0,0,0.05277585,15.406064,32.197748)"
style="fill:#0064c6;fill-opacity:1">
<path
sodipodi:nodetypes="zscsz"
inkscape:connector-curvature="0"
id="path4147"
d="m -133.87711,-165.57548 c 33.14071,0.0848 35.757496,-28.02679 35.761965,-35.77311 0.01935,-33.53721 -12.720695,-54.60527 -31.069155,-82.40822 -21.55328,28.76981 -38.18929,49.40878 -37.41295,82.24703 0.25784,10.9063 -0.42057,35.84949 32.72014,35.9343 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0064c6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
sodipodi:nodetypes="cccsccccscsssscsssccccccccscsccscccscscc"
inkscape:connector-curvature="0"
d="m 42.311543,-424.34378 c 0.395256,16.05384 -0.179359,23.84563 -0.315374,38.99758 -9.227737,2.835 -16.236478,11.44279 -16.246169,21.0962 1e-6,12.15026 9.849736,22 22,22 12.150264,0 21.999999,-9.84974 22,-22 -0.0091,-8.45538 -4.678031,-16.8935 -11.743892,-20.72581 -0.12695,-15.3088 0.117587,-33.06731 0.128658,-37.50271 0,-28.19048 -0.152005,-38.37493 -0.152005,-38.37493 -4e-6,-14.4494 11.71355,-26.16296 26.162953,-26.16296 14.449404,0 26.162956,11.71356 26.162956,26.16296 0,0 -0.1739,10.92312 -0.1739,36.58978 0,21.45 -0.11531,39 -0.25586,39 -0.14056,0 -7.67525,-7.425 -16.744144,-16.5 -9.06889,-9.075 -16.603591,-16.5 -16.744141,-16.5 -0.14056,0 -0.544922,29.80273 -0.544922,29.80273 5.227234,6.16967 8.404297,14.19411 8.404297,22.96094 0,19.60611 -15.893891,35.5 -35.5,35.5 -19.606109,0 -35.5,-15.89389 -35.5,-35.5 0,-9.83458 3.998917,-18.73508 10.546875,-25.14453 0.05437,-30.34254 0.337891,-79.61914 0.337891,-79.61914 l -3.5,0 c -2.487534,-0.0238 -3.152623,-0.051 -4.25,1 -0.795275,0.79544 -141.249996,141.13867 -141.249996,141.13867 0,0 -2.02635,2.22772 -2.69064,4.81714 -0.0683,1.12441 0.22949,2.19601 1.37228,3.28246 0.71484,0.65702 1.11446,0.94051 2.07617,1.28517 1.60157,0.39811 2.49142,0.47656 5.99219,0.47656 l 5.75195,0 81.498046,81.5 c 44.82374,44.825 71.798368,71.46792 82.138672,81.5 2.922015,2.23088 4.210727,5.23365 9.611328,1.91603 27.952617,-24.66132 118.209144,-112.74909 137.582144,-133.39686 1.9946,-2.12585 2.81144,-4.64843 0.74599,-7.26915 -12.13848,-15.14925 -26.84725,-28.51344 -38.07813,-39.75 l -35,-34.9961 0,-48.25195 c 0,-31.8351 -0.26975,-43.84175 -0.26975,-43.84175 0,-23.04094 -18.67837,-41.71931 -41.719306,-41.71931 -23.040938,0 -41.719307,18.67837 -41.719303,41.71931 -0.04887,6.73426 -0.114868,7.99358 -0.114868,36.50967 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0064c6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="path4159-3" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_color_toolbar_icon.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="7.9999996"
inkscape:cx="37.629077"
inkscape:cy="29.297321"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985"
inkscape:snap-smooth-nodes="true"
inkscape:object-nodes="true"
inkscape:snap-intersection-paths="true"
inkscape:object-paths="true" />
<path
style="fill:#f1f1f1;fill-opacity:1;stroke:#878787;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028589,15.999999 c 0,8.280961 -6.728528,14.994006 -15.028591,14.994006 -8.3000599,0 -15.02858523,-6.713045 -15.02858523,-14.994006 0,-8.2809587 6.72852533,-14.9940026 15.02858523,-14.9940026 8.300063,0 15.028591,6.7130439 15.028591,14.9940026 z"
id="path3769"
inkscape:connector-curvature="0" />
<path
sodipodi:type="star"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="path4135"
sodipodi:sides="3"
sodipodi:cx="16"
sodipodi:cy="16"
sodipodi:r1="8.2899132"
sodipodi:r2="8.2899132"
sodipodi:arg1="-0.1660251"
sodipodi:arg2="0.88117245"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="M 24.175922,14.629981 21.274433,22.395547 13.09851,23.765566 7.8240776,17.370019 10.725567,9.6044532 18.90149,8.2344338 Z"
transform="matrix(0.93757307,-0.34778834,0.34778834,0.93757307,-4.5657826,6.5634441)" />
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_color_toolbar_icon_hover.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1058"
id="namedview2987"
showgrid="false"
inkscape:zoom="7.9999996"
inkscape:cx="-7.9334253"
inkscape:cy="37.797321"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985"
inkscape:snap-smooth-nodes="true"
inkscape:object-nodes="true"
inkscape:snap-intersection-paths="true"
inkscape:object-paths="true" />
<path
style="fill:#e5f3fb;fill-opacity:1;stroke:#70c0e7;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028589,15.999999 c 0,8.280961 -6.728528,14.994006 -15.028591,14.994006 -8.3000599,0 -15.02858523,-6.713045 -15.02858523,-14.994006 0,-8.2809587 6.72852533,-14.9940026 15.02858523,-14.9940026 8.300063,0 15.028591,6.7130439 15.028591,14.9940026 z"
id="path3769"
inkscape:connector-curvature="0" />
<path
sodipodi:type="star"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0064c6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="path4135"
sodipodi:sides="3"
sodipodi:cx="16"
sodipodi:cy="16"
sodipodi:r1="8.2899132"
sodipodi:r2="8.2899132"
sodipodi:arg1="-0.1660251"
sodipodi:arg2="0.88117245"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="M 24.175922,14.629981 21.274433,22.395547 13.09851,23.765566 7.8240776,17.370019 10.725567,9.6044532 18.90149,8.2344338 Z"
transform="matrix(0.93757307,-0.34778834,0.34778834,0.93757307,-4.5657826,6.5634441)" />
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_color_x.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="11.313708"
inkscape:cx="19.573744"
inkscape:cy="14.81287"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985"
inkscape:snap-smooth-nodes="true"
inkscape:object-nodes="true"
inkscape:snap-intersection-paths="true"
inkscape:object-paths="true" />
<path
style="fill:#f1f1f1;fill-opacity:1;stroke:#878787;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028589,15.999999 c 0,8.280961 -6.728528,14.994006 -15.028591,14.994006 -8.3000599,0 -15.02858523,-6.713045 -15.02858523,-14.994006 0,-8.2809587 6.72852533,-14.9940026 15.02858523,-14.9940026 8.300063,0 15.028591,6.7130439 15.028591,14.9940026 z"
id="path3769"
inkscape:connector-curvature="0" />
<g
id="g4151"
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,30.274718,13.038991)">
<path
inkscape:connector-curvature="0"
id="path4134"
d="m -2e-7,12.187499 -16.0000008,0"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4134-3"
d="m -8.0000002,20.187499 0,-15.9999998"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_color_x_hover.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="11.313708"
inkscape:cx="8.1581799"
inkscape:cy="18.880434"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="fill:#e5f3fb;fill-opacity:1;stroke:#70c0e7;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028589,15.999999 c 0,8.280961 -6.728528,14.994006 -15.028591,14.994006 -8.3000599,0 -15.02858523,-6.713045 -15.02858523,-14.994006 0,-8.2809587 6.72852533,-14.9940026 15.02858523,-14.9940026 8.300063,0 15.028591,6.7130439 15.028591,14.9940026 z"
id="path3769"
inkscape:connector-curvature="0" />
<g
id="g4151"
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,30.274718,13.038991)"
style="stroke:#0064c6;stroke-opacity:1">
<path
inkscape:connector-curvature="0"
id="path4134"
d="m -2e-7,12.187499 -16.0000008,0"
style="fill:none;fill-rule:evenodd;stroke:#0064c6;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4134-3"
d="m -8.0000002,20.187499 0,-15.9999998"
style="fill:none;fill-rule:evenodd;stroke:#0064c6;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_font_color.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="7.9999996"
inkscape:cx="10.675742"
inkscape:cy="13.646339"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="fill:#f1f1f1;fill-opacity:1;stroke:#878787;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028589,15.999999 c 0,8.280961 -6.728528,14.994006 -15.028591,14.994006 -8.3000599,0 -15.02858523,-6.713045 -15.02858523,-14.994006 0,-8.2809587 6.72852533,-14.9940026 15.02858523,-14.9940026 8.300063,0 15.028591,6.7130439 15.028591,14.9940026 z"
id="path3769"
inkscape:connector-curvature="0" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 14.968307,24.013197 c -2.93254,-0.530179 -4.905026,-2.51396 -5.5724821,-5.604391 -0.259553,-1.201771 -0.257864,-3.492024 0.0035,-4.703331 0.6443311,-2.986558 2.6765071,-5.0698533 5.5483471,-5.6879143 1.067828,-0.229812 2.857234,-0.207671 3.933281,0.04867 0.899344,0.214244 1.981222,0.587201 2.560245,0.882597 l 0.356571,0.181909 0,1.4124173 c 0,0.77683 -0.0195,1.412418 -0.04333,1.412418 -0.02384,0 -0.312202,-0.18525 -0.640816,-0.411666 -2.258243,-1.5559343 -4.851183,-1.9146873 -6.78089,-0.938185 -0.618898,0.313186 -1.446436,1.184425 -1.786586,1.880934 -0.949781,1.944824 -0.949813,5.101848 -7.3e-5,7.062591 1.39764,2.885435 5.400527,3.220043 8.831855,0.73827 l 0.419845,-0.30366 0,1.45368 0,1.453682 -0.68501,0.288906 c -1.033684,0.435963 -1.826974,0.691337 -2.607488,0.839398 -0.870381,0.165108 -2.605865,0.162005 -3.536932,-0.0063 l 0,-3e-6 z"
id="path4138"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_font_color_hover.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="11.313708"
inkscape:cx="-3.6983137"
inkscape:cy="11.328603"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="fill:#e5f3fb;fill-opacity:1;stroke:#70c0e7;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028589,15.999999 c 0,8.280961 -6.728528,14.994006 -15.028591,14.994006 -8.3000599,0 -15.02858523,-6.713045 -15.02858523,-14.994006 0,-8.2809587 6.72852533,-14.9940026 15.02858523,-14.9940026 8.300063,0 15.028591,6.7130439 15.028591,14.9940026 z"
id="path3769"
inkscape:connector-curvature="0" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0064c6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 14.968307,24.013197 c -2.93254,-0.530179 -4.905026,-2.51396 -5.5724821,-5.604391 -0.259553,-1.201771 -0.257864,-3.492024 0.0035,-4.703331 0.6443311,-2.986558 2.6765071,-5.0698535 5.5483471,-5.6879145 1.067828,-0.229812 2.857234,-0.207671 3.933281,0.04867 0.899344,0.214244 1.981222,0.587201 2.560245,0.882597 l 0.356571,0.181909 0,1.4124175 c 0,0.77683 -0.0195,1.412418 -0.04333,1.412418 -0.02384,0 -0.312202,-0.18525 -0.640816,-0.411666 -2.258243,-1.5559345 -4.851183,-1.9146875 -6.78089,-0.938185 -0.618898,0.313186 -1.446436,1.184425 -1.786586,1.880934 -0.949781,1.944824 -0.949813,5.101848 -7.3e-5,7.062591 1.39764,2.885435 5.400527,3.220043 8.831855,0.73827 l 0.419845,-0.30366 0,1.45368 0,1.453682 -0.68501,0.288906 c -1.033684,0.435963 -1.826974,0.691337 -2.607488,0.839398 -0.870381,0.165108 -2.605865,0.162005 -3.536932,-0.0063 l 0,-3e-6 z"
id="path4138"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_font_style_italic.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="5.656854"
inkscape:cx="13.004227"
inkscape:cy="27.406548"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="fill:#f1f1f1;fill-opacity:1;stroke:#878787;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028585,15.999998 c 0,8.280961 -6.72853,14.994006 -15.02859,14.994006 -8.30006,0 -15.02858,-6.713045 -15.02858,-14.994006 0,-8.280958 6.72852,-14.994002 15.02858,-14.994002 8.30006,0 15.02859,6.713044 15.02859,14.994002 z"
id="path3769-3-1"
inkscape:connector-curvature="0" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 12.676912,25.253089 c 0,-0.110175 3.04743,-13.38117 3.14614,-13.700827 0.0422,-0.136739 0.17859,-0.15468 1.1758,-0.15468 l 1.12804,0 -1.60643,6.960583 -1.60643,6.960583 -1.11856,0.02474 c -0.87267,0.0193 -1.11856,-5.72e-4 -1.11856,-0.0904 z"
id="path4215"
inkscape:connector-curvature="0" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 16.304592,8.856417 c 0.002,-0.08507 0.11279,-0.612089 0.24606,-1.171145 l 0.24231,-1.016466 1.2933,-0.02442 1.2933,-0.02442 -0.1206,0.510553 c -0.0663,0.280804 -0.18807,0.818808 -0.27052,1.195563 l -0.14991,0.68501 -1.26885,0 c -1.15093,0 -1.26849,-0.01438 -1.26509,-0.15468 z"
id="path4217"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_font_style_italic_hover.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="15.999999"
inkscape:cx="5.5233129"
inkscape:cy="17.833045"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="fill:#e5f3fb;fill-opacity:1;stroke:#70c0e7;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028585,15.999998 c 0,8.280961 -6.72853,14.994006 -15.02859,14.994006 -8.30006,0 -15.02858,-6.713045 -15.02858,-14.994006 0,-8.280958 6.72852,-14.994002 15.02858,-14.994002 8.30006,0 15.02859,6.713044 15.02859,14.994002 z"
id="path3769-3-1"
inkscape:connector-curvature="0" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0064c6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 12.676912,25.253089 c 0,-0.110175 3.04743,-13.38117 3.14614,-13.700827 0.0422,-0.136739 0.17859,-0.15468 1.1758,-0.15468 l 1.12804,0 -1.60643,6.960583 -1.60643,6.960583 -1.11856,0.02474 c -0.87267,0.0193 -1.11856,-5.72e-4 -1.11856,-0.0904 z"
id="path4215"
inkscape:connector-curvature="0" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0064c6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 16.304592,8.856417 c 0.002,-0.08507 0.11279,-0.612089 0.24606,-1.171145 l 0.24231,-1.016466 1.2933,-0.02442 1.2933,-0.02442 -0.1206,0.510553 c -0.0663,0.280804 -0.18807,0.818808 -0.27052,1.195563 l -0.14991,0.68501 -1.26885,0 c -1.15093,0 -1.26849,-0.01438 -1.26509,-0.15468 z"
id="path4217"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_font_style_normal.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="2.828427"
inkscape:cx="11.419382"
inkscape:cy="48.938907"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="fill:#f1f1f1;fill-opacity:1;stroke:#878787;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028585,15.999998 c 0,8.280961 -6.72853,14.994006 -15.02859,14.994006 -8.30006,0 -15.02858,-6.713045 -15.02858,-14.994006 0,-8.280958 6.72852,-14.994002 15.02858,-14.994002 8.30006,0 15.02859,6.713044 15.02859,14.994002 z"
id="path3769-3-1"
inkscape:connector-curvature="0" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 10.000042,16.187289 0,-7.4375011 1.187499,0 1.187501,0 0,0.8125012 c 0,0.4468749 0.03465,0.8124999 0.077,0.8124999 0.04235,0 0.337665,-0.190034 0.65625,-0.422298 1.974137,-1.4392351 4.239372,-1.9255021 6.178997,-1.3264121 0.983698,0.303833 1.951647,1.1134322 2.408058,2.0141151 0.630723,1.244674 0.675853,1.749225 0.677846,7.578345 l 0.0018,5.40625 -1.1875,0 -1.1875,0 -0.0025,-4.71875 c -0.0014,-2.595313 -0.05843,-5.1125 -0.12681,-5.59375 -0.256656,-1.806583 -1.002003,-2.533728 -2.723342,-2.656889 -1.275038,-0.09123 -2.402204,0.277581 -4.052478,1.325973 l -0.717657,0.455916 -0.0011,5.59375 -0.0011,5.59375 -1.1875,0 -1.187499,0 0,-7.4375 z"
id="path4231"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_font_style_normal_hover.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="11.313708"
inkscape:cx="5.0396671"
inkscape:cy="5.8675863"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="fill:#e5f3fb;fill-opacity:1;stroke:#70c0e7;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028585,15.999998 c 0,8.280961 -6.72853,14.994006 -15.02859,14.994006 -8.30006,0 -15.02858,-6.713045 -15.02858,-14.994006 0,-8.280958 6.72852,-14.994002 15.02858,-14.994002 8.30006,0 15.02859,6.713044 15.02859,14.994002 z"
id="path3769-3-1"
inkscape:connector-curvature="0" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0064c6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 10.000042,16.187289 0,-7.4375011 1.187499,0 1.187501,0 0,0.8125012 c 0,0.4468749 0.03465,0.8124999 0.077,0.8124999 0.04235,0 0.337665,-0.190034 0.65625,-0.422298 1.974137,-1.4392351 4.239372,-1.9255021 6.178997,-1.3264121 0.983698,0.303833 1.951647,1.1134322 2.408058,2.0141151 0.630723,1.244674 0.675853,1.749225 0.677846,7.578345 l 0.0018,5.40625 -1.1875,0 -1.1875,0 -0.0025,-4.71875 c -0.0014,-2.595313 -0.05843,-5.1125 -0.12681,-5.59375 -0.256656,-1.806583 -1.002003,-2.533728 -2.723342,-2.656889 -1.275038,-0.09123 -2.402204,0.277581 -4.052478,1.325973 l -0.717657,0.455916 -0.0011,5.59375 -0.0011,5.59375 -1.1875,0 -1.187499,0 0,-7.4375 z"
id="path4231"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_font_weight_bold.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="0.70710675"
inkscape:cx="-450.67834"
inkscape:cy="279.50809"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="fill:#f1f1f1;fill-opacity:1;stroke:#878787;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028588,15.999998 c 0,8.280961 -6.728528,14.994006 -15.028591,14.994006 -8.30006,0 -15.028585,-6.713045 -15.028585,-14.994006 0,-8.2809582 6.728525,-14.9940022 15.028585,-14.9940022 8.300063,0 15.028591,6.713044 15.028591,14.9940022 z"
id="path3769-3"
inkscape:connector-curvature="0" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 16.920695,25.245936 c -0.645039,-0.08416 -1.442138,-0.321716 -1.959927,-0.584101 -0.547863,-0.277622 -0.681506,-0.268865 -0.793357,0.05199 l -0.09244,0.265165 -1.702589,0 c -0.936425,0 -1.887128,0.02529 -2.112673,0.05621 l -0.4100845,0.05621 0,-9.734733 0,-9.7347329 2.2097085,0 2.209708,0 0,3.4471457 c 0,1.8959302 0.0262,3.4471462 0.05822,3.4471462 0.03202,0 0.419827,-0.233317 0.861787,-0.518482 1.524085,-0.983383 2.014323,-1.156942 3.455214,-1.223253 1.270919,-0.05849 1.832463,0.041 2.719053,0.481755 0.951251,0.472895 1.626785,1.199138 2.177585,2.341047 0.697849,1.446766 0.847797,2.179294 0.846195,4.133846 -0.0011,1.389686 -0.03054,1.750757 -0.195827,2.404981 -0.357453,1.414841 -0.979407,2.520115 -1.956473,3.476846 -1.42129,1.391711 -3.132656,1.917593 -5.314106,1.632963 z m 1.094939,-3.311541 c 1.405153,-0.675387 1.999886,-2.060513 1.880657,-4.380026 -0.107363,-2.088675 -0.658221,-3.099773 -1.872444,-3.436867 -0.843897,-0.234283 -2.507458,-0.02431 -3.395075,0.428513 l -0.361685,0.184518 0.02308,3.638996 0.02308,3.638996 0.441942,0.109609 c 0.266555,0.06611 0.897949,0.101034 1.590991,0.088 1.056153,-0.01986 1.191121,-0.04183 1.669463,-0.271742 z"
id="path4213"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="32"
height="32"
sodipodi:docname="options_font_weight_bold_hover.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="7.9999996"
inkscape:cx="-2.6696921"
inkscape:cy="24.132188"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="fill:#e5f3fb;fill-opacity:1;stroke:#70c0e7;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.028588,15.999998 c 0,8.280961 -6.728528,14.994006 -15.028591,14.994006 -8.30006,0 -15.028585,-6.713045 -15.028585,-14.994006 0,-8.2809582 6.728525,-14.9940022 15.028585,-14.9940022 8.300063,0 15.028591,6.713044 15.028591,14.9940022 z"
id="path3769-3"
inkscape:connector-curvature="0" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0064c6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 16.920695,25.245936 c -0.645039,-0.08416 -1.442138,-0.321716 -1.959927,-0.584101 -0.547863,-0.277622 -0.681506,-0.268865 -0.793357,0.05199 l -0.09244,0.265165 -1.702589,0 c -0.936425,0 -1.887128,0.02529 -2.112673,0.05621 l -0.4100845,0.05621 0,-9.734733 0,-9.7347329 2.2097085,0 2.209708,0 0,3.4471457 c 0,1.8959302 0.0262,3.4471462 0.05822,3.4471462 0.03202,0 0.419827,-0.233317 0.861787,-0.518482 1.524085,-0.983383 2.014323,-1.156942 3.455214,-1.223253 1.270919,-0.05849 1.832463,0.041 2.719053,0.481755 0.951251,0.472895 1.626785,1.199138 2.177585,2.341047 0.697849,1.446766 0.847797,2.179294 0.846195,4.133846 -0.0011,1.389686 -0.03054,1.750757 -0.195827,2.404981 -0.357453,1.414841 -0.979407,2.520115 -1.956473,3.476846 -1.42129,1.391711 -3.132656,1.917593 -5.314106,1.632963 z m 1.094939,-3.311541 c 1.405153,-0.675387 1.999886,-2.060513 1.880657,-4.380026 -0.107363,-2.088675 -0.658221,-3.099773 -1.872444,-3.436867 -0.843897,-0.234283 -2.507458,-0.02431 -3.395075,0.428513 l -0.361685,0.184518 0.02308,3.638996 0.02308,3.638996 0.441942,0.109609 c 0.266555,0.06611 0.897949,0.101034 1.590991,0.088 1.056153,-0.01986 1.191121,-0.04183 1.669463,-0.271742 z"
id="path4213"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="20"
height="20"
sodipodi:docname="options_scale_minus.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="11.313708"
inkscape:cx="-13.383622"
inkscape:cy="13.695031"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="fill:#f1f1f1;fill-opacity:1;stroke:#878787;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 19.5,9.999999 C 19.5,15.246705 15.246705,19.5 9.999998,19.5 4.753293,19.5 0.5,15.246705 0.5,9.999999 0.5,4.753295 4.753293,0.5 9.999998,0.5 15.246705,0.5 19.5,4.753295 19.5,9.999999 Z"
id="path3769-3-1"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999982px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 14.924119,10 c -3.282747,0 -6.565492,0 -9.848238,0"
id="path5144-6-6-9"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="20"
height="20"
sodipodi:docname="options_scale_minus_hover.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989">
<pattern
y="0"
x="0"
height="6"
width="6"
patternUnits="userSpaceOnUse"
id="EMFhbasepattern" />
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="15.999999"
inkscape:cx="-13.21341"
inkscape:cy="5.1051067"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="fill:#e5f3fb;fill-opacity:1;stroke:#78c3e9;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 19.5,9.9999987 C 19.5,15.246705 15.246705,19.5 9.999998,19.5 4.753293,19.5 0.5,15.246705 0.5,9.9999987 0.5,4.7532946 4.753293,0.5 9.999998,0.5 15.246705,0.5 19.5,4.7532946 19.5,9.9999987 Z"
id="path3769-3"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0064c6;stroke-width:0.99999982px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 14.924118,9.9999995 c -3.282747,0 -6.5654925,0 -9.8482382,0"
id="path5144-6-6"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="20"
height="20"
sodipodi:docname="options_scale_plus.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="11.313708"
inkscape:cx="2.1285335"
inkscape:cy="13.695031"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="fill:#f1f1f1;fill-opacity:1;stroke:#878787;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 19.5,9.999999 C 19.5,15.246705 15.246705,19.5 9.999998,19.5 4.753293,19.5 0.5,15.246705 0.5,9.999999 0.5,4.753295 4.753293,0.5 9.999998,0.5 15.246705,0.5 19.5,4.753295 19.5,9.999999 Z"
id="path3769-3-1"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999982px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 14.924119,10 c -3.282747,0 -6.565492,0 -9.848238,0"
id="path5144-6-6-9"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999982px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 10,14.924119 c 0,-3.282747 0,-6.565492 0,-9.848238"
id="path5144-6-6-6"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="20"
height="20"
sodipodi:docname="options_scale_plus_hover.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989">
<pattern
y="0"
x="0"
height="6"
width="6"
patternUnits="userSpaceOnUse"
id="EMFhbasepattern" />
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="15.999999"
inkscape:cx="0.81784131"
inkscape:cy="13.480107"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="fill:#e5f3fb;fill-opacity:1;stroke:#78c3e9;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 19.5,9.9999987 C 19.5,15.246705 15.246705,19.5 9.999998,19.5 4.753293,19.5 0.5,15.246705 0.5,9.9999987 0.5,4.7532946 4.753293,0.5 9.999998,0.5 15.246705,0.5 19.5,4.7532946 19.5,9.9999987 Z"
id="path3769-3"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0064c6;stroke-width:0.99999982px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 14.924118,9.9999995 c -3.282747,0 -6.5654925,0 -9.8482382,0"
id="path5144-6-6"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0064c6;stroke-width:0.99999982px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 9.9999989,14.924119 c 0,-3.282747 0,-6.5654925 0,-9.8482382"
id="path5144-6-6-6"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="80"
height="80"
sodipodi:docname="options_scrollbar_size_indicator.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989">
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4173"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lstart"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4170"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(1.1,0,0,1.1,1.1,0)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="5.656854"
inkscape:cx="30.243938"
inkscape:cy="38.476854"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985"
inkscape:snap-intersection-paths="true"
inkscape:snap-smooth-nodes="true"
inkscape:object-nodes="true"
inkscape:object-paths="true" />
<circle
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f1f1f1;fill-opacity:1;fill-rule:evenodd;stroke:#878787;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="path4150"
cx="40"
cy="40"
r="39.5" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c4c4c4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4188"
width="6.8180194"
height="27.272078"
x="36.590992"
y="26.363962" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#4e4e4e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4230"
width="6.8180194"
height="13.636039"
x="36.590992"
y="33.18198" />
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="80"
height="30"
sodipodi:docname="options_tabs_indentation_indicator.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989">
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4173"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lstart"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4170"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(1.1,0,0,1.1,1.1,0)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="5.656854"
inkscape:cx="57.640264"
inkscape:cy="16.357125"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#878787;stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4191"
width="79"
height="29"
x="0.49999997"
y="0.5" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f1f1f1;fill-opacity:1;fill-rule:evenodd;stroke:#878787;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4144"
width="38"
height="25"
x="39.5"
y="2.5" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#878787;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 42.002989,14.532458 3.742416,0 -0.01552,-0.109094 c -0.02143,-0.1975 -0.166572,-0.641877 -0.322545,-0.987505 -0.155975,-0.345628 -0.22645,-0.628413 -0.156613,-0.628413 0.122457,0 4.642784,1.641608 5.474022,1.987956 0.224065,0.09336 0.381821,0.195319 0.350567,0.226573 -0.09652,0.09652 -5.88461,2.21468 -5.929411,2.169879 -0.02319,-0.02319 0.08709,-0.305468 0.245061,-0.627291 0.157972,-0.321822 0.319739,-0.76019 0.359484,-0.97415 L 45.77193,15.443583 42,15.451383 Z"
id="path4577-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccssscsssccc" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#878787;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 37.076275,14.532458 -3.742416,0 0.01552,-0.109094 c 0.02143,-0.1975 0.166572,-0.641877 0.322545,-0.987505 0.155975,-0.345628 0.22645,-0.628413 0.156613,-0.628413 -0.122457,0 -4.642784,1.641608 -5.474022,1.987956 -0.224065,0.09336 -0.381821,0.195319 -0.350567,0.226573 0.09652,0.09652 5.88461,2.21468 5.929411,2.169879 0.02319,-0.02319 -0.08709,-0.305468 -0.245061,-0.627291 -0.157972,-0.321822 -0.319739,-0.76019 -0.359484,-0.97415 l -0.02148,-0.14683 3.77193,0.0078 z"
id="path4577-2-57"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccssscsssccc" />
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="80"
height="30"
sodipodi:docname="options_tabs_roundness_indicator.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989">
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4173"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lstart"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4170"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(1.1,0,0,1.1,1.1,0)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="5.656854"
inkscape:cx="32.096185"
inkscape:cy="8.503896"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f1f1f1;fill-opacity:1;fill-rule:evenodd;stroke:#878787;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 0.5,0.5 0,29 63.816666,0 C 74.497115,29.5 79.5,23.008129 79.5,15 79.5,6.9918708 74.497115,0.5 64.316666,0.5 Z"
id="rect4144"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccsssc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#878787;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 40,0 0,30"
id="path4149"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2985"
version="1.1"
inkscape:version="0.91 r13725"
width="80"
height="30"
sodipodi:docname="options_tabs_size_indicator.svg">
<metadata
id="metadata2991">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2989">
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4173"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lstart"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4170"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(1.1,0,0,1.1,1.1,0)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview2987"
showgrid="false"
inkscape:zoom="3.9999998"
inkscape:cx="-18.123551"
inkscape:cy="57.091679"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2985" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f1f1f1;fill-opacity:1;fill-rule:evenodd;stroke:#878787;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4144"
width="79"
height="29"
x="0.5"
y="0.50000006" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#878787;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 41.068002,21.877985 3.742416,0 -0.01552,-0.109094 c -0.02143,-0.1975 -0.166572,-0.641877 -0.322545,-0.987505 -0.155975,-0.345628 -0.22645,-0.628413 -0.156613,-0.628413 0.122457,0 4.642784,1.641608 5.474022,1.987956 0.224065,0.09336 0.381821,0.195319 0.350567,0.226573 -0.09652,0.09652 -5.88461,2.21468 -5.929411,2.169879 -0.02319,-0.02319 0.08709,-0.305468 0.245061,-0.627291 0.157972,-0.321822 0.319739,-0.76019 0.359484,-0.97415 l 0.02148,-0.14683 -3.77193,0.0078 z"
id="path4577-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccssscsssccc" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#878787;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 33.080735,14.538194 0,-3.742416 -0.109094,0.01552 c -0.1975,0.02143 -0.641877,0.166572 -0.987505,0.322545 -0.345628,0.155975 -0.628413,0.22645 -0.628413,0.156613 0,-0.122457 1.641608,-4.6427842 1.987956,-5.4740222 0.09336,-0.224065 0.195319,-0.381821 0.226573,-0.350567 0.09652,0.09652 2.21468,5.8846102 2.169879,5.9294112 -0.02319,0.02319 -0.305468,-0.08709 -0.627291,-0.245061 -0.321822,-0.157972 -0.76019,-0.319739 -0.97415,-0.359484 l -0.14683,-0.02148 0.0078,3.77193 z"
id="path4577-2-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccssscsssccc" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#878787;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4884"
width="5"
height="5"
x="33.074017"
y="17.797436" />
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

35
options/refresh.js Normal file
View File

@ -0,0 +1,35 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
// shrink or expand theme field
function RefreshFields() {
if ($("#theme_list")[0].options.length == 0) {
$("#field_theme").css({"height": "45px"});
} else {
$("#field_theme").css({"height": ""});
}
if (browserId != "F") {
$("#faster_scroll_for_firefox").hide();
}
if (browserId == "F") {
$("#scrollbar_size_indicator").hide();
}
if (browserId == "V") {
$("#url_for_web_panel").val(chrome.runtime.getURL("sidebar.html"));
$("#url_for_web_panel").prop("readonly", true);
// $("#url_for_web_panel").select();
} else{
$("#field_vivaldi").hide();
}
}
function RefreshGUI() {
$("#button_filter_type").addClass("url").removeClass("title");
if ($(".button").is(".on")) {
$("#toolbar").css({ "height": 53 });
} else {
$("#toolbar").css({ "height": 26 });
}
}

125
options/sample_tabs.js Normal file
View File

@ -0,0 +1,125 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
function AppendSampleTabs() {
// pins
AppendTab({tab: {id: 0, pinned: true}, Append: true});
AppendTab({tab: {id: 1, pinned: true, active: false}, Append: true});
AppendTab({tab: {id: 10, pinned: true, active: false}, Append: true});
$(".pin#10").addClass("attention");
// regular tabs
AppendTab({tab: {id: 2, pinned: false}, Append: true});
$("#tab_title2")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_normal");
AppendTab({tab: {id: 11, pinned: false}, Append: true, ParentId: "2"});
$("#tab_title11")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_normal_hover");
$("#tab_header11").addClass("tab_header_hover").addClass("close_show");
AppendTab({tab: {id: 12, pinned: false}, Append: true, ParentId: "2", AdditionalClass: "selected"});
$("#tab_title12")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_normal_selected");
AppendTab({tab: {id: 13, pinned: false}, Append: true, ParentId: "2", AdditionalClass: "selected"});
$("#tab_title13")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_normal_selected_hover");
$("#tab_header13").addClass("tab_header_hover").addClass("close_show");
$("#close13").addClass("close_hover");
// regular active tabs
AppendTab({tab: {id: 3, pinned: false}, Append: true, ParentId: "2", AdditionalClass: "active"});
$("#tab_title3")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_active");
AppendTab({tab: {id: 15, pinned: false}, Append: true, ParentId: "2", AdditionalClass: "active"});
$("#tab_title15")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_active_hover");
$("#tab_header15").addClass("tab_header_hover");
AppendTab({tab: {id: 14, pinned: false}, Append: true, ParentId: "2", AdditionalClass: "c selected active"});
$("#tab_title14")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_active_selected");
AppendTab({tab: {id: 16, pinned: false}, Append: true, ParentId: "2", AdditionalClass: "c selected active"});
$("#tab_title16")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_active_selected_hover");
$("#tab_header16").addClass("tab_header_hover");
$("#exp16").addClass("hover");
// discarded tabs
AppendTab({tab: {id: 5, pinned: false, discarded: true}, Append: true});
$("#tab_title5")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_discarded");
AppendTab({tab: {id: 17, pinned: false, discarded: true}, Append: true, ParentId: "5"});
$("#tab_title17")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_discarded_hover");
$("#tab_header17").addClass("tab_header_hover");
AppendTab({tab: {id: 19, pinned: false, discarded: true}, Append: true, ParentId: "5", AdditionalClass: "selected"});
$("#tab_title19")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_discarded_selected");
AppendTab({tab: {id: 20, pinned: false, discarded: true}, Append: true, ParentId: "5", AdditionalClass: "selected"});
$("#tab_title20")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_discarded_selected_hover");
$("#tab_header20").addClass("tab_header_hover");
// search result
AppendTab({tab: {id: 6, pinned: false}, Append: true, AdditionalClass: "filtered"});
$("#tab_title6")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result");
AppendTab({tab: {id: 21, pinned: false}, Append: true, ParentId: "6", AdditionalClass: "filtered"});
$("#tab_title21")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_hover");
$("#tab_header21").addClass("tab_header_hover");
AppendTab({tab: {id: 22, pinned: false}, Append: true, ParentId: "6", AdditionalClass: "filtered active"});
$("#tab_title22")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_active");
AppendTab({tab: {id: 23, pinned: false}, Append: true, ParentId: "6", AdditionalClass: "filtered active"});
$("#tab_title23")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_active_hover");
$("#tab_header23").addClass("tab_header_hover");
// search result selected
AppendTab({tab: {id: 8, pinned: false}, Append: true, ParentId: "6", AdditionalClass: "selected filtered"});
$("#tab_title8")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_selected");
AppendTab({tab: {id: 18, pinned: false}, Append: true, ParentId: "6", AdditionalClass: "selected filtered"});
$("#tab_title18")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_selected_hover");
$("#tab_header18").addClass("tab_header_hover");
AppendTab({tab: {id: 25, pinned: false}, Append: true, ParentId: "6", AdditionalClass: "selected filtered active"});
$("#tab_title25")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_selected_active");
AppendTab({tab: {id: 26, pinned: false}, Append: true, ParentId: "6", AdditionalClass: "selected filtered active"});
$("#tab_title26")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_selected_active_hover");
$("#tab_header26").addClass("tab_header_hover");
// search result highlighted
AppendTab({tab: {id: 30, pinned: false}, Append: true, AdditionalClass: "filtered highlighted_search"});
$("#tab_title30")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_highlighted");
AppendTab({tab: {id: 31, pinned: false}, Append: true, ParentId: "30", AdditionalClass: "filtered highlighted_search"});
$("#tab_title31")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_highlighted_hover");
$("#tab_header31").addClass("tab_header_hover");
AppendTab({tab: {id: 32, pinned: false}, Append: true, ParentId: "30", AdditionalClass: "filtered highlighted_search active"});
$("#tab_title32")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_highlighted_active");
AppendTab({tab: {id: 33, pinned: false}, Append: true, ParentId: "30", AdditionalClass: "filtered highlighted_search active"});
$("#tab_title33")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_highlighted_active_hover");
$("#tab_header33").addClass("tab_header_hover");
AppendTab({tab: {id: 34, pinned: false}, Append: true, ParentId: "30", AdditionalClass: "selected filtered highlighted_search"});
$("#tab_title34")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_highlighted_selected");
AppendTab({tab: {id: 35, pinned: false}, Append: true, ParentId: "30", AdditionalClass: "selected filtered highlighted_search"});
$("#tab_title35")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_highlighted_selected_hover");
$("#tab_header35").addClass("tab_header_hover");
AppendTab({tab: {id: 36, pinned: false}, Append: true, ParentId: "30", AdditionalClass: "selected filtered highlighted_search active"});
$("#tab_title36")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_highlighted_selected_active");
AppendTab({tab: {id: 37, pinned: false}, Append: true, ParentId: "30", AdditionalClass: "selected filtered highlighted_search active"});
$("#tab_title37")[0].textContent = chrome.i18n.getMessage("options_theme_tabs_sample_text_search_result_highlighted_selected_active_hover");
$("#tab_header37").addClass("tab_header_hover");
$("#_tab_list").addClass("active_group");
}

193
options/theme.js Normal file
View File

@ -0,0 +1,193 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
function LoadTheme(themeName) {
if (localStorage.getItem("theme"+themeName) != null) {
SelectedTheme = JSON.parse(localStorage["theme"+themeName]);
$("#new_theme_name")[0].value = themeName;
setTimeout(function() {
ApplySizeSet(SelectedTheme["TabsSizeSetNumber"]);
ApplyColorsSet(SelectedTheme["ColorsSet"]);
ApplySizeOptionsSet(SelectedTheme["TabsSizeSetNumber"]);
$("#toolbar").html(SelectedTheme.toolbar);
$("#toolbar_unused_buttons").html(SelectedTheme.unused_buttons);
// expand toolbar options
SelectedTheme.ToolbarShow = $("#show_toolbar")[0].checked = SelectedTheme.ToolbarShow;
$("#field_show_toolbar").css({"height": $("#show_toolbar")[0].checked ? "" : "6"});
SelectedTheme.ToolbarShow ? $("#options_available_buttons, #toolbar, #toolbar_colors").show() : $("#options_available_buttons, #toolbar, #toolbar_colors").hide();
$(".on").removeClass("on");
RefreshGUI();
chrome.runtime.sendMessage({command: "reload_theme", themeName: "theme"+themeName});
}, 200);
}
}
function SaveTheme(themeName) {
localStorage["theme"+themeName] = JSON.stringify(SelectedTheme);
chrome.runtime.sendMessage({command: "reload_theme", themeName: "theme"+themeName});
return SelectedTheme;
}
function AddNewTheme() {
if (themes.indexOf($("#new_theme_name")[0].value) != -1) {
alert(chrome.i18n.getMessage("options_there_is_a_theme_with_this_name"));
return;
}
if ($("#new_theme_name")[0].value == "") {
alert(chrome.i18n.getMessage("options_theme_name_cannot_be_empty"));
return;
}
$("#toolbar").html(DefaultToolbar);
SelectedTheme = Object.assign({}, DefaultTheme);
SelectedTheme["ColorsSet"] = {};
DefaultTheme["ColorsSet"] = {};
themes.push($("#new_theme_name")[0].value);
var t_list = document.getElementById("theme_list");
var theme_name = document.createElement("option");
theme_name.value = $("#new_theme_name")[0].value;
theme_name.text = theme_name.value;
t_list.add(theme_name);
$("#theme_list")[0].selectedIndex = $("#theme_list")[0].options.length-1;
SaveTheme(theme_name.value);
LoadTheme(theme_name.value);
localStorage["themes"] = JSON.stringify(themes);
localStorage["current_theme"] = $("#theme_list").val();
RefreshFields();
}
function DeleteSelectedTheme() {
if ($("#theme_list")[0].options.length == 0) {
localStorage["current_theme"] = "Default";
return;
}
themes.splice(themes.indexOf($("#theme_list").val()), 1);
localStorage["themes"] = JSON.stringify(themes);
// localStorage.removeItem("theme"+($("#theme_list").val()));
localStorage.removeItem("theme"+SelectedTheme["theme_name"]);
var x = document.getElementById("theme_list");
x.remove(x.selectedIndex);
localStorage["current_theme"] = ($("#theme_list")[0].options.length > 0) ? $("#theme_list").val() : "Default";
LoadTheme(localStorage["current_theme"]);
RefreshFields();
if ($("#theme_list")[0].options.length == 0) {
SelectedTheme = Object.assign({}, DefaultTheme);
SelectedTheme["ColorsSet"] = {};
chrome.runtime.sendMessage({command: "reload_theme", themeName: "themeDefault"});
}
}
function RenameSelectedTheme() {
if (themes.indexOf($("#new_theme_name")[0].value) != -1) {
alert(chrome.i18n.getMessage("options_there_is_a_theme_with_this_name"));
return;
}
if ($("#new_theme_name")[0].value == "") {
alert(chrome.i18n.getMessage("options_theme_name_cannot_be_empty"));
return;
}
var t_list = document.getElementById("theme_list");
localStorage.removeItem("theme"+SelectedTheme["theme_name"]);
SelectedTheme["theme_name"] = $("#new_theme_name")[0].value;
themes[themes.indexOf(t_list.options[t_list.selectedIndex].value)] = SelectedTheme["theme_name"];
t_list.options[t_list.selectedIndex].value = t_list.options[t_list.selectedIndex].text = SelectedTheme["theme_name"];
localStorage["current_theme"] = SelectedTheme["theme_name"];
localStorage["themes"] = JSON.stringify(themes);
SaveTheme(SelectedTheme["theme_name"]);
}
function ImportTheme() {
var file = document.getElementById("import_theme");
var fr = new FileReader();
if (file.files[0] == undefined) return;
fr.readAsText(file.files[0]);
fr.onload = function() {
var data = fr.result;
file.remove();
var themeObj = JSON.parse(data);
if (themeObj.theme_version > DefaultTheme["theme_version"]) {
alert(chrome.i18n.getMessage("options_loaded_theme_newer_version"));
}
if (themeObj.theme_version < DefaultTheme["theme_version"]) {
alert(chrome.i18n.getMessage("options_loaded_theme_older_version"));
}
if (themeObj.theme_version <= DefaultTheme["theme_version"]) {
SelectedTheme = Object.assign({}, DefaultTheme);
SelectedTheme["ColorsSet"] = {};
for (var val in themeObj.ColorsSet) {
SelectedTheme["ColorsSet"][val] = themeObj.ColorsSet[val];
}
SelectedTheme["ToolbarShow"] = themeObj.ToolbarShow;
SelectedTheme["TabsSizeSetNumber"] = themeObj.TabsSizeSetNumber;
SelectedTheme["theme_version"] = DefaultTheme["theme_version"];
if (themeObj.theme_version == 1) {
SelectedTheme["ColorsSet"]["scrollbar_height"] = themeObj.ScrollbarPinList + "px";
SelectedTheme["ColorsSet"]["scrollbar_width"] = themeObj.ScrollbarTabList + "px";
}
if (themeObj.theme_version == 2) {
SelectedTheme["unused_buttons"] = themeObj["unused_buttons"];
}
if (themes.indexOf(themeObj.theme_name) == -1) {
SelectedTheme["theme_name"] = themeObj.theme_name;
} else {
SelectedTheme["theme_name"] = themeObj.theme_name + "(1)";
}
themes.push(SelectedTheme["theme_name"]);
SaveTheme(SelectedTheme["theme_name"]);
var t_list = document.getElementById("theme_list");
var theme_name = document.createElement("option");
theme_name.value = SelectedTheme["theme_name"];
theme_name.text = theme_name.value;
t_list.add(theme_name);
localStorage["themes"] = JSON.stringify(themes);
localStorage["current_theme"] = themeObj.theme_name;
$("#theme_list")[0].selectedIndex = $("#theme_list")[0].options.length-1;
LoadTheme(SelectedTheme["theme_name"]);
RefreshFields();
DefaultTheme["ColorsSet"] = {};
}
}
}
function ApplySizeOptionsSet(size){
for (let si = 0; si < document.styleSheets.length; si++) {
if ((document.styleSheets[si].ownerNode.id).match("size_settings") != null) {
if (document.styleSheets[si].ownerNode.id == "size_settings_"+size) {
document.styleSheets.item(si).disabled = false;
} else {
document.styleSheets.item(si).disabled = true;
}
}
}
}

View File

@ -0,0 +1,168 @@
/* OPTIONS IMAGES */
.font_color {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_color.svg);}
.font_color:hover {background-image: url(../options/options_font_color_hover.svg);}
.font_weight_normal {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_style_normal.svg);}
.font_weight_normal:hover {background-image: url(../options/options_font_style_normal_hover.svg);}
.font_weight_bold {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_weight_bold.svg);}
.font_weight_bold:hover {background-image: url(../options/options_font_weight_bold_hover.svg);}
.font_style_normal {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_style_normal.svg);}
.font_style_normal:hover {background-image: url(../options/options_font_style_normal_hover.svg);}
.font_style_italic {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_style_italic.svg);}
.font_style_italic:hover {background-image: url(../options/options_font_style_italic_hover.svg);}
.color_toolbar_icon {z-index: 10000; position: absolute; display: block; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_toolbar_icon.svg);}
.color_toolbar_icon:hover {background-image: url(../options/options_color_toolbar_icon_hover.svg);}
.color_bucket {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_bucket.svg);}
.color_bucket:hover {background-image: url(../options/options_color_bucket_hover.svg);}
.color_brush {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_brush.svg);}
.color_brush:hover {background-image: url(../options/options_color_brush_hover.svg);}
.color_border {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_border.svg);}
.color_border:hover {background-image: url(../options/options_color_border_hover.svg);}
.color_x {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_x.svg);}
.color_x:hover {background-image: url(../options/options_color_x_hover.svg);}
.options_button_minus {z-index: 10000; display: float; position: absolute; top: 5px; left: 6px; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_scale_minus.svg);}
.options_button_minus:hover {background-image: url(../options/options_scale_minus_hover.svg);}
.options_button_plus {z-index: 10000; display: float; position: absolute; top: 5px; left: 54px; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_scale_plus.svg);}
.options_button_plus:hover {background-image: url(../options/options_scale_plus_hover.svg);}
@keyframes hover_blinking {
0% {background-color: transparent;}
100% {background-color: blue;}
}
.hover_blinking {
animation: hover_blinking 1s infinite;
}
@keyframes hover_border_blinking {
0% {border: 1px solid transparent;}
100% {border: 1px solid blue;}
}
.hover_border_blinking {
animation: hover_border_blinking 1s infinite;
}
/* MAIN TOOLBAR */
#toolbar_background { top: 0px; left: 307px; }
#toolbar_border_bottom { top: 0px; left: 328px; }
#button_icons { top: 0px; left: 59px; }
#button_icons_hover { top: 0px; left: 80px; }
#button_background { top: 0px; left: 4px; }
#button_hover_background { top: 0px; left: 25px; }
#button_border { top: 0px; left: 115px; }
#button_hover_border { top: 0px; left: 136px; }
#filter_box_font { top: 0px; left: 175px; }
#filter_clear_icon { top: 0px; left: 238px; }
#filter_box_background { top: 0px; left: 196px; }
#filter_box_border { top: 0px; left: 217px; }
/* BIG OPTIONS BUTTONS */
#options_tabs_indentation_indicator { z-index: 3000; display: float; position: absolute; top: 25px; left: 550px; height: 30px; width: 80px; background-size: 80px 30px; background-image: url(../options/options_tabs_indentation_indicator.svg);}
#options_tabs_roundness_indicator { z-index: 3000; display: float; position: absolute; top: 25px; left: 640px; height: 30px; width: 80px; background-size: 80px 30px; background-image: url(../options/options_tabs_roundness_indicator.svg);}
#options_tabs_size_indicator { z-index: 3000; display: float; position: absolute; top: 25px; left: 730px; height: 30px; width: 80px; background-size: 80px 30px; background-image: url(../options/options_tabs_size_indicator.svg);}
/* SCROLLBAR RESIZE */
#scrollbar_size_indicator {z-index: 3000; display: float; position: absolute; top: 20px; left: 335px; height: 80px; width: 80px; background-size: 80px 80px; background-image: url(../options/options_scrollbar_size_indicator.svg); }
#options_tab_list_scrollbar_width_down { left: 3px; top: 30px; }
#options_tab_list_scrollbar_width_up { left: 57px; top: 30px; }
#options_tab_list_scrollbar_height_up { left: 30px; top: 3px; }
#options_tab_list_scrollbar_height_down { left: 30px; top: 57px; }
/* PIN LIST AND SCROLLBAR */
#pin_list { position: absolute; height: calc(var(--scrollbar_height) + var(--pin_height)); width: 788px; top: 30px; left: 20px;}
#pin_list_scrollbar { position: absolute; height: var(--scrollbar_height); width: 790px; top: calc(var(--pin_height) + 31px); left: 20px; z-index: 1000; background-color: var(--scrollbar_track); }
#pin_list_scrollbar_thumb { position: relative; height: 100%; width: 100px; top: 0px; left: 0px; z-index: 1200; background-color: var(--scrollbar_thumb); }
#pin_list_scrollbar_thumb:hover { background-color: var(--scrollbar_thumb_hover); }
/* PINS */
#pin_list_options_block {z-index: 2000; position:absolute; width: 500px; height: var(--pin_height); top: 30px; left: 20px; margin: 0; /* background:rgba(0,0,255,0.1); */ }
#pin_list_background { top: 1px; left: 187px; }
#pin_list_border_bottom { top: 1px; left: 164px; }
/* ATTENTION PIN */
#attention_background { top: 1px; left: 72px; }
#attention_border { top: 1px; left: 93px; }
/* TAB LIST AND SCROLLBAR */
#tab_list { position: absolute; height: 800px; width: calc(770px - var(--scrollbar_width)); top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); left: 40px; z-index: 1000 }
#group_scrollbar { position: absolute; height: 800px; width: var(--scrollbar_width); top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); left: calc(810px - var(--scrollbar_width)); z-index: 1000; background-color: var(--scrollbar_track); }
#group_scrollbar_thumb { position: relative; height: 200px; width: 100%; top: 140px; left: 0px; z-index: 1000; background-color: var(--scrollbar_thumb); }
#group_scrollbar_thumb:hover { background-color: var(--scrollbar_thumb_hover); }
#scrollbar_thumb { position: absolute; top: 370px; left: 790px; }
#scrollbar_thumb_hover { position: absolute; top: 390px; left: 790px; }
#scrollbar_track { position: absolute; top: 410px; left: 790px; }
#Tabs {
--row_image_size: 16px 16px;
}
/* TABS */
#tabs_options_block {z-index: 2000; position:absolute; width: 740px; height: auto; top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); left: 50px; margin: 0; /* background:rgba(0,255,0,0.5); */ }
.tab_color_options_row {z-index: 2000; position:relative; width: 740px; height: 18px; /* background:rgba(255,0,0,0.1); */ }
.tab_color_options_row>.color_border {top: 1px; left: 659px; background-size: var(--row_image_size);}
.tab_color_options_row>.color_bucket {top: 1px; left: 680px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_color {top: 1px; left: 509px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_weight_normal {top: 1px; left: 538px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_weight_bold {top: 1px; left: 559px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_style_normal {top: 1px; left: 588px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_style_italic {top: 1px; left: 609px; background-size: var(--row_image_size);}
/* DRAG AND DROP INDICATOR */
#dd19 { display: inline-block; border-bottom: 2px solid var(--drag_indicator); }
#drag_indicator { top: 8px; left: 350px; background-size: var(--row_image_size);}
/* CLOSE TAB BUTTON OPTIONS */
#close_x { top: 0px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
#close_hover_x { top: -14px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
#close_hover_border { top: 2px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
#close_hover_background { top: 18px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
/* CLOSE TAB BUTTON OPTIONS */
#expand_hover_background { top: 1px; left: calc(var(--children_padding_left) + 4px); background-size: var(--row_image_size);}
#expand_closed_background { top: 1px; left: calc(var(--children_padding_left) + 4px); background-size: var(--row_image_size);}
#expand_open_background { top: 1px; left: 4px; background-size: var(--row_image_size);}
#tab_list_background { top: 835px; left: 50px; }
#toolbar_groups_block { position: absolute; left: 20px; top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); width: 19px; height: 800px; background-color: var(--group_list_background); border-right: 1px solid var(--group_list_borders); overflow: visible; }
#_gtetab_list { width: 200px; height: 20px; }
#_gtetab_list2 { width: 200px; height: 20px; }
#_tab_list2:hover { background-color: var(--group_list_button_hover_background); }
#group_list_background { top: 835px; left: 20px; }
#group_list_borders { top: 631px; left: 20px; }
#group_list_default_font_color { top: 652px; left: 20px; }
#group_list_button_hover_background { top: 610px; left: 20px; }
/* MENU */
#tabs_menu_border { top: 59px; left: 80px; }
#tabs_menu_background { top: 59px; left: 102px; }
#tabs_menu_font { top: 36px; left: 102px; }
#tabs_menu_hover_border { top: 14px; left: 80px; }
#tabs_menu_hover_background { top: 14px; left: 102px; }
#tabs_menu_separator { top: 36px; left: 80px; }

View File

@ -0,0 +1,168 @@
/* OPTIONS IMAGES */
.font_color {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_color.svg);}
.font_color:hover {background-image: url(../options/options_font_color_hover.svg);}
.font_weight_normal {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_style_normal.svg);}
.font_weight_normal:hover {background-image: url(../options/options_font_style_normal_hover.svg);}
.font_weight_bold {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_weight_bold.svg);}
.font_weight_bold:hover {background-image: url(../options/options_font_weight_bold_hover.svg);}
.font_style_normal {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_style_normal.svg);}
.font_style_normal:hover {background-image: url(../options/options_font_style_normal_hover.svg);}
.font_style_italic {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_style_italic.svg);}
.font_style_italic:hover {background-image: url(../options/options_font_style_italic_hover.svg);}
.color_toolbar_icon {z-index: 10000; position: absolute; display: block; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_toolbar_icon.svg);}
.color_toolbar_icon:hover {background-image: url(../options/options_color_toolbar_icon_hover.svg);}
.color_bucket {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_bucket.svg);}
.color_bucket:hover {background-image: url(../options/options_color_bucket_hover.svg);}
.color_brush {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_brush.svg);}
.color_brush:hover {background-image: url(../options/options_color_brush_hover.svg);}
.color_border {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_border.svg);}
.color_border:hover {background-image: url(../options/options_color_border_hover.svg);}
.color_x {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_x.svg);}
.color_x:hover {background-image: url(../options/options_color_x_hover.svg);}
.options_button_minus {z-index: 10000; display: float; position: absolute; top: 5px; left: 6px; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_scale_minus.svg);}
.options_button_minus:hover {background-image: url(../options/options_scale_minus_hover.svg);}
.options_button_plus {z-index: 10000; display: float; position: absolute; top: 5px; left: 54px; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_scale_plus.svg);}
.options_button_plus:hover {background-image: url(../options/options_scale_plus_hover.svg);}
@keyframes hover_blinking {
0% {background-color: transparent;}
100% {background-color: blue;}
}
.hover_blinking {
animation: hover_blinking 1s infinite;
}
@keyframes hover_border_blinking {
0% {border: 1px solid transparent;}
100% {border: 1px solid blue;}
}
.hover_border_blinking {
animation: hover_border_blinking 1s infinite;
}
/* MAIN TOOLBAR */
#toolbar_background { top: 0px; left: 307px; }
#toolbar_border_bottom { top: 0px; left: 328px; }
#button_icons { top: 0px; left: 59px; }
#button_icons_hover { top: 0px; left: 80px; }
#button_background { top: 0px; left: 4px; }
#button_hover_background { top: 0px; left: 25px; }
#button_border { top: 0px; left: 115px; }
#button_hover_border { top: 0px; left: 136px; }
#filter_box_font { top: 0px; left: 175px; }
#filter_clear_icon { top: 0px; left: 238px; }
#filter_box_background { top: 0px; left: 196px; }
#filter_box_border { top: 0px; left: 217px; }
/* BIG OPTIONS BUTTONS */
#options_tabs_indentation_indicator { z-index: 3000; display: float; position: absolute; top: 25px; left: 550px; height: 30px; width: 80px; background-size: 80px 30px; background-image: url(../options/options_tabs_indentation_indicator.svg);}
#options_tabs_roundness_indicator { z-index: 3000; display: float; position: absolute; top: 25px; left: 640px; height: 30px; width: 80px; background-size: 80px 30px; background-image: url(../options/options_tabs_roundness_indicator.svg);}
#options_tabs_size_indicator { z-index: 3000; display: float; position: absolute; top: 25px; left: 730px; height: 30px; width: 80px; background-size: 80px 30px; background-image: url(../options/options_tabs_size_indicator.svg);}
/* SCROLLBAR RESIZE */
#scrollbar_size_indicator {z-index: 3000; display: float; position: absolute; top: 20px; left: 335px; height: 80px; width: 80px; background-size: 80px 80px; background-image: url(../options/options_scrollbar_size_indicator.svg); }
#options_tab_list_scrollbar_width_down { left: 3px; top: 30px; }
#options_tab_list_scrollbar_width_up { left: 57px; top: 30px; }
#options_tab_list_scrollbar_height_up { left: 30px; top: 3px; }
#options_tab_list_scrollbar_height_down { left: 30px; top: 57px; }
/* PIN LIST AND SCROLLBAR */
#pin_list { position: absolute; height: calc(var(--scrollbar_height) + var(--pin_height)); width: 788px; top: 30px; left: 20px;}
#pin_list_scrollbar { position: absolute; height: var(--scrollbar_height); width: 790px; top: calc(var(--pin_height) + 31px); left: 20px; z-index: 1000; background-color: var(--scrollbar_track); }
#pin_list_scrollbar_thumb { position: relative; height: 100%; width: 100px; top: 0px; left: 0px; z-index: 1200; background-color: var(--scrollbar_thumb); }
#pin_list_scrollbar_thumb:hover { background-color: var(--scrollbar_thumb_hover); }
/* PINS */
#pin_list_options_block {z-index: 2000; position:absolute; width: 500px; height: var(--pin_height); top: 30px; left: 20px; margin: 0; /* background:rgba(0,0,255,0.1); */ }
#pin_list_background { top: 1px; left: 187px; }
#pin_list_border_bottom { top: 1px; left: 164px; }
/* ATTENTION PIN */
#attention_background { top: 1px; left: 72px; }
#attention_border { top: 1px; left: 93px; }
/* TAB LIST AND SCROLLBAR */
#tab_list { position: absolute; height: 800px; width: calc(770px - var(--scrollbar_width)); top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); left: 40px; z-index: 1000 }
#group_scrollbar { position: absolute; height: 800px; width: var(--scrollbar_width); top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); left: calc(810px - var(--scrollbar_width)); z-index: 1000; background-color: var(--scrollbar_track); }
#group_scrollbar_thumb { position: relative; height: 200px; width: 100%; top: 140px; left: 0px; z-index: 1000; background-color: var(--scrollbar_thumb); }
#group_scrollbar_thumb:hover { background-color: var(--scrollbar_thumb_hover); }
#scrollbar_thumb { position: absolute; top: 370px; left: 790px; }
#scrollbar_thumb_hover { position: absolute; top: 390px; left: 790px; }
#scrollbar_track { position: absolute; top: 410px; left: 790px; }
#Tabs {
--row_image_size: 18px 18px;
}
/* TABS */
#tabs_options_block {z-index: 2000; position:absolute; width: 740px; height: auto; top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); left: 50px; margin: 0; /* background:rgba(0,255,0,0.5); */ }
.tab_color_options_row {z-index: 2000; position:relative; width: 740px; height: 20px; /* background:rgba(255,0,0,0.1); */ }
.tab_color_options_row>.color_border {top: 1px; left: 659px; background-size: var(--row_image_size);}
.tab_color_options_row>.color_bucket {top: 1px; left: 680px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_color {top: 1px; left: 509px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_weight_normal {top: 1px; left: 538px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_weight_bold {top: 1px; left: 559px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_style_normal {top: 1px; left: 588px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_style_italic {top: 1px; left: 609px; background-size: var(--row_image_size);}
/* DRAG AND DROP INDICATOR */
#dd19 { display: inline-block; border-bottom: 2px solid var(--drag_indicator); }
#drag_indicator { top: 8px; left: 350px; background-size: var(--row_image_size);}
/* CLOSE TAB BUTTON OPTIONS */
#close_x { top: 0px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
#close_hover_x { top: -16px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
#close_hover_border { top: 2px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
#close_hover_background { top: 20px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
/* CLOSE TAB BUTTON OPTIONS */
#expand_hover_background { top: 1px; left: calc(var(--children_padding_left) + 4px); background-size: var(--row_image_size);}
#expand_closed_background { top: 1px; left: calc(var(--children_padding_left) + 4px); background-size: var(--row_image_size);}
#expand_open_background { top: 1px; left: 4px; background-size: var(--row_image_size);}
#tab_list_background { top: 835px; left: 50px; }
#toolbar_groups_block { position: absolute; left: 20px; top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); width: 19px; height: 800px; background-color: var(--group_list_background); border-right: 1px solid var(--group_list_borders); overflow: visible; }
#_gtetab_list { width: 200px; height: 20px; }
#_gtetab_list2 { width: 200px; height: 20px; }
#_tab_list2:hover { background-color: var(--group_list_button_hover_background); }
#group_list_background { top: 835px; left: 20px; }
#group_list_borders { top: 631px; left: 20px; }
#group_list_default_font_color { top: 652px; left: 20px; }
#group_list_button_hover_background { top: 610px; left: 20px; }
/* MENU */
#tabs_menu_border { top: 59px; left: 80px; }
#tabs_menu_background { top: 59px; left: 102px; }
#tabs_menu_font { top: 36px; left: 102px; }
#tabs_menu_hover_border { top: 14px; left: 80px; }
#tabs_menu_hover_background { top: 14px; left: 102px; }
#tabs_menu_separator { top: 36px; left: 80px; }

View File

@ -0,0 +1,168 @@
/* OPTIONS IMAGES */
.font_color {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_color.svg);}
.font_color:hover {background-image: url(../options/options_font_color_hover.svg);}
.font_weight_normal {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_style_normal.svg);}
.font_weight_normal:hover {background-image: url(../options/options_font_style_normal_hover.svg);}
.font_weight_bold {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_weight_bold.svg);}
.font_weight_bold:hover {background-image: url(../options/options_font_weight_bold_hover.svg);}
.font_style_normal {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_style_normal.svg);}
.font_style_normal:hover {background-image: url(../options/options_font_style_normal_hover.svg);}
.font_style_italic {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_style_italic.svg);}
.font_style_italic:hover {background-image: url(../options/options_font_style_italic_hover.svg);}
.color_toolbar_icon {z-index: 10000; position: absolute; display: block; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_toolbar_icon.svg);}
.color_toolbar_icon:hover {background-image: url(../options/options_color_toolbar_icon_hover.svg);}
.color_bucket {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_bucket.svg);}
.color_bucket:hover {background-image: url(../options/options_color_bucket_hover.svg);}
.color_brush {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_brush.svg);}
.color_brush:hover {background-image: url(../options/options_color_brush_hover.svg);}
.color_border {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_border.svg);}
.color_border:hover {background-image: url(../options/options_color_border_hover.svg);}
.color_x {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_x.svg);}
.color_x:hover {background-image: url(../options/options_color_x_hover.svg);}
.options_button_minus {z-index: 10000; display: float; position: absolute; top: 5px; left: 6px; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_scale_minus.svg);}
.options_button_minus:hover {background-image: url(../options/options_scale_minus_hover.svg);}
.options_button_plus {z-index: 10000; display: float; position: absolute; top: 5px; left: 54px; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_scale_plus.svg);}
.options_button_plus:hover {background-image: url(../options/options_scale_plus_hover.svg);}
@keyframes hover_blinking {
0% {background-color: transparent;}
100% {background-color: blue;}
}
.hover_blinking {
animation: hover_blinking 1s infinite;
}
@keyframes hover_border_blinking {
0% {border: 1px solid transparent;}
100% {border: 1px solid blue;}
}
.hover_border_blinking {
animation: hover_border_blinking 1s infinite;
}
/* MAIN TOOLBAR */
#toolbar_background { top: 0px; left: 307px; }
#toolbar_border_bottom { top: 0px; left: 328px; }
#button_icons { top: 0px; left: 59px; }
#button_icons_hover { top: 0px; left: 80px; }
#button_background { top: 0px; left: 4px; }
#button_hover_background { top: 0px; left: 25px; }
#button_border { top: 0px; left: 115px; }
#button_hover_border { top: 0px; left: 136px; }
#filter_box_font { top: 0px; left: 175px; }
#filter_clear_icon { top: 0px; left: 238px; }
#filter_box_background { top: 0px; left: 196px; }
#filter_box_border { top: 0px; left: 217px; }
/* BIG OPTIONS BUTTONS */
#options_tabs_indentation_indicator { z-index: 3000; display: float; position: absolute; top: 25px; left: 550px; height: 30px; width: 80px; background-size: 80px 30px; background-image: url(../options/options_tabs_indentation_indicator.svg);}
#options_tabs_roundness_indicator { z-index: 3000; display: float; position: absolute; top: 25px; left: 640px; height: 30px; width: 80px; background-size: 80px 30px; background-image: url(../options/options_tabs_roundness_indicator.svg);}
#options_tabs_size_indicator { z-index: 3000; display: float; position: absolute; top: 25px; left: 730px; height: 30px; width: 80px; background-size: 80px 30px; background-image: url(../options/options_tabs_size_indicator.svg);}
/* SCROLLBAR RESIZE */
#scrollbar_size_indicator {z-index: 3000; display: float; position: absolute; top: 20px; left: 335px; height: 80px; width: 80px; background-size: 80px 80px; background-image: url(../options/options_scrollbar_size_indicator.svg); }
#options_tab_list_scrollbar_width_down { left: 3px; top: 30px; }
#options_tab_list_scrollbar_width_up { left: 57px; top: 30px; }
#options_tab_list_scrollbar_height_up { left: 30px; top: 3px; }
#options_tab_list_scrollbar_height_down { left: 30px; top: 57px; }
/* PIN LIST AND SCROLLBAR */
#pin_list { position: absolute; height: calc(var(--scrollbar_height) + var(--pin_height)); width: 788px; top: 30px; left: 20px;}
#pin_list_scrollbar { position: absolute; height: var(--scrollbar_height); width: 790px; top: calc(var(--pin_height) + 31px); left: 20px; z-index: 1000; background-color: var(--scrollbar_track); }
#pin_list_scrollbar_thumb { position: relative; height: 100%; width: 100px; top: 0px; left: 0px; z-index: 1200; background-color: var(--scrollbar_thumb); }
#pin_list_scrollbar_thumb:hover { background-color: var(--scrollbar_thumb_hover); }
/* PINS */
#pin_list_options_block {z-index: 2000; position:absolute; width: 500px; height: var(--pin_height); top: 30px; left: 20px; margin: 0; /* background:rgba(0,0,255,0.1); */ }
#pin_list_background { top: 3px; left: 187px; }
#pin_list_border_bottom { top: 3px; left: 164px; }
/* ATTENTION PIN */
#attention_background { top: 3px; left: 72px; }
#attention_border { top: 3px; left: 93px; }
/* TAB LIST AND SCROLLBAR */
#tab_list { position: absolute; height: 800px; width: calc(770px - var(--scrollbar_width)); top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); left: 40px; z-index: 1000 }
#group_scrollbar { position: absolute; height: 800px; width: var(--scrollbar_width); top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); left: calc(810px - var(--scrollbar_width)); z-index: 1000; background-color: var(--scrollbar_track); }
#group_scrollbar_thumb { position: relative; height: 200px; width: 100%; top: 140px; left: 0px; z-index: 1000; background-color: var(--scrollbar_thumb); }
#group_scrollbar_thumb:hover { background-color: var(--scrollbar_thumb_hover); }
#scrollbar_thumb { position: absolute; top: 370px; left: 790px; }
#scrollbar_thumb_hover { position: absolute; top: 390px; left: 790px; }
#scrollbar_track { position: absolute; top: 410px; left: 790px; }
#Tabs {
--row_image_size: 20px 20px;
}
/* TABS */
#tabs_options_block {z-index: 2000; position:absolute; width: 740px; height: auto; top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); left: 50px; margin: 0; /* background:rgba(0,255,0,0.5); */ }
.tab_color_options_row {z-index: 2000; position:relative; width: 740px; height: 22px; /* background:rgba(255,0,0,0.1); */ }
.tab_color_options_row>.color_border {top: 1px; left: 659px; background-size: var(--row_image_size);}
.tab_color_options_row>.color_bucket {top: 1px; left: 680px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_color {top: 1px; left: 509px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_weight_normal {top: 1px; left: 538px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_weight_bold {top: 1px; left: 559px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_style_normal {top: 1px; left: 588px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_style_italic {top: 1px; left: 609px; background-size: var(--row_image_size);}
/* DRAG AND DROP INDICATOR */
#dd19 { display: inline-block; border-bottom: 2px solid var(--drag_indicator); }
#drag_indicator { top: 8px; left: 350px; background-size: var(--row_image_size);}
/* CLOSE TAB BUTTON OPTIONS */
#close_x { top: 0px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
#close_hover_x { top: -18px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
#close_hover_border { top: 2px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
#close_hover_background { top: 22px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
/* CLOSE TAB BUTTON OPTIONS */
#expand_hover_background { top: 1px; left: calc(var(--children_padding_left) + 4px); background-size: var(--row_image_size);}
#expand_closed_background { top: 1px; left: calc(var(--children_padding_left) + 4px); background-size: var(--row_image_size);}
#expand_open_background { top: 1px; left: 4px; background-size: var(--row_image_size);}
#tab_list_background { top: 835px; left: 50px; }
#toolbar_groups_block { position: absolute; left: 20px; top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); width: 19px; height: 800px; background-color: var(--group_list_background); border-right: 1px solid var(--group_list_borders); overflow: visible; }
#_gtetab_list { width: 200px; height: 20px; }
#_gtetab_list2 { width: 200px; height: 20px; }
#_tab_list2:hover { background-color: var(--group_list_button_hover_background); }
#group_list_background { top: 835px; left: 20px; }
#group_list_borders { top: 631px; left: 20px; }
#group_list_default_font_color { top: 652px; left: 20px; }
#group_list_button_hover_background { top: 610px; left: 20px; }
/* MENU */
#tabs_menu_border { top: 59px; left: 80px; }
#tabs_menu_background { top: 59px; left: 102px; }
#tabs_menu_font { top: 36px; left: 102px; }
#tabs_menu_hover_border { top: 14px; left: 80px; }
#tabs_menu_hover_background { top: 14px; left: 102px; }
#tabs_menu_separator { top: 36px; left: 80px; }

View File

@ -0,0 +1,168 @@
/* OPTIONS IMAGES */
.font_color {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_color.svg);}
.font_color:hover {background-image: url(../options/options_font_color_hover.svg);}
.font_weight_normal {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_style_normal.svg);}
.font_weight_normal:hover {background-image: url(../options/options_font_style_normal_hover.svg);}
.font_weight_bold {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_weight_bold.svg);}
.font_weight_bold:hover {background-image: url(../options/options_font_weight_bold_hover.svg);}
.font_style_normal {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_style_normal.svg);}
.font_style_normal:hover {background-image: url(../options/options_font_style_normal_hover.svg);}
.font_style_italic {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_style_italic.svg);}
.font_style_italic:hover {background-image: url(../options/options_font_style_italic_hover.svg);}
.color_toolbar_icon {z-index: 10000; position: absolute; display: block; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_toolbar_icon.svg);}
.color_toolbar_icon:hover {background-image: url(../options/options_color_toolbar_icon_hover.svg);}
.color_bucket {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_bucket.svg);}
.color_bucket:hover {background-image: url(../options/options_color_bucket_hover.svg);}
.color_brush {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_brush.svg);}
.color_brush:hover {background-image: url(../options/options_color_brush_hover.svg);}
.color_border {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_border.svg);}
.color_border:hover {background-image: url(../options/options_color_border_hover.svg);}
.color_x {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_x.svg);}
.color_x:hover {background-image: url(../options/options_color_x_hover.svg);}
.options_button_minus {z-index: 10000; display: float; position: absolute; top: 5px; left: 6px; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_scale_minus.svg);}
.options_button_minus:hover {background-image: url(../options/options_scale_minus_hover.svg);}
.options_button_plus {z-index: 10000; display: float; position: absolute; top: 5px; left: 54px; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_scale_plus.svg);}
.options_button_plus:hover {background-image: url(../options/options_scale_plus_hover.svg);}
@keyframes hover_blinking {
0% {background-color: transparent;}
100% {background-color: blue;}
}
.hover_blinking {
animation: hover_blinking 1s infinite;
}
@keyframes hover_border_blinking {
0% {border: 1px solid transparent;}
100% {border: 1px solid blue;}
}
.hover_border_blinking {
animation: hover_border_blinking 1s infinite;
}
/* MAIN TOOLBAR */
#toolbar_background { top: 0px; left: 307px; }
#toolbar_border_bottom { top: 0px; left: 328px; }
#button_icons { top: 0px; left: 59px; }
#button_icons_hover { top: 0px; left: 80px; }
#button_background { top: 0px; left: 4px; }
#button_hover_background { top: 0px; left: 25px; }
#button_border { top: 0px; left: 115px; }
#button_hover_border { top: 0px; left: 136px; }
#filter_box_font { top: 0px; left: 175px; }
#filter_clear_icon { top: 0px; left: 238px; }
#filter_box_background { top: 0px; left: 196px; }
#filter_box_border { top: 0px; left: 217px; }
/* BIG OPTIONS BUTTONS */
#options_tabs_indentation_indicator { z-index: 3000; display: float; position: absolute; top: 25px; left: 550px; height: 30px; width: 80px; background-size: 80px 30px; background-image: url(../options/options_tabs_indentation_indicator.svg);}
#options_tabs_roundness_indicator { z-index: 3000; display: float; position: absolute; top: 25px; left: 640px; height: 30px; width: 80px; background-size: 80px 30px; background-image: url(../options/options_tabs_roundness_indicator.svg);}
#options_tabs_size_indicator { z-index: 3000; display: float; position: absolute; top: 25px; left: 730px; height: 30px; width: 80px; background-size: 80px 30px; background-image: url(../options/options_tabs_size_indicator.svg);}
/* SCROLLBAR RESIZE */
#scrollbar_size_indicator {z-index: 3000; display: float; position: absolute; top: 20px; left: 335px; height: 80px; width: 80px; background-size: 80px 80px; background-image: url(../options/options_scrollbar_size_indicator.svg); }
#options_tab_list_scrollbar_width_down { left: 3px; top: 30px; }
#options_tab_list_scrollbar_width_up { left: 57px; top: 30px; }
#options_tab_list_scrollbar_height_up { left: 30px; top: 3px; }
#options_tab_list_scrollbar_height_down { left: 30px; top: 57px; }
/* PIN LIST AND SCROLLBAR */
#pin_list { position: absolute; height: calc(var(--scrollbar_height) + var(--pin_height)); width: 788px; top: 30px; left: 20px;}
#pin_list_scrollbar { position: absolute; height: var(--scrollbar_height); width: 790px; top: calc(var(--pin_height) + 31px); left: 20px; z-index: 1000; background-color: var(--scrollbar_track); }
#pin_list_scrollbar_thumb { position: relative; height: 100%; width: 100px; top: 0px; left: 0px; z-index: 1200; background-color: var(--scrollbar_thumb); }
#pin_list_scrollbar_thumb:hover { background-color: var(--scrollbar_thumb_hover); }
/* PINS */
#pin_list_options_block {z-index: 2000; position:absolute; width: 500px; height: var(--pin_height); top: 30px; left: 20px; margin: 0; /* background:rgba(0,0,255,0.1); */ }
#pin_list_background { top: 3px; left: 187px; }
#pin_list_border_bottom { top: 3px; left: 164px; }
/* ATTENTION PIN */
#attention_background { top: 3px; left: 72px; }
#attention_border { top: 3px; left: 93px; }
/* TAB LIST AND SCROLLBAR */
#tab_list { position: absolute; height: 800px; width: calc(770px - var(--scrollbar_width)); top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); left: 40px; z-index: 1000 }
#group_scrollbar { position: absolute; height: 800px; width: var(--scrollbar_width); top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); left: calc(810px - var(--scrollbar_width)); z-index: 1000; background-color: var(--scrollbar_track); }
#group_scrollbar_thumb { position: relative; height: 200px; width: 100%; top: 140px; left: 0px; z-index: 1000; background-color: var(--scrollbar_thumb); }
#group_scrollbar_thumb:hover { background-color: var(--scrollbar_thumb_hover); }
#scrollbar_thumb { position: absolute; top: 370px; left: 790px; }
#scrollbar_thumb_hover { position: absolute; top: 390px; left: 790px; }
#scrollbar_track { position: absolute; top: 410px; left: 790px; }
#Tabs {
--row_image_size: 20px 20px;
}
/* TABS */
#tabs_options_block {z-index: 2000; position:absolute; width: 740px; height: auto; top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); left: 50px; margin: 0; /* background:rgba(0,255,0,0.5); */ }
.tab_color_options_row {z-index: 2000; position:relative; width: 740px; height: 24px; /* background:rgba(255,0,0,0.1); */ }
.tab_color_options_row>.color_border {top: 2px; left: 659px; background-size: var(--row_image_size);}
.tab_color_options_row>.color_bucket {top: 2px; left: 680px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_color {top: 2px; left: 509px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_weight_normal {top: 2px; left: 538px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_weight_bold {top: 2px; left: 559px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_style_normal {top: 2px; left: 588px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_style_italic {top: 2px; left: 609px; background-size: var(--row_image_size);}
/* DRAG AND DROP INDICATOR */
#dd19 { display: inline-block; border-bottom: 2px solid var(--drag_indicator); }
#drag_indicator { top: 8px; left: 350px; background-size: var(--row_image_size);}
/* CLOSE TAB BUTTON OPTIONS */
#close_x { top: 0px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
#close_hover_x { top: -18px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
#close_hover_border { top: 2px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
#close_hover_background { top: 22px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
/* CLOSE TAB BUTTON OPTIONS */
#expand_hover_background { top: 2px; left: calc(var(--children_padding_left) + 4px); background-size: var(--row_image_size);}
#expand_closed_background { top: 2px; left: calc(var(--children_padding_left) + 4px); background-size: var(--row_image_size);}
#expand_open_background { top: 2px; left: 4px; background-size: var(--row_image_size);}
#tab_list_background { top: 835px; left: 50px; }
#toolbar_groups_block { position: absolute; left: 20px; top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); width: 19px; height: 800px; background-color: var(--group_list_background); border-right: 1px solid var(--group_list_borders); overflow: visible; }
#_gtetab_list { width: 200px; height: 20px; }
#_gtetab_list2 { width: 200px; height: 20px; }
#_tab_list2:hover { background-color: var(--group_list_button_hover_background); }
#group_list_background { top: 835px; left: 20px; }
#group_list_borders { top: 631px; left: 20px; }
#group_list_default_font_color { top: 652px; left: 20px; }
#group_list_button_hover_background { top: 610px; left: 20px; }
/* MENU */
#tabs_menu_border { top: 59px; left: 80px; }
#tabs_menu_background { top: 59px; left: 102px; }
#tabs_menu_font { top: 36px; left: 102px; }
#tabs_menu_hover_border { top: 14px; left: 80px; }
#tabs_menu_hover_background { top: 14px; left: 102px; }
#tabs_menu_separator { top: 36px; left: 80px; }

View File

@ -0,0 +1,168 @@
/* OPTIONS IMAGES */
.font_color {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_color.svg);}
.font_color:hover {background-image: url(../options/options_font_color_hover.svg);}
.font_weight_normal {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_style_normal.svg);}
.font_weight_normal:hover {background-image: url(../options/options_font_style_normal_hover.svg);}
.font_weight_bold {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_weight_bold.svg);}
.font_weight_bold:hover {background-image: url(../options/options_font_weight_bold_hover.svg);}
.font_style_normal {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_style_normal.svg);}
.font_style_normal:hover {background-image: url(../options/options_font_style_normal_hover.svg);}
.font_style_italic {z-index: 1000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_font_style_italic.svg);}
.font_style_italic:hover {background-image: url(../options/options_font_style_italic_hover.svg);}
.color_toolbar_icon {z-index: 10000; position: absolute; display: block; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_toolbar_icon.svg);}
.color_toolbar_icon:hover {background-image: url(../options/options_color_toolbar_icon_hover.svg);}
.color_bucket {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_bucket.svg);}
.color_bucket:hover {background-image: url(../options/options_color_bucket_hover.svg);}
.color_brush {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_brush.svg);}
.color_brush:hover {background-image: url(../options/options_color_brush_hover.svg);}
.color_border {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_border.svg);}
.color_border:hover {background-image: url(../options/options_color_border_hover.svg);}
.color_x {z-index: 10000; position: absolute; display: float; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_color_x.svg);}
.color_x:hover {background-image: url(../options/options_color_x_hover.svg);}
.options_button_minus {z-index: 10000; display: float; position: absolute; top: 5px; left: 6px; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_scale_minus.svg);}
.options_button_minus:hover {background-image: url(../options/options_scale_minus_hover.svg);}
.options_button_plus {z-index: 10000; display: float; position: absolute; top: 5px; left: 54px; height: 20px; width: 20px; background-size: 20px 20px; background-image: url(../options/options_scale_plus.svg);}
.options_button_plus:hover {background-image: url(../options/options_scale_plus_hover.svg);}
@keyframes hover_blinking {
0% {background-color: transparent;}
100% {background-color: blue;}
}
.hover_blinking {
animation: hover_blinking 1s infinite;
}
@keyframes hover_border_blinking {
0% {border: 1px solid transparent;}
100% {border: 1px solid blue;}
}
.hover_border_blinking {
animation: hover_border_blinking 1s infinite;
}
/* MAIN TOOLBAR */
#toolbar_background { top: 0px; left: 307px; }
#toolbar_border_bottom { top: 0px; left: 328px; }
#button_icons { top: 0px; left: 59px; }
#button_icons_hover { top: 0px; left: 80px; }
#button_background { top: 0px; left: 4px; }
#button_hover_background { top: 0px; left: 25px; }
#button_border { top: 0px; left: 115px; }
#button_hover_border { top: 0px; left: 136px; }
#filter_box_font { top: 0px; left: 175px; }
#filter_clear_icon { top: 0px; left: 238px; }
#filter_box_background { top: 0px; left: 196px; }
#filter_box_border { top: 0px; left: 217px; }
/* BIG OPTIONS BUTTONS */
#options_tabs_indentation_indicator { z-index: 3000; display: float; position: absolute; top: 25px; left: 550px; height: 30px; width: 80px; background-size: 80px 30px; background-image: url(../options/options_tabs_indentation_indicator.svg);}
#options_tabs_roundness_indicator { z-index: 3000; display: float; position: absolute; top: 25px; left: 640px; height: 30px; width: 80px; background-size: 80px 30px; background-image: url(../options/options_tabs_roundness_indicator.svg);}
#options_tabs_size_indicator { z-index: 3000; display: float; position: absolute; top: 25px; left: 730px; height: 30px; width: 80px; background-size: 80px 30px; background-image: url(../options/options_tabs_size_indicator.svg);}
/* SCROLLBAR RESIZE */
#scrollbar_size_indicator {z-index: 3000; display: float; position: absolute; top: 20px; left: 335px; height: 80px; width: 80px; background-size: 80px 80px; background-image: url(../options/options_scrollbar_size_indicator.svg); }
#options_tab_list_scrollbar_width_down { left: 3px; top: 30px; }
#options_tab_list_scrollbar_width_up { left: 57px; top: 30px; }
#options_tab_list_scrollbar_height_up { left: 30px; top: 3px; }
#options_tab_list_scrollbar_height_down { left: 30px; top: 57px; }
/* PIN LIST AND SCROLLBAR */
#pin_list { position: absolute; height: calc(var(--scrollbar_height) + var(--pin_height)); width: 788px; top: 30px; left: 20px;}
#pin_list_scrollbar { position: absolute; height: var(--scrollbar_height); width: 790px; top: calc(var(--pin_height) + 31px); left: 20px; z-index: 1000; background-color: var(--scrollbar_track); }
#pin_list_scrollbar_thumb { position: relative; height: 100%; width: 100px; top: 0px; left: 0px; z-index: 1200; background-color: var(--scrollbar_thumb); }
#pin_list_scrollbar_thumb:hover { background-color: var(--scrollbar_thumb_hover); }
/* PINS */
#pin_list_options_block {z-index: 2000; position:absolute; width: 500px; height: var(--pin_height); top: 30px; left: 20px; margin: 0; /* background:rgba(0,0,255,0.1); */ }
#pin_list_background { top: 4px; left: 187px; }
#pin_list_border_bottom { top: 4px; left: 164px; }
/* ATTENTION PIN */
#attention_background { top: 4px; left: 72px; }
#attention_border { top: 4px; left: 93px; }
/* TAB LIST AND SCROLLBAR */
#tab_list { position: absolute; height: 800px; width: calc(770px - var(--scrollbar_width)); top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); left: 40px; z-index: 1000 }
#group_scrollbar { position: absolute; height: 800px; width: var(--scrollbar_width); top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); left: calc(810px - var(--scrollbar_width)); z-index: 1000; background-color: var(--scrollbar_track); }
#group_scrollbar_thumb { position: relative; height: 200px; width: 100%; top: 140px; left: 0px; z-index: 1000; background-color: var(--scrollbar_thumb); }
#group_scrollbar_thumb:hover { background-color: var(--scrollbar_thumb_hover); }
#scrollbar_thumb { position: absolute; top: 370px; left: 790px; }
#scrollbar_thumb_hover { position: absolute; top: 390px; left: 790px; }
#scrollbar_track { position: absolute; top: 410px; left: 790px; }
#Tabs {
--row_image_size: 20px 20px;
}
/* TABS */
#tabs_options_block {z-index: 2000; position:absolute; width: 740px; height: auto; top: calc(var(--scrollbar_height) + var(--pin_height) + 36px); left: 50px; margin: 0; /* background:rgba(0,255,0,0.5); */ }
.tab_color_options_row {z-index: 2000; position:relative; width: 740px; height: 26px; /* background:rgba(255,0,0,0.1); */ }
.tab_color_options_row>.color_border {top: 0px; left: 659px; background-size: var(--row_image_size);}
.tab_color_options_row>.color_bucket {top: 0px; left: 680px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_color {top: 0px; left: 509px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_weight_normal {top: 0px; left: 538px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_weight_bold {top: 0px; left: 559px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_style_normal {top: 0px; left: 588px; background-size: var(--row_image_size);}
.tab_color_options_row>.font_style_italic {top: 0px; left: 609px; background-size: var(--row_image_size);}
/* DRAG AND DROP INDICATOR */
#dd19 { display: inline-block; border-bottom: 2px solid var(--drag_indicator); }
#drag_indicator { top: 8px; left: 350px; background-size: var(--row_image_size);}
/* CLOSE TAB BUTTON OPTIONS */
#close_x { top: 0px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
#close_hover_x { top: -20px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
#close_hover_border { top: 0px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
#close_hover_background { top: 20px; left: calc(753px - var(--scrollbar_width)); background-size: var(--row_image_size);}
/* CLOSE TAB BUTTON OPTIONS */
#expand_hover_background { top: 0px; left: calc(var(--children_padding_left) + 4px); background-size: var(--row_image_size);}
#expand_closed_background { top: 0px; left: calc(var(--children_padding_left) + 4px); background-size: var(--row_image_size);}
#expand_open_background { top: 0px; left: 4px; background-size: var(--row_image_size);}
#tab_list_background { top: 835px; left: 50px; }
#toolbar_groups_block { position: absolute; left: 20px; top: calc(var(--scrollbar_height) + var(--pin_height) + 32px); width: 19px; height: 800px; background-color: var(--group_list_background); border-right: 1px solid var(--group_list_borders); overflow: visible; }
#_gtetab_list { width: 200px; height: 20px; }
#_gtetab_list2 { width: 200px; height: 20px; }
#_tab_list2:hover { background-color: var(--group_list_button_hover_background); }
#group_list_background { top: 835px; left: 20px; }
#group_list_borders { top: 631px; left: 20px; }
#group_list_default_font_color { top: 652px; left: 20px; }
#group_list_button_hover_background { top: 610px; left: 20px; }
/* MENU */
#tabs_menu_border { top: 59px; left: 80px; }
#tabs_menu_background { top: 59px; left: 102px; }
#tabs_menu_font { top: 36px; left: 102px; }
#tabs_menu_hover_border { top: 14px; left: 80px; }
#tabs_menu_hover_background { top: 14px; left: 102px; }
#tabs_menu_separator { top: 36px; left: 80px; }

View File

@ -1,92 +1,72 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
// ********** KEYBOARD AND MOUSE ***************
function SetIOEvents(){
// scroll horizontally on pin list
$("#pin_list").bind("mousewheel DOMMouseScroll", function(event) {
event = event.originalEvent;
var delta = event.wheelDelta > 0 || event.detail < 0 ? -1 : 1;
var multiplier = 1;
for (var t = 1; t < 20; t++){
setTimeout(function(){
$("#pin_list").scrollLeft($("#pin_list").scrollLeft()+(delta*multiplier));
}, t);
multiplier++;
}
multiplier = 20;
for (var t = 21; t < 40; t++){
setTimeout(function(){
$("#pin_list").scrollLeft($("#pin_list").scrollLeft()+(delta*multiplier));
}, t);
multiplier--;
}
function BindTabsSwitchingToMouseWheel() {
// switch tabs with mouse scroll
$("#pin_list, .group").bind("mousewheel DOMMouseScroll", function(event) {
let prev = event.originalEvent.wheelDelta > 0 || event.originalEvent.detail < 0;
if (prev) {
ActivatePrevTab();
} else {
ActivateNextTab();
}
event.preventDefault();
});
// this is for faster scrolling in firefox, for some reason its default scrolling is slow
if (bg.opt.faster_scroll){
$("#tab_list").bind("mousewheel DOMMouseScroll", function(event) {
event = event.originalEvent;
var delta = event.wheelDelta > 0 || event.detail < 0 ? -1.5 : 1.5;
var multiplier = 1;
for (var t = 1; t < 40; t++){
setTimeout(function(){
$("#tab_list").scrollTop($("#tab_list").scrollTop()+(delta*multiplier));
}
function SetIOEvents() {
if (!opt.switch_with_scroll) {
$("#pin_list").bind("mousewheel DOMMouseScroll", function(event) {
let direction = (event.originalEvent.wheelDelta > 0 || event.originalEvent.detail < 0) ? -1 : 1;
let speed = 0.1;
for (let t = 1; t < 40; t++) {
setTimeout(function() {
if (t < 30) {
speed = speed+0.1; // accelerate
} else {
speed = speed-0.3; // decelerate
}
$("#pin_list").scrollLeft($("#pin_list").scrollLeft()+(direction*speed));
}, t);
multiplier++;
}
multiplier = 40;
for (var t = 41; t < 80; t++){
setTimeout(function(){
$("#tab_list").scrollTop($("#tab_list").scrollTop()+(delta*multiplier));
}, t);
multiplier--;
}
});
}
// catch keyboard keys
$(document).keydown(function(event){
if (MouseHoverOver == "pin_list"){
$(document).keydown(function(event) {
if (MouseHoverOver == "pin_list") {
// ctrl+a to select all
if (event.ctrlKey && event.which == 65){
if (event.ctrlKey && event.which == 65) {
$(".pin").addClass("selected");
}
// ctrl+i to invert selection
if (event.ctrlKey && event.which == 73){
if (event.ctrlKey && event.which == 73) {
$(".pin").toggleClass("selected");
}
}
if (MouseHoverOver == "tab_list"){
if (MouseHoverOver.match("g_|tab_list") !== null) {
// ctrl+a to select all
if (event.ctrlKey && event.which == 65){
$(".tab").addClass("selected");
if (event.ctrlKey && event.which == 65) {
$("#"+active_group).children(".tab:visible").addClass("selected");
}
// ctrl+i to invert selection
if (event.ctrlKey && event.which == 73){
$(".tab").toggleClass("selected");
if (event.ctrlKey && event.which == 73) {
$(".tab:visible").toggleClass("selected");
}
}
RefreshGUI();
});
$(document).on("dragenter", "#toolbar", function(event){ // set mouse over id
MouseHoverOver = this.id;
});
$(document).on("mouseenter", "#pin_list, #tab_list, #toolbar", function(event){ // set mouse over id
MouseHoverOver = this.id;
});
$(document).on("mouseleave", window, function(event){
MouseHoverOver = "";
});
// remove middle mouse and set hiding menu
document.body.onmousedown = function(event){
if (event.button == 1 && bg.opt.close_with_MMB == true){
document.body.onmousedown = function(event) {
if (event.button == 1 && opt.close_with_MMB == true) {
event.preventDefault();
}
if (event.button == 0 && !$(event.target).is(".menu_item")){
$(".menu").hide(0);
if (event.button == 0 && !$(event.target).is(".menu_item")) {
$(".menu").hide(300);
}
};
}

266
scripts/backup.js Normal file
View File

@ -0,0 +1,266 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
function ExportGroup(filename) {
let GroupToSave = [0,[]];
GroupToSave[0] = bggroups[active_group];
let lastId = parseInt($("#"+active_group+" .tab").last()[0].id);
$("#"+active_group+" .tab").each(function() {
chrome.tabs.get(parseInt(this.id), function(tab) {
GroupToSave[1].push([tab.id, ($("#"+tab.id).parent(".group")[0] ? $("#"+tab.id).parent()[0].id : $("#"+tab.id).parent().parent(".tab")[0].id), $("#"+tab.id).index(), ($("#"+tab.id).is(".n") ? "n" : ($("#"+tab.id).is(".c") ? "c" : "o")), tab.url]);
if (tab.id == lastId) {
SaveFile(filename, GroupToSave);
}
});
})
}
function ImportGroup() {
let file = document.getElementById("file_import_group");
let fr = new FileReader();
if (file.files[0] == undefined) return;
fr.readAsText(file.files[0]);
fr.onload = function() {
let data = fr.result;
file.remove();
let LoadedGroup = JSON.parse(data);
let RefsTabs = {};
let newTabs = {};
let lastId = LoadedGroup[1][LoadedGroup[1].length-1][0];
let NewGroupId = AddNewGroup({name: LoadedGroup[0].name, font: LoadedGroup[0].font});
SetActiveGroup(NewGroupId, false, false);
LoadedGroup[1].forEach(function(LTab){
chrome.tabs.create({url: LTab[4]}, function(tab) {
RefsTabs[LTab[0]] = tab.id;
newTabs[tab.id] = {i: LTab[2]};
if (LTab[0] == lastId) {
setTimeout(function() {
LoadedGroup[1].forEach(function(LTab){
$("#"+NewGroupId).append($("#"+LTab[0]));
});
}, 2000);
setTimeout(function() {
LoadedGroup[1].forEach(function(LTab){
if ($("#"+RefsTabs[LTab[1]])[0] && $("#"+LTab[0])[0]) {
$("#ch"+RefsTabs[LTab[1]]).append($("#"+LTab[0]));
}
});
LoadedGroup[1].forEach(function(LTab){
$("#"+LTab[0]).addClass(LTab[3]);
});
chrome.tabs.query({currentWindow: true}, function(tabs) {
RearrangeTreeTabs(tabs, newTabs, true);
RefreshExpandStates();
RefreshGUI();
});
}, 4000);
}
LTab[0] = tab.id;
});
});
}
}
function ExportTabs(filename) {
chrome.windows.getAll({windowTypes: ['normal'], populate: true}, function(w) {
chrome.runtime.sendMessage({command: "get_browser_tabs"}, function(response) {
let tabs = Object.assign({}, response);
chrome.runtime.sendMessage({command: "get_windows"}, function(response) {
let windows = Object.assign({}, response);
let WindowsToSave = [];
w.forEach(function(CWin){
if (windows[CWin.id] != undefined && windows[CWin.id].group_bar != undefined && windows[CWin.id].active_shelf != undefined && windows[CWin.id].active_group != undefined && windows[CWin.id].groups != undefined && windows[CWin.id].folders != undefined) {
WindowsToSave.push([[], CWin.id, CWin.tabs[0].url, CWin.tabs[CWin.tabs.length-1].url, windows[CWin.id].group_bar, windows[CWin.id].group_bar, windows[CWin.id].active_shelf, windows[CWin.id].active_group, windows[CWin.id].groups, windows[CWin.id].folders, 0]);
}
CWin.tabs.forEach(function(CTab){
if (tabs[CTab.id] != undefined && tabs[CTab.id].parent != undefined && tabs[CTab.id].index != undefined && tabs[CTab.id].expand != undefined) {
WindowsToSave[WindowsToSave.length-1][0].push([CTab.id, CTab.url, tabs[CTab.id].parent, tabs[CTab.id].index, tabs[CTab.id].expand]);
}
});
});
SaveFile(filename, WindowsToSave);
});
});
});
}
function ImportTabs() {
let file = document.getElementById("file_import_backup");
let fr = new FileReader();
if (file.files[0] == undefined) return;
fr.readAsText(file.files[file.files.length-1]);
fr.onload = function() {
let data = fr.result;
file.remove();
chrome.windows.getAll({windowTypes: ['normal'], populate: true}, function(w) {
//make global variables
LoadedWindows = JSON.parse(data);
RefsTabs = {};
TotalTabsCount = 0;
LoadedWindows.forEach(function(LWin){
TotalTabsCount += LWin[0].length;
});
LoadedWindows.forEach(function(LWin){
chrome.windows.create({}, function(new_window) {
LWin[1] = new_window.id;
LWin[2] = "";
LWin[3] = "";
setTimeout(function() {
chrome.runtime.sendMessage({command: "save_groups", groups: LWin[8], windowId: new_window.id});
}, 1000);
LWin[0].forEach(function(LTab){
chrome.tabs.create({url: LTab[1], pinned: (LTab[2] == "pin_list" ? true : false), windowId: new_window.id}, function(tab) {
RefsTabs[LTab[0]] = tab.id;
LTab[0] = tab.id;
LTab[1] = "";
TotalTabsCount--;
if (TotalTabsCount < 2) {
setTimeout(function() {
chrome.runtime.sendMessage({command: "get_windows"}, function(response) {
let windows = Object.assign({}, response);
LoadedWindows.forEach(function(LWin){
LWin[0].forEach(function(LTab){
schedule_update_data -= 2;
chrome.runtime.sendMessage({command: "update_tab", tabId: LTab[0], tab: {parent: (RefsTabs[LTab[2]] ? RefsTabs[LTab[2]] : LTab[2]), index: LTab[3], expand: LTab[4]}});
});
});
setTimeout(function() {
chrome.runtime.sendMessage({command: "reload_sidebar"});
location.reload();
}, 3000);
});
chrome.tabs.remove(new_window.tabs[0].id, null);
}, 1000);
}
});
});
});
});
});
}
}
function ImportMergeTabs() {
let file = document.getElementById("file_import_merge_backup");
let fr = new FileReader();
if (file.files[0] == undefined) return;
fr.readAsText(file.files[0]);
fr.onload = function() {
let data = fr.result;
file.remove();
//make global variables
LoadedWindows = JSON.parse(data);
RefsTabs = {};
RefsWins = {};
TotalTabsCount = 0;
LoadedWindows.forEach(function(LWin){
TotalTabsCount += LWin[0].length;
});
chrome.windows.getAll({windowTypes: ['normal'], populate: true}, function(w) {
w.forEach(function(CWin){ // loop Current Windows (CWin)
LoadedWindows.forEach(function(LWin){ // loop Loaded Windows (LWin)
CWin.tabs.forEach(function(CTab){ // loop Tabs of each Current Window
schedule_update_data -= 2;
for (let LWinTabInd = 0; LWinTabInd < LWin[0].length; LWinTabInd++) { // loop Tabs of each Loaded Window
if (CTab.url == LWin[0][LWinTabInd][1]) {
// TabsMatched++;
RefsTabs[LWin[0][LWinTabInd][0]] = CTab.id;
LWin[0][LWinTabInd][0] = CTab.id;
LWin[0][LWinTabInd][1] = "";
LWin[10]++;
TotalTabsCount--;
break;
}
}
});
if (CWin.tabs[0].url == LWin[2] && CWin.tabs[CWin.tabs.length-1].url == LWin[3] && LWin[10] > LWin[0].length*0.5) {
RefsWins[LWin[1]] = CWin.id;
LWin[1] = CWin.id;
LWin[2] = "";
LWin[3] = "";
}
});
});
LoadedWindows.forEach(function(LWin){
if (LWin[2] != "" && LWin[3] != "") { // missing window, lets make one
chrome.windows.create({}, function(new_window) {
RefsWins[LWin[1]] = new_window.id;
LWin[1] = new_window.id;
LWin[2] = "";
LWin[3] = "";
LWin[0].forEach(function(LTab){
if (LTab[1] != "") { // missing tab of missing window, lets make one
chrome.tabs.create({url: LTab[1], windowId: new_window.id}, function(tab) {
// chrome.tabs.executeScript(tab.id, {code: "setTimeout(function() { window.stop(); }, 5000);", runAt: "document_start"}, function(){});
RefsTabs[LTab[0]] = tab.id;
LTab[0] = tab.id;
LTab[1] = "";
TotalTabsCount--;
});
}
});
chrome.tabs.remove(new_window.tabs[0].id, null);
});
} else {
LWin[0].forEach(function(LTab){
if (LTab[1] != "") { // missing tab, lets make one
chrome.tabs.create({url: LTab[1], windowId: LWin[1]}, function(tab) {
RefsTabs[LTab[0]] = tab.id;
LTab[0] = tab.id;
LTab[1] = "";
TotalTabsCount--;
if (TotalTabsCount < 2) {
setTimeout(function() {
chrome.runtime.sendMessage({command: "get_windows"}, function(response) {
let windows = Object.assign({}, response);
LoadedWindows.forEach(function(LWin){
for (let lGroup in LWin[8]) {
if (windows[LWin[1]] && windows[LWin[1]].groups[lGroup] == undefined) {
windows[LWin[1]].groups[lGroup] = Object.assign({}, LWin[8][lGroup]);
chrome.runtime.sendMessage({command: "save_groups", groups: windows[LWin[1]].groups, windowId: LWin[1]});
}
}
LWin[0].forEach(function(LTab){
schedule_update_data -= 2;
chrome.runtime.sendMessage({command: "update_tab", tabId: LTab[0], tab: {parent: (RefsTabs[LTab[2]] ? RefsTabs[LTab[2]] : LTab[2]), index: LTab[3], expand: LTab[4]}});
});
});
setTimeout(function() {
chrome.runtime.sendMessage({command: "reload_sidebar"});
location.reload();
}, 1000);
});
}, 1000);
}
});
}
});
}
});
});
}
}

170
scripts/chrome.js Normal file
View File

@ -0,0 +1,170 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
// ********** CHROME EVENTS ***************
function StartChromeListeners(){
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
if (message.command == "drag_drop") {
DragAndDrop.DragNodeClass = message.DragNodeClass;
DragAndDrop.SelectedTabsIds = message.SelectedTabsIds;
DragAndDrop.TabsIds = message.TabsIds;
DragAndDrop.Parents = message.Parents;
DragAndDrop.ComesFromWindowId = message.ComesFromWindowId;
DragAndDrop.Depth = message.Depth;
}
if (message.command == "drag_dropped") {
DragAndDrop.Dropped = message.Dropped;
}
if (message.command == "reload_sidebar") {
window.location.reload();
}
if (message.command == "reload_options") {
LoadPreferences();
setTimeout(function() {
RestorePinListRowSettings();
},200);
}
if (message.command == "reload_theme") {
let theme = LoadData(message.themeName, DefaultTheme);
ApplySizeSet(theme["TabsSizeSetNumber"]);
ApplyColorsSet(theme["ColorsSet"]);
if (theme.ToolbarShow) {
$("#toolbar").html(theme.toolbar);
} else {
$("#toolbar").html("");
}
RestoreToolbarSearchFilter();
RestoreToolbarShelf();
}
if (message.windowId == CurrentWindowId) {
switch(message.command) {
case "tab_created":
// if set to treat unparented tabs as active tab's child
if (opt.append_orphan_tab == "as_child" && message.tab.openerTabId == undefined && $(".active:visible")[0]) {
message.tab.openerTabId = $(".active:visible")[0].id;
}
// child case
if (message.tab.openerTabId) {
// append to tree
if (opt.max_tree_depth < 0 || (opt.max_tree_depth > 0 && $("#"+message.tab.openerTabId).parents(".tab").length < opt.max_tree_depth)) {
if (opt.append_child_tab == "top") {
AppendTab({ tab: message.tab, ParentId: message.tab.openerTabId, Append: false, Scroll: true });
}
if (opt.append_child_tab == "bottom") {
AppendTab({ tab: message.tab, ParentId: message.tab.openerTabId, Append: true, Scroll: true });
}
}
// if reached depth limit of the tree
if (opt.max_tree_depth > 0 && $("#"+message.tab.openerTabId).parents(".tab").length >= opt.max_tree_depth) {
if (opt.append_child_tab_after_limit == "after") {
AppendTab({ tab: message.tab, InsertAfterId: message.tab.openerTabId, Append: true, Scroll: true });
}
if (opt.append_child_tab_after_limit == "top") {
AppendTab({ tab: message.tab, ParentId: $("#"+message.tab.openerTabId).parent().parent()[0].id, Append: false, Scroll: true });
}
if (opt.append_child_tab_after_limit == "bottom") {
AppendTab({ tab: message.tab, ParentId: $("#"+message.tab.openerTabId).parent().parent()[0].id, Append: true, Scroll: true });
}
}
// place tabs flat, (should I merge it with orphans case?)
if (opt.max_tree_depth == 0) {
if (opt.append_child_tab_after_limit == "after") {
AppendTab({ tab: message.tab, InsertAfterId: message.tab.openerTabId, Append: false, Scroll: true });
}
if (opt.append_child_tab_after_limit == "top") {
AppendTab({ tab: message.tab, Append: false, Scroll: true });
}
if (opt.append_child_tab_after_limit == "bottom") {
AppendTab({ tab: message.tab, Append: true, Scroll: true });
}
}
// orphan case
} else {
if (opt.append_orphan_tab == "after_active") {
AppendTab({ tab: message.tab, InsertAfterId: $(".active:visible")[0] ? $(".active:visible")[0].id : undefined, Append: false });
}
if (opt.append_orphan_tab == "top") {
AppendTab({ tab: message.tab, Append: false });
}
if (opt.append_orphan_tab == "bottom" || opt.append_orphan_tab == "as_child") {
AppendTab({ tab: message.tab, Append: true });
}
}
if ($("#"+message.tab.openerTabId).is(".c")) {
$("#"+message.tab.openerTabId).removeClass("c").addClass("o");
}
RefreshExpandStates();
schedule_update_data++;
RefreshGUI();
break;
case "tab_attached":
AppendTab({ tab: message.tab, ParentId: message.ParentId, Append: true});
RefreshGUI();
break;
case "tab_detached":
if (opt.promote_children && $("#"+message.tabId).is(".tab")) {
$("#ch"+message.tabId).children().insertAfter($("#"+message.tabId));
} else {
$("#"+message.tabId).find(".tab").each(function() {
RemoveTabFromList(this.id);
});
}
RemoveTabFromList(message.tabId);
setTimeout(function() { schedule_update_data++; },300);
RefreshGUI();
break;
case "tab_removed":
if ($(".tab#"+message.tabId)[0]) {
if (opt.promote_children) {
$("#ch"+message.tabId).children().insertAfter($("#"+message.tabId));
} else {
$("#"+message.tabId).find(".tab").each(function() {
chrome.tabs.remove(parseInt(this.id));
});
}
}
RemoveTabFromList(message.tabId);
RefreshExpandStates();
setTimeout(function() { schedule_update_data++; },300);
RefreshGUI();
break;
case "tab_activated":
setTimeout(function() { SetActiveTab(message.tabId); },100);
break;
case "tab_attention":
SetAttentionIcon(message.tabId);
break;
case "tab_updated":
if (message.changeInfo.favIconUrl != undefined || message.changeInfo.url != undefined) {
setTimeout(function() { GetFaviconAndTitle(message.tabId); },100);
}
if (message.changeInfo.title != undefined) {
setTimeout(function() { GetFaviconAndTitle(message.tabId); },1000);
}
if (message.changeInfo.audible != undefined || message.changeInfo.mutedInfo != undefined) {
RefreshMediaIcon(message.tabId);
}
if (message.changeInfo.discarded != undefined) {
RefreshDiscarded(message.tabId);
}
if (message.changeInfo.pinned != undefined) {
if ((message.tab.pinned && $("#"+message.tabId).is(".tab")) || (!message.tab.pinned && $("#"+message.tabId).is(".pin"))) {
SetTabClass({ id: message.tabId, pin: message.tab.pinned });
schedule_update_data++;
}
RefreshExpandStates();
}
break;
}
}
});
}

323
scripts/drag_and_drop.js Normal file
View File

@ -0,0 +1,323 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
// ********** TABS EVENTS ***************
function SetDragAndDropEvents() {
$(document).on("mouseleave", window, function(event) {
MouseHoverOver = "";
});
$(document).on("dragleave", window, function(event) {
MouseHoverOver = "";
});
$(document).on("dragleave", "body", function(event) {
MouseHoverOver = "";
});
$(document).on("dragover", "#toolbar_groups, #toolbar, #pin_list, .group", function(event) {
MouseHoverOver = this.id;
});
$(document).on("mouseover", "#toolbar_groups, #toolbar, #pin_list, .group", function(event) { // set mouse over id
MouseHoverOver = this.id;
});
// PREVENT THE DEFAULT BROWSER DROP ACTION
$(document).bind("drop dragover", function(event) {
event.preventDefault();
});
// bring to front drop zones
$(document).on("dragenter", ".tab_header, .folder", function(event) {
DropTargetsSendToFront();
});
// SET FOLDER DRAG SOURCE
$(document).on("dragstart", ".folder_header", function(event) {
DragAndDrop.DragNodeClass = "folder";
DragAndDrop.Dropped = false;
event.stopPropagation();
event.originalEvent.dataTransfer.setDragImage(document.getElementById("DragImage"), 0, 0);
event.originalEvent.dataTransfer.setData("text", "");
DragAndDrop.ComesFromWindowId = CurrentWindowId;
DragAndDrop.SelectedTabsIds.splice(0, DragAndDrop.SelectedTabsIds.length);
DragAndDrop.TabsIds.splice(0, DragAndDrop.TabsIds.length);
DragAndDrop.Parents.splice(0, DragAndDrop.Parents.length);
// chrome.runtime.sendMessage({command: "drag_drop", DragNodeClass: "tab", SelectedTabsIds: DragAndDrop.SelectedTabsIds, TabsIds: DragAndDrop.TabsIds, Parents: DragAndDrop.Parents, ComesFromWindowId: CurrentWindowId, Depth: DragAndDrop.Depth});
});
// SET TAB DRAG SOURCE
$(document).on("dragstart", ".tab_header", function(event) {
DragAndDrop.DragNodeClass = "tab";
DragAndDrop.Dropped = false;
event.stopPropagation();
event.originalEvent.dataTransfer.setDragImage(document.getElementById("DragImage"), 0, 0);
event.originalEvent.dataTransfer.setData("text", "");
if ($(this).parent().is(".active")) {
$(this).parent().addClass("selected_temporarly").addClass("selected");
}
$(".close").removeClass("show");
$(".tab_header_hover").removeClass("tab_header_hover");
if ($(this).parent().is(":not(.selected)")) {
$(".selected").addClass("selected_frozen").removeClass("selected");
$(this).parent().addClass("selected_temporarly").addClass("selected");
}
$(".selected:not(:visible)").addClass("selected_frozen").removeClass("selected");
DragAndDrop.ComesFromWindowId = CurrentWindowId;
DragAndDrop.SelectedTabsIds.splice(0, DragAndDrop.SelectedTabsIds.length);
DragAndDrop.TabsIds.splice(0, DragAndDrop.TabsIds.length);
DragAndDrop.Parents.splice(0, DragAndDrop.Parents.length);
DragAndDrop.Depth = 0;
$(".selected:visible").find(".tab").each(function() {
if ($(this).parents(".tab").length > DragAndDrop.Depth) { DragAndDrop.Depth = $(this).parents(".tab").length; }
});
DragAndDrop.Depth -= $(this).parents(".tab").length-1;
if (DragAndDrop.Depth < 0) {
DragAndDrop.Depth = 0;
}
$(".selected:visible").each(function() {
DragAndDrop.SelectedTabsIds.push(parseInt(this.id));
DragAndDrop.TabsIds.push(parseInt(this.id));
DragAndDrop.Parents.push($(this).parent()[0].id);
if ($("#ch" + this.id).children().length > 0) {
$($("#ch" + this.id).find(".tab")).each(function() {
DragAndDrop.TabsIds.push(parseInt(this.id));
DragAndDrop.Parents.push($(this).parent()[0].id);
});
}
});
chrome.runtime.sendMessage({command: "drag_drop", DragNodeClass: "tab", SelectedTabsIds: DragAndDrop.SelectedTabsIds, TabsIds: DragAndDrop.TabsIds, Parents: DragAndDrop.Parents, ComesFromWindowId: CurrentWindowId, Depth: DragAndDrop.Depth});
});
// REMOVE DROP TARGET WHEN DRAG LEAVES
$(document).on("dragleave", ".highlighted_drop_target", function(event) {
$(".highlighted_drop_target").removeClass("highlighted_drop_target");
});
// SET DROP TARGET WHEN ENTERING PINS AND TABS
$(document).on("dragenter", ".tab>.drag_entered_top:not(.highlighted_drop_target), .tab>.drag_entered_bottom:not(.highlighted_drop_target), .tab>.drag_enter_center:not(.highlighted_drop_target)", function(event) {
event.stopPropagation();
if ($(".selected:visible").find($(this)).length > 0 || DragAndDrop.DragNodeClass != "tab") { return; }
if (opt.max_tree_drag_drop && opt.max_tree_depth >= 0) {
if ($(this).is(".drag_enter_center")) {
if (opt.max_tree_depth == 0) { return; }
if ($(this).parents(".tab").length + DragAndDrop.Depth > opt.max_tree_depth) { return; }
} else {
if ($(this).parents(".tab").length + DragAndDrop.Depth > opt.max_tree_depth+1) { return; }
}
}
$(".highlighted_drop_target").removeClass("highlighted_drop_target");
$(this).addClass("highlighted_drop_target");
});
// SET DROP TARGET WHEN ENTERING FOLDERS
$(document).on("dragenter", ".folder>.drag_entered_top:not(.highlighted_drop_target), .folder>.drag_entered_bottom:not(.highlighted_drop_target), .folder>.drag_enter_center:not(.highlighted_drop_target)", function(event) {
event.stopPropagation();
if (DragAndDrop.DragNodeClass == "group") { return; }
// if (/* $(".selected:visible").find($(this)).length > 0 || */ DragAndDrop.DragNodeClass != "folder") { return; }
$(".highlighted_drop_target").removeClass("highlighted_drop_target");
$(this).addClass("highlighted_drop_target");
});
// SET DROP TARGET, PIN_LIST, TAB_LIST, GROUP OR GROUP_BUTTON
$(document).on("dragover", "#pin_list, .group, .group_drag_box", function(event) {
if (DragAndDrop.DragNodeClass != "group" && $(".highlighted_drop_target").length == 0 && event.target.className == $(this)[0].className) {
$(this).addClass("highlighted_drop_target");
}
});
// TIMER FOR FOR AUTO EXPAND
$(document).on("dragenter", ".drag_enter_center", function(event) {
event.stopPropagation();
DragAndDrop.timeout = false;
setTimeout(function() { DragAndDrop.timeout = true; }, 1800);
});
$(document).on("dragleave", ".drag_enter_center", function(event) {
DragAndDrop.timeout = false;
});
$(document).on("dragover", ".c > .drag_enter_center", function(event) {
if (DragAndDrop.timeout && opt.open_tree_on_hover) {
$(this).parent().addClass("o").removeClass("c");
DragAndDrop.timeout = false;
}
});
// DROP
$(document).on("drop", "*", function(event) {
DragAndDrop.Dropped = true;
chrome.runtime.sendMessage({command: "drag_dropped", DragAndDrop: true});
event.stopPropagation();
if (DragAndDrop.ComesFromWindowId == CurrentWindowId && MouseHoverOver != "" && $(".highlighted_drop_target")[0] != undefined) {
DropToTarget($(".highlighted_drop_target"));
}
if (DragAndDrop.ComesFromWindowId != CurrentWindowId && $(".highlighted_drop_target")[0] != undefined) {
$(".selected").addClass("selected_frozen").removeClass("selected");
let target = $(".highlighted_drop_target");
let counter = DragAndDrop.TabsIds.length;
(DragAndDrop.TabsIds).forEach(function(TabId) {
chrome.tabs.move(TabId, { windowId: CurrentWindowId, index: -1 }, function(MovedTab) {
counter--;
setTimeout(function() {
if (counter == 0) {
setTimeout(function() {
(DragAndDrop.SelectedTabsIds).forEach(function(selectedTabId) {
if ($("#"+selectedTabId)[0]){
$("#"+selectedTabId).addClass("selected_temporarly").addClass("selected");
}
});
if (browserId != "F") { // I HAVE TO EXLUDE THIS IN FIREFOX SINCE MOVED TAB LOSES ITS ORIGINAL ID - WHAT IN THE ACTUAL F*CK MOZILLA!
for (var tabsIdsIndex = 1; tabsIdsIndex < (DragAndDrop.TabsIds).length; tabsIdsIndex++) {
if ($("#"+DragAndDrop.TabsIds[tabsIdsIndex])[0] && $("#"+DragAndDrop.Parents[tabsIdsIndex])[0]){
$("#"+DragAndDrop.Parents[tabsIdsIndex]).append($("#"+DragAndDrop.TabsIds[tabsIdsIndex]));
}
}
}
DropToTarget(target);
},300);
}
},300);
});
});
}
});
// DETACH
$(document).on("dragend", ".tab_header", function(event) {
setTimeout(function() {
if (DragAndDrop.Dropped == false && MouseHoverOver == "" && $(".highlighted_drop_target")[0] == undefined) {
DetachTabs(DragAndDrop.TabsIds);
}
},1100);
});
// dragging groups
$(document).on("dragstart", ".group_drag_box", function(event) {
event.originalEvent.dataTransfer.setData("null", "null");
event.originalEvent.dataTransfer.setDragImage(document.getElementById("DragImage"), 0, 0);
DragAndDrop.DragNodeClass = "group";
DragAndDrop.DragNode = $(this).parent();
$(".highlighted_drop_target").removeClass("highlighted_drop_target");
});
// when dragging the group, move it up or down
$(document).on("dragenter", ".group_drag_box", function(event) {
if (DragAndDrop.DragNode != undefined && DragAndDrop.DragNodeClass == "group" && $(this).parent() != DragAndDrop.DragNode) {
if ( $(this).parent().index() <= DragAndDrop.DragNode.index() ) {
DragAndDrop.DragNode.insertBefore($(this).parent());
} else {
if ($(this).parent().index() > DragAndDrop.DragNode.index()) {
DragAndDrop.DragNode.insertAfter($(this).parent());
}
}
$(".highlighted_drop_target").removeClass("highlighted_drop_target");
}
});
// when finished dragging the group
$(document).on("dragend", ".group_drag_box", function(event) {
DragAndDrop.DragNodeClass = "";
DragAndDrop.DragNode = undefined;
UpdateBgGroupsOrder();
$(".highlighted_drop_target").removeClass("highlighted_drop_target");
});
}
function DropToTarget(TargetNode) {
// dropped on pin
if (TargetNode.parent().is(".pin")) {
$(".selected").each(function() {
SetTabClass({ id: this.id, pin: true });
if (TargetNode.is(".drag_entered_top")) {
$(this).insertBefore(TargetNode.parent());
} else {
$(this).insertAfter(TargetNode.parent());
}
});
}
// dropped on pin_list
if (TargetNode.is("#pin_list")) {
$(".selected").each(function() {
SetTabClass({ id: this.id, pin: true });
});
TargetNode.append($(".selected"));
}
// dropped on tab
if (TargetNode.parent().is(".tab, .folder")) {
if (TargetNode.parent().is(".selected")) {
TargetNode.parent().addClass("highlighted_selected").removeClass("selected");
}
$(".selected").each(function() {
SetTabClass({ id: this.id, pin: false });
});
if (TargetNode.is(".drag_entered_top")) {
$($(".selected").get().reverse()).insertBefore(TargetNode.parent());
}
if (TargetNode.is(".drag_entered_bottom")) {
$($(".selected").get().reverse()).insertAfter(TargetNode.parent());
}
if (TargetNode.is(".drag_enter_center")) {
if (opt.append_child_tab == "bottom") {
$("#ch" + TargetNode[0].id.substr(2)).append($($(".selected").get().reverse()));
} else {
$("#ch" + TargetNode[0].id.substr(2)).prepend($($(".selected").get().reverse()));
}
}
}
// dropped on group (tab list)
if (TargetNode.is(".group")) {
$(".selected").each(function() {
SetTabClass({ id: this.id, pin: false });
});
TargetNode.append($($(".selected").get().reverse()));
}
// dropped on group button (group list)
if (TargetNode.is(".group_drag_box")) {
$(".selected").each(function() {
SetTabClass({ id: this.id, pin: false });
});
$("#"+TargetNode[0].id.substr(1)).append($($(".selected").get().reverse()));
}
$(".highlighted_selected").addClass("selected").removeClass("highlighted_selected");
RefreshExpandStates();
DragAndDrop.timeout = false;
RefreshGUI();
setTimeout(function() {
DropTargetsSendToBack();
schedule_update_data++;
schedule_rearrange_tabs++;
}, 500);
TargetNode.removeClass("highlighted_drop_target");
$(".tab_header_hover").removeClass("tab_header_hover");
$(".selected_frozen").addClass("selected").removeClass("selected_frozen");
$(".selected_temporarly").removeClass("selected").removeClass("selected_temporarly");
// this is group dragover indicator
$(".dragover_highlight").removeClass("dragover_highlight");
}

View File

@ -1,150 +0,0 @@
// ********** CHROME EVENTS ***************
chrome.commands.onCommand.addListener(function(command) {
chrome.windows.getLastFocused({windowTypes: ["normal"]}, function(window) {
if (CurrentWindowId == window.id){
if (command == "goto_tab_above"){
ActivatePrevTab();
}
if (command == "goto_tab_below"){
ActivateNextTab();
}
}
});
});
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse){
if (message.command == "reload"){
window.location.reload();
}
if (message.command == "recheck_tabs"){
schedule_update_data++;
}
if (message.command == "drag_end"){
DropTargetsSendToBack();
}
if (message.windowId == CurrentWindowId){
switch(message.command){
case "tab_created":
// if set to treat unparented tabs as active tab's child
if (bg.opt.append_orphan_tab == "as_child" && message.tab.openerTabId == undefined){
message.tab.openerTabId = $(".active")[0].id;
}
// child case
if (message.tab.openerTabId){
// append to tree
if (bg.opt.max_tree_depth < 0 || (bg.opt.max_tree_depth > 0 && $("#"+message.tab.openerTabId).parents(".tab").length < bg.opt.max_tree_depth)){
if (bg.opt.append_child_tab == "top"){
AppendTab({ tab: message.tab, ParentId: message.tab.openerTabId, Append: false });
}
if (bg.opt.append_child_tab == "bottom"){
AppendTab({ tab: message.tab, ParentId: message.tab.openerTabId, Append: true });
}
}
// if reached depth limit of the tree
if (bg.opt.max_tree_depth > 0 && $("#"+message.tab.openerTabId).parents(".tab").length >= bg.opt.max_tree_depth){
if (bg.opt.append_child_tab_after_limit == "after"){
AppendTab({ tab: message.tab, InsertAfterId: message.tab.openerTabId, Append: true });
}
if (bg.opt.append_child_tab_after_limit == "top"){
AppendTab({ tab: message.tab, ParentId: $("#"+message.tab.openerTabId).parent().parent()[0].id, Append: false });
}
if (bg.opt.append_child_tab_after_limit == "bottom"){
AppendTab({ tab: message.tab, ParentId: $("#"+message.tab.openerTabId).parent().parent()[0].id, Append: true });
}
}
// place tabs flat, (should I merge it with orphans case?)
if (bg.opt.max_tree_depth == 0){
if (bg.opt.append_child_tab_after_limit == "after"){
AppendTab({ tab: message.tab, InsertAfterId: message.tab.openerTabId, Append: false });
}
if (bg.opt.append_child_tab_after_limit == "top"){
AppendTab({ tab: message.tab, Append: false });
}
if (bg.opt.append_child_tab_after_limit == "bottom"){
AppendTab({ tab: message.tab, Append: true });
}
}
// orphan case
} else {
if (bg.opt.append_orphan_tab == "after_active"){
AppendTab({ tab: message.tab, InsertAfterId: $(".active")[0].id, Append: false });
}
if (bg.opt.append_orphan_tab == "top"){
AppendTab({ tab: message.tab, Append: false });
}
if (bg.opt.append_orphan_tab == "bottom"){
AppendTab({ tab: message.tab, Append: true });
}
}
if ($("#"+message.tab.openerTabId).is(".c")){
$("#"+message.tab.openerTabId).removeClass("c").addClass("o");
}
RefreshExpandStates();
schedule_update_data++;
RefreshGUI();
break;
case "tab_attached":
AppendTab({ tab: message.tab, ParentId: bg.tabs[message.tabId].p, Append: true});
if ($("#"+message.tabId).parent().children().eq(bg.dt.DropToIndex)){
if (bg.dt.DropAfter){
$("#"+message.tabId).insertAfter($("#"+message.tabId).parent().children().eq(bg.dt.DropToIndex));
} else {
$("#"+message.tabId).insertBefore($("#"+message.tabId).parent().children().eq(bg.dt.DropToIndex));
}
}
RefreshExpandStates();
setTimeout(function(){
DropTargetsSendToBack();
schedule_update_data++;
},300);
RefreshGUI();
break;
case "tab_removed":
if (bg.opt.promote_children && $("#"+message.tabId).is(".tab")){
$("#ch"+message.tabId).children().insertAfter($("#"+message.tabId));
} else {
$("#"+message.tabId).find(".tab").each(function(){
chrome.tabs.remove(parseInt(this.id));
});
}
RemoveTabFromList(message.tabId);
RefreshExpandStates();
setTimeout(function(){ schedule_update_data++; },300);
RefreshGUI();
break;
case "tab_activated":
setTimeout(function(){ SetActiveTab(message.tabId); },100);
break;
case "tab_updated":
if (message.changeInfo.favIconUrl != undefined || message.changeInfo.url != undefined){
setTimeout(function(){ GetFaviconAndTitle(message.tabId); },100);
}
if (message.changeInfo.title != undefined){
setTimeout(function(){ GetFaviconAndTitle(message.tabId); },1000);
}
if (message.changeInfo.audible != undefined || message.changeInfo.mutedInfo != undefined){
RefreshMediaIcon(message.tabId);
}
if (message.changeInfo.discarded != undefined){
RefreshDiscarded(message.tabId);
}
if (message.changeInfo.pinned != undefined && DragNode == undefined){
if ((message.tab.pinned && $("#"+message.tabId).is(".tab")) || (!message.tab.pinned && $("#"+message.tabId).is(".pin"))){
SetTabClass({ id: message.tabId, pin: message.tab.pinned });
schedule_update_data++;
}
RefreshExpandStates();
}
break;
}
}
});

View File

@ -1,145 +0,0 @@
// ********** REFRESH GUI ***************
function SetTRefreshEvents(){
$(window).on("resize", function(event){
RefreshGUI();
});
// click on media icon
$(document).on("mousedown", ".tab_mediaicon", function(event){
event.stopPropagation();
if (event.button == 0 && $(this).parent().parent().is(".audible, .muted")){
chrome.tabs.get(parseInt(this.parentNode.parentNode.id), function(tab){
chrome.tabs.update(tab.id, {muted:!tab.mutedInfo.muted});
});
}
});
}
function RefreshGUI() {
if ($("#toolbar").children().length > 0) {
if ($("#button_tools, #button_search").is(".on")) {
$("#toolbar").css({ "height": 53 });
} else {
$("#toolbar").css({ "height": 26 });
}
} else {
$("#toolbar").css({ "height": 0 });
}
if ($("#pin_list").children().length == 0) {
$("#pin_list").addClass("hidden");
} else {
$("#pin_list").removeClass("hidden");
}
$("#tab_list").css({ "height": $(window).height() - $("#pin_list").outerHeight() - $("#toolbar").outerHeight() });
}
// set discarded class
function RefreshDiscarded(tabId) {
if ($("#" + tabId).length > 0) {
chrome.tabs.get(parseInt(tabId), function(tab) {
if (tab.discarded) {
$("#" + tabId).addClass("discarded");
} else {
$("#" + tabId).removeClass("discarded");
}
});
}
}
// change media icon
function RefreshMediaIcon(tabId) {
if ($("#" + tabId).length > 0 && bg.tabs[tabId]) {
chrome.tabs.get(parseInt(tabId), function(tab) {
if (tab) {
if (tab.mutedInfo.muted) {
$("#" + tabId).removeClass("audible").addClass("muted");
}
if (!tab.mutedInfo.muted && tab.audible) {
$("#" + tabId).removeClass("muted").addClass("audible");
}
if (!tab.mutedInfo.muted && !tab.audible) {
$("#" + tabId).removeClass("audible").removeClass("muted");
}
}
});
}
}
// Vivaldi does not have changeInfo.audible listener, this is my own implementation, hopefully this will not affect performance too much
function VivaldiRefreshMediaIcons() {
chrome.tabs.query({currentWindow: true}, function(tabs){
$(".audible, .muted").removeClass("audible").removeClass("muted");
tabs.forEach(function(Tab){
if (Tab.audible) {
$("#" + Tab.id).addClass("audible");
}
if (Tab.mutedInfo.muted) {
$("#" + Tab.id).addClass("muted");
}
});
});
setTimeout(function() {
VivaldiRefreshMediaIcons();
}, 1400);
}
function GetFaviconAndTitle(tabId) {
if ($("#" + tabId).length > 0 && bg.tabs[tabId]) {
chrome.tabs.get(parseInt(tabId), function(tab) {
if (tab && tab.status == "complete") {
$("#" + tabId).removeClass("loading");
var title = tab.title ? tab.title : tab.url;
// change title
$("#tab_title" + tab.id)[0].textContent = title;
$("#tab_header" + tab.id).attr("title", title);
// compatibility with various Tab suspender extensions
if (tab.favIconUrl != undefined && tab.favIconUrl.match("data:image/png;base64") != null) {
$("#tab_header" + tab.id).css({ "background-image": "url(" + tab.favIconUrl + ")" });
} else {
// case for internal pages, favicons don't have access, but can be loaded from url
if (tab.url.match("opera://|vivaldi://|browser://|chrome://|chrome-extension://|about:") != null) {
$("#tab_header" + tab.id).css({ "background-image": "url(chrome://favicon/" + tab.url + ")" });
} else {
// change favicon
var img = new Image();
img.src = tab.favIconUrl;
img.onload = function() {
$("#tab_header" + tab.id).css({ "background-image": "url(" + tab.favIconUrl + ")" });
};
img.onerror = function() {
$("#tab_header" + tab.id).css({ "background-image": "url(chrome://favicon/" + tab.url + ")" });
}
}
}
}
if (tab && tab.status == "loading") {
$("#" + tabId).addClass("loading");
var title = tab.title ? tab.title : bg.caption_loading;
$("#tab_title" + tab.id)[0].textContent = title;
$("#tab_header" + tab.id).attr("title", title);
setTimeout(function() {
if ($("#" + tabId).length != 0) GetFaviconAndTitle(tabId);
}, 1000);
}
});
}
}
// refresh open closed trees states
function RefreshExpandStates() {
$(".children").each(function() {
if ($(this).children().length > 0) {
$(this).parent().removeClass("n");
if ($(this).parent().is(":not(.o, .c)")) {
$(this).parent().addClass("o");
}
} else {
$(this).parent().removeClass("o").removeClass("c").addClass("n");
}
});
}

View File

@ -1,323 +0,0 @@
// ********** TABS EVENTS ***************
function SetTabEvents() {
// double click to create tab
$(document).on("dblclick", "#tab_list, #pin_list, .expand", function(event) {
if (event.button == 0 && $(this).parent().is(".n")) {
chrome.tabs.create({});
}
if (event.button == 0 && event.target.id == "tab_list") {
chrome.tabs.create({});
}
if (event.button == 0 && event.target.id == "pin_list") {
chrome.tabs.create({ pinned: true });
}
});
$(document).on("mouseenter", ".close", function(event) {
$(this).addClass("close_hover");
});
$(document).on("mouseleave", ".close", function(event) {
$(".close_hover").removeClass("close_hover");
});
$(document).on("mouseover", ".tab_header", function(event) {
$(this).addClass("tab_header_hover");
if (bg.opt.always_show_close == false) {
$(this).addClass("close_show");
}
});
$(document).on("mouseleave", ".tab_header", function(event) {
$(this).removeClass("tab_header_hover");
if (bg.opt.always_show_close == false) {
$(this).removeClass("close_show");
}
});
// PREVENT THE DEFAULT BROWSER DROP ACTION
$(document).bind("drop dragover", function(event) {
event.preventDefault();
});
// bring to front drop zones
$(document).on("dragover", ".tab_header", function(event) {
DropTargetsSendToFront();
});
// SET DRAG SOURCE
$(document).on("dragstart", ".tab_header", function(event) {
event.stopPropagation();
bg.dt.tabsIds.splice(0, bg.dt.tabsIds.length);
event.originalEvent.dataTransfer.setData("null", "null");
event.originalEvent.dataTransfer.setDragImage(document.getElementById("DragImage"), 0, 0);
DragNode = $(this).parent()[0];
$(".close").removeClass("show");
$(".tab_header_hover").removeClass("tab_header_hover");
$(this).parent().addClass("tab_header_hover");
if ($(this).parent().is(":not(.selected)")) {
$(".selected").addClass("frozen").removeClass("selected");
$(this).parent().addClass("temporary").addClass("selected");
}
$(".selected").each(function() {
bg.dt.tabsIds.push(parseInt(this.id));
if ($("#ch" + this.id).children().length > 0) {
$($("#ch" + this.id).find(".tab")).each(function() {
bg.dt.tabsIds.push(parseInt(this.id));
});
}
});
bg.dt.CameFromWindowId = CurrentWindowId;
});
// SET DROP TARGET
$(document).on("dragenter", ".drag_entered_top, .drag_entered_bottom, .drag_enter_center", function(event) {
event.stopPropagation();
if ($(".selected").find($(this)).length > 0) return;
$(".highlighted_drop_target").removeClass("highlighted_drop_target");
$(this).addClass("highlighted_drop_target");
});
$(document).on("dragenter", ".drag_enter_center", function(event) {
timeout = false;
setTimeout(function() { timeout = true; }, 1800);
});
$(document).on("dragleave", ".drag_enter_center", function(event) {
timeout = false;
});
$(document).on("dragover", ".drag_enter_center", function(event) {
if (timeout && bg.opt.open_tree_on_hover && $(this).parent().is(".c")) {
$(this).parent().addClass("o").removeClass("c");
timeout = false;
}
});
$(document).on("dragend", ".tab_header", function(event) {
if (bg.dt.CameFromWindowId == CurrentWindowId && bg.dt.DroppedToWindowId == 0) {
DetachTabs(bg.dt.tabsIds);
}
if (bg.dt.CameFromWindowId == CurrentWindowId && bg.dt.DroppedToWindowId != CurrentWindowId && bg.dt.DroppedToWindowId != 0) {
bg.tabs[bg.dt.tabsIds[0]].p = bg.dt.DropToTabId;
bg.tabs[bg.dt.tabsIds[0]].n = bg.dt.DropToIndex;
chrome.tabs.move(bg.dt.tabsIds, { windowId: bg.dt.DroppedToWindowId, index: -1 });
}
if (bg.dt.CameFromWindowId == CurrentWindowId && bg.dt.DroppedToWindowId == CurrentWindowId) {
if ($(".highlighted_drop_target").parent().is(".pin")) {
$(".selected").each(function() {
SetTabClass({ id: this.id, pin: true });
if ($(".highlighted_drop_target").is(".drag_entered_top")) {
$(this).insertBefore($(".highlighted_drop_target").parent());
} else {
$(this).insertAfter($(".highlighted_drop_target").parent());
}
});
}
if ($(".highlighted_drop_target").parent().is(".tab")) {
$(".selected").each(function() {
SetTabClass({ id: this.id, pin: false });
});
if ($(".highlighted_drop_target").is(".drag_entered_top")) {
$(".selected").insertBefore($(".highlighted_drop_target").parent());
}
if ($(".highlighted_drop_target").is(".drag_entered_bottom")) {
$(".selected").insertAfter($(".highlighted_drop_target").parent());
}
if (($(".highlighted_drop_target").is(".drag_enter_center") && $("#" + DragNode.id).parent()[0].id != "ch" + $(".highlighted_drop_target")[0].id.substr(2))) {
if (bg.opt.append_at_end) {
$("#ch" + $(".highlighted_drop_target")[0].id.substr(2)).append($(".selected"));
} else {
$("#ch" + $(".highlighted_drop_target")[0].id.substr(2)).prepend($(".selected"));
}
}
}
}
RefreshExpandStates();
setTimeout(function() {
timeout = false;
DragNode = undefined;
schedule_update_data++;
DropTargetsSendToBack();
}, 500);
$(".highlighted_drop_target").removeClass("highlighted_drop_target");
$(".tab_header_hover").removeClass("tab_header_hover");
$(".frozen").addClass("selected").removeClass("frozen");
$(".temporary").removeClass("selected").removeClass("temporary");
chrome.runtime.sendMessage({command: "drag_end"});
});
$(document).on("click", ".exp_box", function(event) {
event.stopPropagation();
if (event.button == 0) {
if ($(this).parent().parent().is(".o")) {
$(this).parent().parent().removeClass("o").addClass("c");
if (bg.tabs[$(this).parent().parent()[0].id]) {
bg.tabs[$(this).parent().parent()[0].id].o = "c";
}
} else {
if ($(this).parent().parent().is(".c")) {
if (bg.opt.close_other_trees) {
$(".o").removeClass("o").addClass("c");
$(this).parents(".tab").each(function() {
$(this).removeClass("n").removeClass("c").addClass("o");
if (bg.tabs[this.id]) {
bg.tabs[this.id].o = "o";
}
});
$(".c").each(function() {
if (bg.tabs[this.id]) {
bg.tabs[this.id].o = "c";
}
});
}
$(this).parent().parent().removeClass("c").addClass("o");
if (bg.tabs[$(this).parent().parent()[0].id]) {
bg.tabs[$(this).parent().parent()[0].id].o = "o";
}
}
}
bg.schedule_save++;
}
});
// SELECT OR CLOSE TAB/PIN
$(document).on("mousedown", ".tab, .pin", function(event) {
DropTargetsSendToBack();
event.stopPropagation();
if (event.button == 0) {
// SET SELECTION WITH SHIFT
if (event.shiftKey) {
$(".pin, .tab").removeClass("selected").removeClass("frozen").removeClass("temporary");
if ($(this).index() >= $(".active").index()) {
$(".active").nextUntil($(this), ":visible").add($(".active")).add($(this)).addClass("selected");
} else {
$(".active").prevUntil($(this), ":visible").add($(".active")).add($(this)).addClass("selected");
}
}
// TOGGLE SELECTION WITH CTRL
if (event.ctrlKey) {
$(this).toggleClass("selected");
}
}
// CLOSE TAB
if (
(($(this).is(".tab") && $(event.target).is(":not(.expand)")) && ((event.button == 1 && bg.opt.close_with_MMB == true) || (event.button == 0 && $(event.target).is(".close, .close_img"))))
||
($(this).is(".pin") && event.button == 1 && bg.opt.close_with_MMB == true && bg.opt.allow_pin_close == true)
) {
if ($(this).is(".active") && bg.opt.after_closing_active_tab != "browser") {
var tabId;
var Prev = $(this).prev();
var Next = $(this).next();
// if in root, seek for closest, in order set in options, first next then prev, or prev then next
if ($(this).parent().is("#pin_list, #tab_list, .children")) {
if (bg.opt.after_closing_active_tab == "above") {
if (Prev[0]) {
tabId = Prev[0].id;
} else {
if (Next[0]) {
tabId = Next[0].id;
}
}
}
if (bg.opt.after_closing_active_tab == "below") {
if (Next[0]) {
tabId = Next[0].id;
} else {
if (Prev[0]) {
tabId = Prev[0].id;
}
}
}
}
// if no tabs left in the tree, go to parent
if (tabId == undefined && $(this).parent().parent().is(".tab")) {
tabId = $(this).parent().parent()[0].id;
}
// if found a matching condition a new tab will be activated
if (tabId) {
SetActiveTab(tabId);
chrome.tabs.update(parseInt(tabId), { active: true });
}
}
if ($("#" + this.id).is(".pin")) {
$("#" + this.id).remove();
chrome.tabs.update(parseInt(this.id), { pinned: false });
}
chrome.tabs.remove(parseInt(this.id));
}
});
// single click to activate tab
$(document).on("click", ".tab_header", function(event) {
event.stopPropagation();
if (!event.shiftKey && !event.ctrlKey && $(event.target).is(":not(.close, .close_img, .expand, .tab_mediaicon)")) {
SetActiveTab($(this).parent()[0].id);
chrome.tabs.update(parseInt($(this).parent()[0].id), { active: true });
}
});
// set bg.dt to detach tabs when drag ends outside the window
$(document).on("dragleave", "body", function(event) {
bg.dt.DroppedToWindowId = 0;
});
// set bg.dt to attach tabs when drag ends inside the window
$(document).on("dragover", "*", function(event) {
bg.dt.DroppedToWindowId = CurrentWindowId;
});
$(document).on("drag", ".tab_header", function(event) {
event.stopPropagation();
bg.dt.DroppedToWindowId = CurrentWindowId;
});
$(document).on("drop", "#pin_list, #tab_list", function(event) {
bg.dt.DroppedToWindowId = CurrentWindowId;
});
// set bg.dt to attach tabs and append them to tabId
$(document).on("drop", ".drag_enter_center", function(event) {
event.stopPropagation();
bg.dt.DroppedToWindowId = CurrentWindowId;
bg.dt.DropToTabId = $(this).parent()[0].id;
});
// set bg.dt to attach tabs and move them above or below highligted tab
$(document).on("drop", ".drag_entered_top, .drag_entered_bottom", function(event) {
event.stopPropagation();
bg.dt.DroppedToWindowId = CurrentWindowId;
if ($(this).parent().parent().is("#tab_list, #pin_list")){
bg.dt.DropToTabId = $(this).parent().parent()[0].id;
} else {
bg.dt.DropToTabId = $(this).parent().parent().parent()[0].id;
}
bg.dt.DropToIndex = $(this).parent().index();
bg.dt.DropAfter = $(this).is(".drag_entered_bottom") ? true : false;
});
}

72
scripts/folders.js Normal file
View File

@ -0,0 +1,72 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
function AddNewFolder() {
var ID = GenerateNewFolderID();
AppendFolder({id: ID, name: "untitled"});
}
function AppendFolder(param) {
var fd = document.createElement("div"); fd.className = "folder c"; fd.id = param.id;// FOLDER
var dc = document.createElement("div"); dc.className = "drop_target drag_enter_center"; dc.id = "dc"+param.id; fd.appendChild(dc); // DROP TARGET CENTER
var dt = document.createElement("div"); dt.className = "drop_target drag_entered_top"; dt.id = "du"+param.id; fd.appendChild(dt); // DROP TARGET TOP
var db = document.createElement("div"); db.className = "drop_target drag_entered_bottom"; db.id = "dd"+param.id; fd.appendChild(db); // DROP TARGET BOTTOM
var fh = document.createElement("div"); fh.className = "folder_header"; fh.id = "tab_header"+param.id; fh.draggable = true; fd.appendChild(fh); // HEADER
var ex = document.createElement("div"); ex.className = "folder_icon"; ex.id = "fop"+param.id; fh.appendChild(ex);
var ft = document.createElement("div"); ft.className = "folder_title"; ft.id = "folder_title"+param.id; ft.textContent = param.name; fh.appendChild(ft); // TITLE
// $("#tab_title" + tab.id)[0].textContent = title;
// $("#tab_header" + tab.id).attr("title", title);
var ch = document.createElement("div"); ch.className = "children"; ch.id = "ch"+param.id; fd.appendChild(ch);
// var tt = document.createElement("div"); tt.className = "tab_title"; tt.id = "tab_title"+param.tab.id; th.appendChild(tt); // TITLE
$("#"+active_group).append(fd);
}
function GenerateNewFolderID(){
var newID = "f_"+GenerateRandomID();
console.log("generating "+newID);
if ($("#"+newID)[0]) {
GenerateNewFolderID();
console.log("exists "+newID);
} else {
console.log("yay this is ok "+newID);
return newID;
}
}
function SetFolderEvents() {
// EXPAND BOX - EXPAND / COLLAPSE
$(document).on("mousedown", ".folder_icon", function(event) {
event.stopPropagation();
if (event.button == 0) {
if ($(this).parent().parent().is(".o")) {
$(this).parent().parent().removeClass("o").addClass("c");
// chrome.runtime.sendMessage({ command: "update_tab", tabId: parseInt($(this).parent().parent()[0].id), tab: { expand: "c" } });
} else {
if ($(this).parent().parent().is(".c")) {
$(this).parent().parent().removeClass("c").addClass("o");
// chrome.runtime.sendMessage({ command: "update_tab", tabId: parseInt($(this).parent().parent()[0].id), tab: { expand: "o" } });
// if (opt.close_other_trees) {
// $(".o:visible:not(#"+$(this).parent().parent()[0].id+")").removeClass("o").addClass("c");
// $(this).parents(".tab").each(function() {
// $(this).removeClass("n").removeClass("c").addClass("o");
// chrome.runtime.sendMessage({ command: "update_tab", tabId: parseInt(this.id), tab: { expand: "o" } });
// });
// $(".c").each(function() {
// chrome.runtime.sendMessage({ command: "update_tab", tabId: parseInt(this.id), tab: { expand: "c" } });
// });
// }
}
}
}
});
}

206
scripts/global.js Normal file
View File

@ -0,0 +1,206 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
// ********** GLOBAL VARIABLES FOR BACKGROUND, OPTIONS AND SIDEBAR ***************
var hold = true;
var schedule_save = 0;
var schedule_update_indexes = 0;
var schedule_rearrange_tabs = 0;
var windows = {};
var tabs = {};
var MouseHoverOver = "";
var DragAndDrop = {timeout: false, DragNode: undefined, DragNodeClass: "", Dropped: true, SelectedTabsIds: [], TabsIds: [], Parents: [], ComesFromWindowId: 0, Depth: 0};
var DropTargetsInFront = false;
var menuTabId = 0;
var CurrentWindowId = 0;
var SearchIndex = 0;
var schedule_update_data = 0;
var active_group = "tab_list";
var PickColor = "";
var opt = {};
var browserId = navigator.userAgent.match("Opera") !== null ? "O" : ( navigator.userAgent.match("Vivaldi") !== null ? "V" : (navigator.userAgent.match("Firefox") !== null ? "F" : "C" ) );
var bgtabs = {};
var bggroups = {};
var caption_clear_filter = chrome.i18n.getMessage("caption_clear_filter");
var caption_loading = chrome.i18n.getMessage("caption_loading");
var caption_searchbox = chrome.i18n.getMessage("caption_searchbox");
var caption_ungrouped_group = chrome.i18n.getMessage("caption_ungrouped_group");
var caption_noname_group = chrome.i18n.getMessage("caption_noname_group");
var DefaultToolbar =
'<div id=toolbar_main>'+
'<div class=button id=button_new><div class=button_img></div></div>'+
'<div class=button id=button_pin><div class=button_img></div></div>'+
'<div class=button id=button_undo><div class=button_img></div></div>'+
'<div class=button id=button_search><div class=button_img></div></div>'+
'<div class=button id=button_tools><div class=button_img></div></div>'+
'<div class=button id=button_groups><div class=button_img></div></div>'+
'<div class=button id=button_backup><div class=button_img></div></div>'+
// '<div class=button id=button_folders><div class=button_img></div></div>'+
'</div>'+
'<div class=toolbar_shelf id=toolbar_search>'+
'<div id=toolbar_search_input_box>'+
'<input id=filter_box type=text placeholder=Search tabs...></input>'+
'<div id=button_filter_clear style="opacity:0; position:absolute;" type=reset></div>'+
'</div>'+
'<div id=toolbar_search_buttons>'+
'<div class=button id=button_filter_type><div class=button_img></div></div>'+
'<div class=button id=filter_search_go_prev><div class=button_img></div></div>'+
'<div class=button id=filter_search_go_next><div class=button_img></div></div>'+
'</div>'+
'</div>'+
'<div class=toolbar_shelf id=toolbar_shelf_tools>'+
'<div class=button id=button_options><div class=button_img></div></div>'+
(browserId != "F" ?
'<div class=button id=button_bookmarks><div class=button_img></div></div>'+
'<div class=button id=button_downloads><div class=button_img></div></div>'+
'<div class=button id=button_history><div class=button_img></div></div>'+
'<div class=button id=button_settings><div class=button_img></div></div>'+
'<div class=button id=button_extensions><div class=button_img></div></div>'+
'<div class=button id=button_discard><div class=button_img></div></div>'
: '')+
'<div class=button id=button_move><div class=button_img></div></div>'+
'</div>'+
'<div class=toolbar_shelf id=toolbar_shelf_groups>'+
'<div class=button id=button_groups_toolbar_hide><div class=button_img></div></div>'+
'<div class=button id=button_new_group><div class=button_img></div></div>'+
'<div class=button id=button_remove_group><div class=button_img></div></div>'+
'<div class=button id=button_edit_group><div class=button_img></div></div>'+
'<div class=button id=button_import_group><div class=button_img></div></div>'+
'<div class=button id=button_export_group><div class=button_img></div></div>'+
'</div>'+
'<div class=toolbar_shelf id=toolbar_shelf_backup>'+
'<div class=button id=button_import_bak><div class=button_img></div></div>'+
'<div class=button id=button_import_merge_bak><div class=button_img></div></div>'+
'<div class=button id=button_export_bak><div class=button_img></div></div>'+
'<div class=button id=button_load_bak1><div class=button_img></div></div>'+
'<div class=button id=button_load_bak2><div class=button_img></div></div>'+
'<div class=button id=button_load_bak3><div class=button_img></div></div>'+
'</div>';
// '<div class=toolbar_shelf id=toolbar_shelf_folders>'+
// '</div>'+
var DefaultTheme = { "ToolbarShow": true, "ColorsSet": {}, "TabsSizeSetNumber": 2, "theme_name": "untitled", "theme_version": 2, "toolbar": DefaultToolbar, "unused_buttons": "" };
var DefaultPreferences = { "skip_load": false, "new_open_below": false, "pin_list_multi_row": false, "close_with_MMB": true, "always_show_close": false, "allow_pin_close": false, "append_child_tab": "bottom", "append_child_tab_after_limit": "after", "append_orphan_tab": "bottom", "after_closing_active_tab": "below", "close_other_trees": false, "promote_children": true, "open_tree_on_hover": true, "max_tree_depth": -1, "max_tree_drag_drop": true, "never_show_close": false, "switch_with_scroll": false, "syncro_tabbar_tabs_order": true };
// ******************* GLOBAL FUNCTIONS ************************
function LoadData(KeyName, ExpectReturnDefaultType) {
var data = ExpectReturnDefaultType;
try {
data = JSON.parse(localStorage[KeyName]);
return data;
} catch(e) {
return ExpectReturnDefaultType;
}
}
// generate random id
function GenerateRandomID(){
var letters = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","K","L","M","N","O","P","R","S","T","Q","U","V","W","Y","Z","a","b","c","d","e","f","g","h","i","k","l","m","n","o","p","r","s","t","q","u","v","w","y","z"];
var random = ""; for (var letter = 0; letter < 6; letter++ ) {random += letters[Math.floor(Math.random() * letters.length)];} return random;
}
// color in format "rgb(r,g,b)" or simply "r,g,b" (can have spaces, but must contain "," between values)
function RGBtoHex(color){
color = color.replace(/[rgb(]|\)|\s/g, ""); color = color.split(","); return color.map(function(v){ return ("0"+Math.min(Math.max(parseInt(v), 0), 255).toString(16)).slice(-2); }).join("");
}
function HexToRGB(hex, alpha){
hex = hex.replace('#', ''); let r = parseInt(hex.length == 3 ? hex.slice(0, 1).repeat(2) : hex.slice(0, 2), 16); let g = parseInt(hex.length == 3 ? hex.slice(1, 2).repeat(2) : hex.slice(2, 4), 16); let b = parseInt(hex.length == 3 ? hex.slice(2, 3).repeat(2) : hex.slice(4, 6), 16); if (alpha) { return 'rgba('+r+', '+g+', '+b+', '+alpha+')'; } else { return 'rgb('+r+', '+g+', '+b+')'; }
}
/* theme colors is an object with css variables (but without --), for example; {"button_background": "#f2f2f2", "filter_box_border": "#cccccc"} */
function ApplyColorsSet(ThemeColors){
let css_variables = "";
for (let css_variable in ThemeColors) {
css_variables = css_variables + "--" + css_variable + ":" + ThemeColors[css_variable] + ";";
}
for (let si = 0; si < document.styleSheets.length; si++) {
if (document.styleSheets[si].ownerNode.id == "theme_colors") {
document.styleSheets[si].deleteRule(document.styleSheets[si].cssRules.length-1);
document.styleSheets[si].insertRule("body { "+css_variables+" }", document.styleSheets[si].cssRules.length);
}
}
}
function ApplySizeSet(size){
for (let si = 0; si < document.styleSheets.length; si++) {
if ((document.styleSheets[si].ownerNode.id).match("sizes_preset") != null) {
if (document.styleSheets[si].ownerNode.id == "sizes_preset_"+size) {
document.styleSheets.item(si).disabled = false;
} else {
document.styleSheets.item(si).disabled = true;
}
}
}
if (browserId == "F") {
// I have no idea what is going on, but why top position for various things is different in firefox?????
if (size > 1) {
document.styleSheets[document.styleSheets.length-1].insertRule(".tab_header>.tab_title { margin-top: -1px; }", document.styleSheets[document.styleSheets.length-1].cssRules.length);
} else {
document.styleSheets[document.styleSheets.length-1].insertRule(".tab_header>.tab_title { margin-top: 0px; }", document.styleSheets[document.styleSheets.length-1].cssRules.length);
}
}
}
function LoadPreferences() {
var LoadedPreferences = LoadData("preferences", {});
for (var parameter in DefaultPreferences) {
opt[parameter] = DefaultPreferences[parameter];
}
for (var parameter in LoadedPreferences) {
if (opt[parameter] != undefined) {
opt[parameter] = LoadedPreferences[parameter];
}
}
}
function LoadDefaultPreferences() {
for (var parameter in DefaultPreferences) {
opt[parameter] = DefaultPreferences[parameter];
}
}
function SavePreferences() {
localStorage["preferences"] = JSON.stringify(opt);
setTimeout(function() {
chrome.runtime.sendMessage({command: "reload_options"});
},200);
}
function ShowOpenFileDialog(id, extension) {
let body = document.getElementById("body");
let inp = document.createElement("input");
inp.id = id;
inp.type = "file";
inp.accept = extension;
inp.style.display = "none";
body.appendChild(inp);
$("#"+id).click();
}
function SaveFile(filename, data) {
let d = JSON.stringify(data);
let body = document.getElementById("body");
let link = document.createElement("a");
link.target = "_self";
link.download = filename;
link.href = "data:text/csv;charset=utf-8," + encodeURIComponent(d);
body.appendChild(link);
link.click();
link.remove();
}

View File

@ -1,17 +0,0 @@
// ********** GLOBAL VARIABLES ***************
var bg;
if (navigator.userAgent.match("Firefox") !== null){
bg = browser.extension.getBackgroundPage();
} else {
bg = chrome.extension.getBackgroundPage();
}
var MouseHoverOver = "";
var DragNode;
var DropTargetsInFront = false;
var timeout = false;
var menuTabId = 0;
var CurrentWindowId = 0;
var SearchIndex = 0;
var schedule_update_data = 0;

295
scripts/groups.js Normal file
View File

@ -0,0 +1,295 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
// ********** GROUPS FUNCTIONS ***************
function AppendAllGroups() {
// var scroll = $("#group_list").scrollTop();
for (var group in bggroups) {
AppendGroupToList(bggroups[group].id, bggroups[group].name, bggroups[group].font);
}
RearrangeGroups(0);
}
function RearrangeGroups(stack) {
$(".group_button").each(function() {
if ($("#group_list").children().eq(bggroups[(this.id).substr(1)].index)[0] && $(this).index() > bggroups[(this.id).substr(1)].index) {
$(this).insertBefore($("#group_list").children().eq(bggroups[(this.id).substr(1)].index)[0]);
} else {
if ($("#group_list").children().eq(bggroups[(this.id).substr(1)].index)[0] && $(this).index() < bggroups[(this.id).substr(1)].index) {
$(this).insertAfter($("#group_list").children().eq(bggroups[(this.id).substr(1)].index)[0]);
}
}
if ($(this).index() != bggroups[(this.id).substr(1)].index && stack < 10) {
RearrangeGroups(stack+1);
}
});
}
function AppendGroupToList(groupId, group_name, font_color) {
if ($("#"+groupId).length == 0 && $("#groups")[0]) {
var grp = document.createElement("div"); grp.className = "group"; grp.id = groupId; $("#groups")[0].appendChild(grp);
}
if ($("#_"+groupId).length == 0) {
var gbn = document.createElement("div"); gbn.className = "group_button"; gbn.id = "_"+groupId; $("#group_list")[0].appendChild(gbn);
var gte = document.createElement("span"); gte.className = "group_title"; gte.id = "_gte"+groupId; gte.textContent = group_name; if (font_color != "") {gte.style.color = "#"+font_color;} gbn.appendChild(gte);
var gtd = document.createElement("div"); gtd.className = "group_drag_box"; gtd.draggable = true; gtd.id = "-"+groupId; gbn.appendChild(gtd);
}
if (groupId != active_group) {
$("#"+groupId).hide();
}
RefreshGUI();
if (opt.switch_with_scroll) {
BindTabsSwitchingToMouseWheel();
}
}
function GenerateNewGroupID(){
var newID = "g_"+GenerateRandomID();
if ($("#"+newID)[0]) {
GenerateNewGroupID();
} else {
return newID;
}
}
function AddNewGroup(p) {
var newId = GenerateNewGroupID();
bggroups[newId] = { id: newId, index: 0, activetab: 0, name: (p.name ? p.name : caption_noname_group), font: (p.font ? p.font : "") };
AppendGroupToList(newId, bggroups[newId].name, bggroups[newId].font);
UpdateBgGroupsOrder();
return newId;
// chrome.runtime.sendMessage({command: "save_groups", groups: bggroups, windowId: CurrentWindowId});
}
// function AppendTabsToGroup(p) {
// }
// remove group, delete tabs if close_tabs is true
function GroupRemove(groupId, close_tabs) {
if (close_tabs) {
CloseTabs($("#"+active_group).find(".tab").map(function() {return parseInt(this.id);}).toArray());
} else {
$("#"+groupId).children().each(function() {
$("#tab_list").append(this);
});
}
delete bggroups[groupId];
if ($("#_"+groupId).prev(".group_button")[0]) {
SetActiveGroup(($("#_"+groupId).prev(".group_button")[0].id).substr(1), true, true);
} else {
if ($("#_"+groupId).next(".group_button")[0]) {
SetActiveGroup(($("#_"+groupId).next(".group_button")[0].id).substr(1), true, true);
} else {
SetActiveGroup("tab_list", true, true);
}
}
chrome.runtime.sendMessage({command: "save_groups", groups: bggroups, windowId: CurrentWindowId});
$("#"+groupId).remove();
$("#_"+groupId).remove();
schedule_update_data++;
}
function UpdateBgGroupsOrder() {
$(".group_button").each(function() {
bggroups[(this.id).substr(1)].index = $(this).index();
});
chrome.runtime.sendMessage({command: "save_groups", groups: bggroups, windowId: CurrentWindowId});
}
function SetActiveGroup(groupId, switch_to_active_in_group, scroll_to_active) {
if ($("#"+groupId)[0] == undefined) {
return;
}
$(".group_button").removeClass("active_group");
$("#_"+groupId).addClass("active_group");
$(".tab, .group").hide();
$("#"+groupId).show();
$("#"+groupId+" .tab").show();
active_group = groupId;
RefreshGUI();
$("#group_edit").hide();
if (switch_to_active_in_group && $("#"+groupId+" .active")[0]){
chrome.tabs.update(parseInt($("#"+groupId+" .active")[0].id), {active: true});
}
if (scroll_to_active){
ScrollToTab($("#"+groupId+" .active")[0].id);
}
if (groupId == "tab_list" && $("#button_edit_group")[0]) {
$("#button_remove_group, #button_edit_group").addClass("disabled");
} else {
$("#button_remove_group, #button_edit_group").removeClass("disabled");
}
chrome.runtime.sendMessage({command: "set_active_group", active_group: groupId, windowId: CurrentWindowId});
}
function SetActiveTabInActiveGroup(tabId) {
if (bggroups[active_group] != undefined) {
bggroups[active_group].activetab = parseInt(tabId);
chrome.runtime.sendMessage({command: "save_groups", groups: bggroups, windowId: CurrentWindowId});
}
}
// direction == true goes up, false goes down
// function ScrollGroupList(direction) {
// if (direction) {
// $("#group_list").scrollTop($("#group_list").scrollTop()-3);
// }
// if (!direction) {
// $("#group_list").scrollTop($("#group_list").scrollTop()+3);
// }
// if (IOKeys.LMB) {
// setTimeout(function() { ScrollGroupList(direction); },10);
// }
// }
// function ScrollToGroup(groupId) {
// if ($("#"+groupId).offset().top-$("#group_list").offset().top < 1) {
// $("#group_list").scrollTop($("#group_list").scrollTop()+$("#"+groupId).offset().top-$("#group_list").offset().top-1);
// } else {
// if ($("#"+groupId).offset().top+$("#"+groupId).outerHeight()+1 > $("#group_list").offset().top+$("#group_list").innerHeight()) {
// $("#group_list").scrollTop($("#group_list").scrollTop()+$("#"+groupId).offset().top-$("#group_list").offset().top-$("#group_list").innerHeight()+$("#"+groupId).outerHeight()-1);
// }
// }
// }
// Edit group popup
function ShowGroupEditWindow(GroupId) {
$("#group_edit_name")[0].value = bggroups[GroupId].name;
$("#group_edit").css({"display": "block", "top": $("#toolbar_groups").offset().top + 8, "left": 22});
$("#group_edit_font").css({"background-color": bggroups[GroupId].font == "" ? "var(--button_icons, #808080)" : "#"+bggroups[GroupId].font});
}
// when pressed OK in group popup
function GroupEditConfirm() {
$("#group_edit_name")[0].value = $("#group_edit_name")[0].value.replace(/[\f\n\r\v\t\<\>\+\-\(\)\.\,\;\:\~\/\|\?\@\!\"\'\£\$\%\&\^\#\=\*\[\]]?/gi, "");
bggroups[active_group].name = $("#group_edit_name")[0].value;
bggroups[active_group].font = RGBtoHex($("#group_edit_font").css("background-color"));
$("#group_edit").hide(0);
$(".group_title#_gte" +active_group).css({"color": "#"+bggroups[active_group].font});
RefreshGUI();
chrome.runtime.sendMessage({command: "save_groups", groups: bggroups, windowId: CurrentWindowId});
}
// "Move to group" popup
// function ShowMoveToGroupWindow(x, y) {
// $(".move_to_group_menu_entry").remove();
// bggroups.forEach(function(group) {
// if (vt.ActiveGroup != group.g) {
// var li = document.createElement("li");
// li.id = "move_to_"+group.g;
// li.className = "menu_item move_to_group_menu_entry";
// li.innerHTML = group.n;
// $("#move_to_group_menu")[0].appendChild(li);
// }
// });
// if (x >= $(window).width()-$("#tabs_menu").outerWidth()) {
// x = $(window).width()-$("#tabs_menu").outerWidth();
// }
// if (y >= $(window).height()-$("#move_to_group_menu").outerHeight()-20) {
// y = $(window).height()-$("#move_to_group_menu").outerHeight();
// }
// $("#move_to_group_menu").css({"display": "block", "top": y-24, "left": x-20});
// }
// ********** GROUPS EVENTS ***************
function RestoreStateOfGroupsToolbar() {
chrome.runtime.sendMessage({command: "get_group_bar", windowId: CurrentWindowId}, function(response) {
$("#toolbar_groups").css({"display": "inline-block"});
if (response == true) {
$("#toolbar_groups").removeClass("hidden");
$("#toolbar_groups").css({"width": "19px", "border-right": "1px solid var(--group_list_borders)"});
} else {
$("#toolbar_groups").addClass("hidden");
$("#toolbar_groups").css({"width": "0px", "border-right": "none"});
}
});
}
function SetGroupEvents() {
// activate group
$(document).on("mousedown", ".group_button", function(event) {
menuGroupId = (this.id).substr(1);
if (event.button == 0) {
SetActiveGroup((this.id).substr(1), true, true);
}
});
// show/hide groups toolbar
$(document).on("mousedown", "#button_groups_toolbar_hide", function(event) {
if (event.button == 0) {
// $("#toolbar_groups").toggleClass("hidden");
$("#toolbar_groups").toggleClass("hidden");
if ($("#toolbar_groups").is(".hidden")) {
$("#toolbar_groups").css({"width": "0px", "border-right": "none"});
chrome.runtime.sendMessage({command: "set_group_bar", group_bar: false, windowId: CurrentWindowId});
} else {
$("#toolbar_groups").css({"width": "19px", "border-right": "1px solid var(--group_list_borders)"});
chrome.runtime.sendMessage({command: "set_group_bar", group_bar: true, windowId: CurrentWindowId});
}
RefreshGUI();
}
});
// edit group dialog box
$(document).on("mousedown", "#group_edit_discard", function(event) {
$("#group_edit").hide(0);
});
$("#group_edit_name").keyup(function(e) {
if (e.keyCode == 13) {
GroupEditConfirm();
}
});
$(document).on("mousedown", "#group_edit_confirm", function(event) {
GroupEditConfirm();
});
// show color picker
$(document).on("mousedown", "#group_edit_font, #group_edit_background", function(event) {
event.stopPropagation();
PickColor = this.id;
$("#color_picker")[0].value = "#"+RGBtoHex($(this).css("background-color"));
$("#color_picker").focus();
$("#color_picker").click();
});
$(document).on("input", "#color_picker", function(event) {
$("#"+PickColor).css({"background-color": $("#color_picker")[0].value});
});
// scroll groups
// $(document).on("mousedown", "#scroll_group_up, #scroll_group_down", function(event) {
// IOKeys.LMB = true;
// ScrollGroupList($(this).is("#scroll_group_up"));
// });
// $(document).on("mouseleave", "#scroll_group_up, #scroll_group_down", function(event) {
// IOKeys.LMB = false;
// });
// remove tabs from group button
// $(document).on("mousedown", "#remove_tabs_from_group", function(event) {
// if (event.button == 0 && vt.ActiveGroup.match("at|ut") == null) {
// AppendTabsToGroup({tabsIds: $(".tab.selected:visible").map(function() {return parseInt(this.id);}).toArray(), groupId: "ut", SwitchTabIfHasActive: true, insertAfter: true, moveTabs: true});
// }
// });
// remove group
// $(document).on("mousedown", ".group", function(event) {
// if (event.button == 1 || IOKeys.Shift) {
// if (IOKeys.Shift) {
// GroupRemove($(this)[0].id, true);
// } else {
// GroupRemove($(this)[0].id, false);
// }
// }
// });
}

View File

@ -1,18 +1,19 @@
// ********** TABS MENU ***************
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
// ********** MENU ***************
function SetMenu() {
// set menu labels
$(".menu_item").each(function() {
$(this).text(chrome.i18n.getMessage(this.id));
});
// trigger action when the contexmenu is about to be shown
$(document).bind("contextmenu", function(event) {
event.preventDefault();
if (!event.ctrlKey) {
event.preventDefault();
}
});
// show menu
$(document).on("mousedown", "#pin_list, #tab_list, .tab, .pin", function(event) {
$(document).on("mousedown", "#groups, .tab, .pin", function(event) {
event.stopPropagation();
if (event.button == 2) {
$(".menu").hide(0);
@ -20,7 +21,13 @@ function SetMenu() {
if ($(this).is(".tab, .pin")) {
menuTabId = parseInt($(this)[0].id);
} else {
menuTabId = parseInt($(".active")[0].id);
if ($(".active:visible")[0]) {
menuTabId = parseInt($(".active:visible")[0].id);
} else {
if ($(".active")[0]) {
menuTabId = parseInt($(".active")[0].id);
}
}
}
if ($("#" + menuTabId).is(".pin")) {
$("#tabs_menu_pin").text(chrome.i18n.getMessage("tabs_menu_unpin"));
@ -30,7 +37,7 @@ function SetMenu() {
$("#tabs_menu_expand_all, #tabs_menu_collapse_all").css({ "display": "none" });
$("#tabs_menu_collapse_all").next().css({ "display": "none" });
if (!bg.opt.allow_pin_close) {
if (!opt.allow_pin_close) {
$("#tabs_menu_close").css({ "display": "none" });
}
} else {
@ -57,10 +64,6 @@ function SetMenu() {
$("#tabs_menu_unmute").css({ "display": "none" });
}
// APPEND TABS TO BG.DATA ARRAY
bg.dt.tabsIds = $("#" + menuTabId).is(".selected") ? $(".tab.selected:visible").map(function() { return parseInt(this.id); }).toArray() : [menuTabId];
// show contextmenu with correct size position
if ($("#tabs_menu").outerWidth() > $(window).width() - 10) {
$("#tabs_menu").css({ "width": $(window).width() - 10 });
@ -73,17 +76,6 @@ function SetMenu() {
}
});
// hide menu
$(document).on("mousedown", "body", function(event) {
if (event.button != 2) {
$(".menu").hide(300);
}
});
$(document).on("mouseleave", "body", function(event) {
$(".menu").hide(300);
});
// if the menu element is clicked
$(document).on("mousedown", "#tabs_menu li", function(event) {
if (event.button != 0) {
@ -132,12 +124,16 @@ function SetMenu() {
if ($("#" + menuTabId).is(".selected")) {
$(".selected:visible").each(function() {
chrome.tabs.get(parseInt(this.id), function(tab) {
chrome.tabs.update(tab.id, { muted: true });
if (tab) {
chrome.tabs.update(tab.id, { muted: true });
}
});
});
} else {
chrome.tabs.get(menuTabId, function(tab) {
chrome.tabs.update(tab.id, { muted: true });
if (tab) {
chrome.tabs.update(tab.id, { muted: true });
}
});
}
break;
@ -145,7 +141,9 @@ function SetMenu() {
if ($("#" + menuTabId).is(".selected")) {
$(".selected:visible").each(function() {
chrome.tabs.get(parseInt(this.id), function(tab) {
chrome.tabs.update(tab.id, { muted: false });
if (tab) {
chrome.tabs.update(tab.id, { muted: false });
}
});
});
} else {
@ -194,7 +192,7 @@ function SetMenu() {
});
break;
case "tab_discard":
DiscardTabs(bg.dt.tabsIds);
DiscardTabs($("#" + menuTabId).is(".selected") ? $(".tab.selected:visible").map(function() { return parseInt(this.id); }).toArray() : [menuTabId]);
break;
case "tab_settings":
chrome.tabs.create({ "url": "options.html" });
@ -210,4 +208,25 @@ function SetMenu() {
}
$(".menu").hide(0);
});
// move tabs to group
// $(document).on("mousedown", "#tabs_menu_move_to_new_group, .move_to_group_menu_entry", function(event) {
// var tabsIds
// if ($(this).is("#tabs_menu_move_to_new_group")) {
// bg.dt.DropToGroup = AddNewGroup(575757);
// GetColorFromMiddlePixel(vt.menuTabId, bg.dt.DropToGroup);
// } else {
// bg.dt.DropToGroup = this.id.substr(8);
// }
// AppendTabsToGroup({tabsIds: DragAndDrop.tabsIds, groupId: bg.dt.DropToGroup, SwitchTabIfHasActive: true, insertAfter: true, RemoveClass: "selected", moveTabs: true});
// });
}

177
scripts/refresh.js Normal file
View File

@ -0,0 +1,177 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
// ********** REFRESH GUI ***************
function SetTRefreshEvents() {
$(window).on("resize", function(event) {
RefreshGUI();
});
// click on media icon
$(document).on("mousedown", ".tab_mediaicon", function(event) {
event.stopPropagation();
if (event.button == 0 && $(this).parent().parent().is(".audible, .muted")) {
chrome.tabs.get(parseInt(this.parentNode.parentNode.id), function(tab) {
if (tab) {
chrome.tabs.update(tab.id, {muted:!tab.mutedInfo.muted});
}
});
}
});
}
function RefreshGUI() {
if ($("#toolbar").children().length > 0) {
$("#toolbar").css({ "height": "", "width": "", "display": "", "padding": "", "border": "" });
if ($(".button").is(".on")) {
$("#toolbar").css({ "height": 53 });
} else {
$("#toolbar").css({ "height": 26 });
}
} else {
$("#toolbar").css({ "height": 0, "width": "0px", "display": "none", "padding": "0", "border": "none" });
}
if ($("#pin_list").children().length > 0) {
$("#pin_list").css({ "top": $("#toolbar")[0].getBoundingClientRect().height, "height": "", "width":"", "display": "", "padding": "", "border": "" });
} else {
$("#pin_list").css({ "height": "0px", "width": "0px", "display": "none", "padding": "0", "border": "none" });
}
$("#toolbar_groups").css({ "top": $("#toolbar").outerHeight() + $("#pin_list")[0].getBoundingClientRect().height, "height": $(window).height() - $("#toolbar").outerHeight() - $("#pin_list")[0].getBoundingClientRect().height});
$(".group_title").each(function(){
$(this)[0].innerText = (bggroups[(this.id).substr(4)] ? bggroups[(this.id).substr(4)].name : caption_noname_group) + " (" + $("#" + (this.id).substr(4) ).children().length + ")";
});
$("#_gtetab_list")[0].innerText = caption_ungrouped_group + " (" + $("#tab_list").children().length + ")";
$(".group_button").each(function(){
$(this).css({ "height": $(this).children(0).innerWidth() });
});
$("#groups").css({ "top": $("#toolbar")[0].getBoundingClientRect().height + $("#pin_list")[0].getBoundingClientRect().height, "left": $("#toolbar_groups").outerWidth(), "height": $(window).height() - $("#pin_list")[0].getBoundingClientRect().height - $("#toolbar").outerHeight(), "width": $(window).width() - $("#toolbar_groups").outerWidth() });
}
// set discarded class
function RefreshDiscarded(tabId) {
if ($("#" + tabId).length > 0) {
chrome.tabs.get(parseInt(tabId), function(tab) {
if (tab) {
if (tab.discarded) {
$("#" + tabId).addClass("discarded");
} else {
$("#" + tabId).removeClass("discarded");
}
}
});
}
}
// set discarded class
function SetAttentionIcon(tabId) {
if ($("#" + tabId).length > 0) {
$("#" + tabId).addClass("attention");
}
}
// change media icon
function RefreshMediaIcon(tabId) {
if ($("#" + tabId).length > 0) {
chrome.tabs.get(parseInt(tabId), function(tab) {
if (tab) {
if (tab.mutedInfo.muted) {
$("#" + tabId).removeClass("audible").addClass("muted");
}
if (!tab.mutedInfo.muted && tab.audible) {
$("#" + tabId).removeClass("muted").addClass("audible");
}
if (!tab.mutedInfo.muted && !tab.audible) {
$("#" + tabId).removeClass("audible").removeClass("muted");
}
}
});
}
}
// Vivaldi does not have changeInfo.audible listener, this is my own implementation, hopefully this will not affect performance too much
function VivaldiRefreshMediaIcons() {
chrome.tabs.query({currentWindow: true}, function(tabs) {
$(".audible, .muted").removeClass("audible").removeClass("muted");
let tc = tabs.length;
for (var ti = 0; ti < tc; ti++) {
if (tabs[ti].audible) {
$("#" + tabs[ti].id).addClass("audible");
}
if (tabs[ti].mutedInfo.muted) {
$("#" + tabs[ti].id).addClass("muted");
}
}
});
setTimeout(function() {
VivaldiRefreshMediaIcons();
}, 1400);
}
function GetFaviconAndTitle(tabId) {
if ($("#" + tabId)[0]) {
chrome.tabs.get(parseInt(tabId), function(tab) {
if (tab){
var title = tab.title ? tab.title : tab.url;
if (tab.status == "complete") {
$("#" + tabId).removeClass("loading");
// change title
$("#tab_title" + tab.id)[0].textContent = title;
$("#tab_header" + tab.id).attr("title", title);
// compatibility with various Tab suspender extensions
if (tab.favIconUrl != undefined && tab.favIconUrl.match("data:image/png;base64") != null) {
$("#tab_header" + tab.id).css({ "background-image": "url(" + tab.favIconUrl + ")" });
} else {
// case for internal pages, favicons don't have access, but can be loaded from url
if (tab.url.match("opera://|vivaldi://|browser://|chrome://|chrome-extension://|about:") != null) {
$("#tab_header" + tab.id).css({ "background-image": "url(chrome://favicon/" + tab.url + ")" });
} else {
// change favicon
var img = new Image();
img.src = tab.favIconUrl;
img.onload = function() {
$("#tab_header" + tab.id).css({ "background-image": "url(" + tab.favIconUrl + ")" });
};
img.onerror = function() {
$("#tab_header" + tab.id).css({ "background-image": "url(chrome://favicon/" + tab.url + ")" });
}
}
}
}
if (tab.status == "loading") {
$("#tab_header" + tab.id).css({ "background-image": "" });
$("#" + tabId).addClass("loading");
title = tab.title ? tab.title : caption_loading;
$("#tab_title" + tab.id)[0].textContent = title;
$("#tab_header" + tab.id).attr("title", title);
setTimeout(function() {
if ($("#" + tabId)[0]) GetFaviconAndTitle(tabId);
}, 1000);
}
}
});
}
}
// refresh open closed trees states
function RefreshExpandStates() {
$(".children").each(function() {
if ($(this).children().length > 0) {
$(this).parent().removeClass("n");
if ($(this).parent().is(":not(.o, .c)")) {
$(this).parent().addClass("o");
}
} else {
$(this).parent().removeClass("o").removeClass("c").addClass("n");
}
});
}

View File

@ -1,319 +1,509 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
// ********** TABS FUNCTIONS ***************
function UpdateData(){
setTimeout(function(){
// changed it from 1 to 2 if there are some more changes queued, just in case if something did not catch in the first loop
if (schedule_update_data > 1){
schedule_update_data = 2;
}
if (schedule_update_data > 0){
$(".pin").each(function(){
if (bg.tabs[this.id]){
bg.tabs[this.id].p = "pin_list";
bg.tabs[this.id].n = $(this).index();
bg.tabs[this.id].o = "n";
}
});
$(".tab").each(function(){
if (bg.tabs[this.id]){
bg.tabs[this.id].n = $(this).index();
if ($(this).parent().parent()[0].id){
bg.tabs[this.id].p = $(this).parent().parent()[0].id;
} else {
bg.tabs[this.id].p = "tab_list";
async function UpdateData() {
setTimeout(function() {
if (schedule_update_data > 1) {schedule_update_data = 1;}
if (schedule_update_data > 0) {
$(".pin").each(function() {
chrome.runtime.sendMessage({
command: "update_tab",
tabId: parseInt(this.id),
tab: {
parent: "pin_list",
index: $(this).index(),
expand: "n"
}
if ($(this).is(".n")){
bg.tabs[this.id].o = "n";
} else {
if ($(this).is(".c")){
bg.tabs[this.id].o = "c";
} else {
bg.tabs[this.id].o = "o";
}
}
}
});
});
$(".tab").each(function() {
chrome.runtime.sendMessage({
command: "update_tab",
tabId: parseInt(this.id),
tab: {
parent: $(this).parent(".group")[0] ? $(this).parent()[0].id : $(this).parent().parent(".tab, .folder")[0].id,
index: $(this).index(),
expand: ($(this).is(".n") ? "n" : ($(this).is(".c") ? "c" : "o"))
}
});
});
bg.schedule_save++;
schedule_update_data--;
} else {
}
UpdateData();
},2000);
},1000);
}
function AppendTab(p){
if ($("#"+p.tab.id).length > 0){
GetFaviconAndTitle(p.tab.id);
function RearrangeBrowserTabsCheck() {
setTimeout(function() {
RearrangeBrowserTabsCheck();
if (opt.syncro_tabbar_tabs_order) {
if (schedule_rearrange_tabs > 1) {schedule_rearrange_tabs = 1;}
if (schedule_rearrange_tabs > 0) {
let tabIds = $(".pin, .tab").map(function(){return parseInt(this.id);}).toArray();
RearrangeBrowserTabs(tabIds, tabIds.length-1);
schedule_rearrange_tabs--;
}
}
},1000);
}
async function RearrangeBrowserTabs(tabIds, tabIndex) {
if (tabIndex > 0){
chrome.tabs.get(tabIds[tabIndex], function(tab) {
if (tab && tabIndex != tab.index) {
chrome.tabs.move(tabIds[tabIndex], {index: tabIndex});
}
RearrangeBrowserTabs( tabIds, (tabIndex-1) );
});
}
}
function RearrangeTreeTabs(tabs, bgtabs, first_run) {
tabs.forEach(function(Tab) {
if (bgtabs[Tab.id] && $("#"+Tab.id)[0] && $("#"+Tab.id).parent().children().eq(bgtabs[Tab.id].index)[0]) {
if ($("#"+Tab.id).index() > bgtabs[Tab.id].index) {
$("#"+Tab.id).insertBefore($("#"+Tab.id).parent().children().eq(bgtabs[Tab.id].index));
} else {
$("#"+Tab.id).insertAfter($("#"+Tab.id).parent().children().eq(bgtabs[Tab.id].index));
}
}
if (bgtabs[Tab.id] && $("#"+Tab.id).index() != bgtabs[Tab.id].index && first_run) {
RearrangeTreeTabs(tabs, bgtabs, false);
}
});
}
// param - tuple object with paramenters: param.tab - tab object, param.ParentId - Parent tabId, param.InsertAfterId - insert tab after this tabId (on same level),
// param.Append - if true Appends tab at the end of tree if false or prepends
function AppendTab(param) {
if ($("#"+param.tab.id).length > 0) {
GetFaviconAndTitle(param.tab.id);
return;
}
var div_tab = document.createElement("div");
div_tab.id = p.tab.id;
div_tab.className = p.tab.pinned ? "pin" : "tab n";
div_tab.innerHTML =
"<div class='drop_target drag_enter_center' id=dc"+p.tab.id+"></div>"+
"<div class='drop_target drag_entered_top' id=du"+p.tab.id+"></div>"+
"<div class='drop_target drag_entered_bottom' id=dd"+p.tab.id+"></div>"+
"<div class=expand id=exp"+p.tab.id+">"+
"<div class=exp_line_v id=exp_line_v"+p.tab.id+"></div>"+
"<div class=exp_line_h id=exp_line_h"+p.tab.id+"></div>"+
"<div class=exp_box id=exp_box"+p.tab.id+"></div>"+
"</div>"+
"<div class=tab_header id=tab_header"+p.tab.id+" draggable=true>"+
"<div class=tab_title id=tab_title"+p.tab.id+"></div>"+
(bg.opt.never_show_close ? "" :
("<div class=close id=close"+p.tab.id+"><div class=close_img id=close_img"+p.tab.id+"></div></div>")
)+
"<div class=tab_mediaicon id=tab_mediaicon"+p.tab.id+"></div>"+
"</div>"+
"<div class=children id=ch"+p.tab.id+"></div>";
var ClassList = param.tab.pinned ? "pin" : "tab n";
if (param.tab.discarded) {
ClassList = ClassList + " discarded";
}
if (param.AdditionalClass) {
ClassList = ClassList +" "+ param.AdditionalClass;
}
var tb = document.createElement("div"); tb.className = ClassList; tb.id = param.tab.id; // TAB
var dc = document.createElement("div"); dc.className = "drop_target drag_enter_center"; dc.id = "dc"+param.tab.id; tb.appendChild(dc); // DROP TARGET CENTER
var dt = document.createElement("div"); dt.className = "drop_target drag_entered_top"; dt.id = "du"+param.tab.id; tb.appendChild(dt); // DROP TARGET TOP
var db = document.createElement("div"); db.className = "drop_target drag_entered_bottom"; db.id = "dd"+param.tab.id; tb.appendChild(db); // DROP TARGET BOTTOM
var th = document.createElement("div"); th.className = opt.always_show_close ? "tab_header close_show" : "tab_header"; th.id = "tab_header"+param.tab.id; th.draggable = true; tb.appendChild(th); // HEADER
var ex = document.createElement("div"); ex.className = "expand"; ex.id = "exp"+param.tab.id; th.appendChild(ex); // EXPAND ARROW
var tt = document.createElement("div"); tt.className = "tab_title"; tt.id = "tab_title"+param.tab.id; th.appendChild(tt); // TITLE
if (($("#"+p.InsertAfterId).is(".pin") && p.tab.pinned) || ($("#"+p.InsertAfterId).is(".tab") && !p.tab.pinned)){
$("#"+p.InsertAfterId).parent()[0].append(div_tab);
$("#"+p.tab.id).insertAfter($("#"+p.InsertAfterId));
p.ParentId = undefined;
if (!opt.never_show_close) {
var cl = document.createElement("div"); cl.className = "close"; cl.id = "close"+param.tab.id; th.appendChild(cl); // CLOSE BUTTON
var ci = document.createElement("div"); ci.className = "close_img"; ci.id = "close_img"+param.tab.id; cl.appendChild(ci);
}
var mi = document.createElement("div"); mi.className = "tab_mediaicon"; mi.id = "tab_mediaicon"+param.tab.id; th.appendChild(mi);
var ch = document.createElement("div"); ch.className = "children"; ch.id = "ch"+param.tab.id; tb.appendChild(ch);
if (param.tab.pinned) {
param.ParentId = "pin_list";
} else {
p.InsertAfterId = undefined;
if (param.ParentId == undefined || $("#"+param.ParentId).is(".pin, #pin_list") || $("#"+param.ParentId).length == 0) {
param.ParentId = active_group;
} else {
if($("#"+param.ParentId).is(".tab")) {
if ($("#ch"+param.ParentId).children().length == 0) {
$("#"+param.ParentId).addClass("o").removeClass("n").removeClass("c");
}
param.ParentId = "ch"+param.ParentId;
}
}
}
if (param.Append) {
$("#"+param.ParentId).append(tb);
}
if ($("#"+p.ParentId).length > 0 && $("#"+p.ParentId).is(".tab") && !p.tab.pinned){
if ($("#ch"+p.ParentId).children().length == 0){
$("#"+p.ParentId).addClass("o").removeClass("n").removeClass("c");
}
if (p.Append){
$("#ch"+p.ParentId).append(div_tab);
}
if (!p.Append){
$("#ch"+p.ParentId).prepend(div_tab);
}
} else {
p.ParentId = undefined;
if (!param.Append) {
$("#"+param.ParentId).prepend(tb);
}
if (p.InsertAfterId == undefined && p.ParentId == undefined){
if (p.Append){
$(p.tab.pinned ? "#pin_list" : "#tab_list").append(div_tab);
}
if (!p.Append){
$(p.tab.pinned ? "#pin_list" : "#tab_list").prepend(div_tab);
if (param.InsertBeforeId != undefined && $("#"+param.InsertBeforeId)[0]) {
if ((param.tab.pinned && $("#"+param.InsertBeforeId).is(".pin")) || (!param.tab.pinned && $("#"+param.InsertBeforeId).is(".tab"))) {
$("#"+param.tab.id).insertBefore($("#"+param.InsertBeforeId));
}
}
if (bg.opt.always_show_close){
$("#tab_header"+p.tab.id).addClass("close_show");
}
GetFaviconAndTitle(p.tab.id);
RefreshMediaIcon(p.tab.id);
if (p.tab.discarded){
$("#"+p.tab.id).addClass("discarded");
if (param.InsertAfterId != undefined && $("#"+param.InsertAfterId)[0]) {
if ((param.tab.pinned && $("#"+param.InsertAfterId).is(".pin")) || (!param.tab.pinned && $("#"+param.InsertAfterId).is(".tab"))) {
$("#"+param.tab.id).insertAfter($("#"+param.InsertAfterId));
}
}
if (p.tab.active){
SetActiveTab(p.tab.id);
GetFaviconAndTitle(param.tab.id);
RefreshMediaIcon(param.tab.id);
if (param.tab.active && param.SkipSetActive == undefined) {
SetActiveTab(param.tab.id);
}
if (param.Scroll) {
ScrollToTab(param.tab.id);
}
}
function RemoveTabFromList(tabId){
if ($("#"+tabId).length > 0){
function RemoveTabFromList(tabId) {
if ($("#"+tabId)[0]) {
$("#"+tabId).remove();
}
}
function SetTabClass(p){
if (p.pin){
$("#pin_list").append($("#"+p.id));
// param - tuple object with paramenters: param.pin - true for pinned, param.id - tabId
function SetTabClass(param) {
if (param.pin) {
$("#pin_list").append($("#"+param.id));
// flatten out children
if ($("#ch"+p.id).children().length > 0){
$($("#"+p.id).children().find(".pin, .tab").get().reverse()).each(function(){
if ($("#ch"+param.id).children().length > 0) {
$($("#"+param.id).children().find(".pin, .tab").get().reverse()).each(function() {
$(this).removeClass("tab").removeClass("n").removeClass("o").removeClass("c").addClass("pin");
$(this).insertAfter($("#"+p.id));
$(this).insertAfter($("#"+param.id));
chrome.tabs.update(parseInt(this.id), {pinned: true});
});
}
$("#"+p.id).removeClass("tab").removeClass("n").removeClass("o").removeClass("c").addClass("pin");
$("#"+param.id).removeClass("tab").removeClass("n").removeClass("o").removeClass("c").addClass("pin");
} else {
$("#tab_list").prepend($("#"+p.id));
$("#"+p.id).removeClass("pin").addClass("tab");
$("#"+active_group).prepend($("#"+param.id));
$("#"+param.id).removeClass("pin").removeClass("attention").addClass("tab");
RefreshExpandStates();
}
chrome.tabs.update(parseInt(p.id), {pinned: p.pin});
chrome.tabs.update(parseInt(param.id), {pinned: param.pin});
RefreshGUI();
}
function SetActiveTab(tabId){
if ($("#"+tabId).length > 0){
$(".active").removeClass("active").removeClass("selected");
$(".pin, .tab").removeClass("active").removeClass("selected").removeClass("frozen").removeClass("temporary").removeClass("tab_header_hover");
function SetActiveTab(tabId) {
if ($("#"+tabId).length > 0) {
$(".active:visible").removeClass("active").removeClass("selected");
$(".pin, .tab:visible").removeClass("active").removeClass("selected").removeClass("selected_frozen").removeClass("selected_temporarly").removeClass("tab_header_hover");
$(".highlighted_drop_target").removeClass("highlighted_drop_target");
$("#"+tabId).addClass("active").addClass("selected");
$("#"+tabId).removeClass("attention").addClass("active")/* .addClass("selected") */;
ScrollToTab(tabId);
SetActiveTabInActiveGroup(tabId);
}
}
function ScrollToTab(tabId){
if ($("#"+tabId).length == 0){
function ScrollToTab(tabId) {
if ($("#"+tabId).length == 0) {
return false;
}
if ($("#"+tabId).is(":not(:visible)")){
if ($("#"+tabId).is(":not(:visible)")) {
$("#"+tabId).parents(".tab").removeClass("c").addClass("o");
}
if ($("#"+tabId).is(".pin")){
if ($("#"+tabId).position().left+$("#"+tabId).outerWidth() > $("#pin_list").innerWidth()){
if ($("#"+tabId).is(".pin")) {
if ($("#"+tabId).position().left+$("#"+tabId).outerWidth() > $("#pin_list").innerWidth()) {
$("#pin_list").scrollLeft($("#pin_list").scrollLeft()+$("#"+tabId).position().left+$("#"+tabId).outerWidth()-$("#pin_list").innerWidth());
} else {
if ($("#"+tabId).position().left < 0){
if ($("#"+tabId).position().left < 0) {
$("#pin_list").scrollLeft($("#pin_list").scrollLeft()+$("#"+tabId).position().left);
}
}
}
if ($("#"+tabId).is(".tab")){
if ($("#"+tabId).offset().top - $("#tab_list").offset().top < 0){
$("#tab_list").scrollTop($("#tab_list").scrollTop() + $("#"+tabId).offset().top - $("#tab_list").offset().top);
if ($("#"+tabId).is(".tab")) {
if ($("#"+tabId).offset().top - $("#"+active_group).offset().top < 0) {
$("#"+active_group).scrollTop($("#"+active_group).scrollTop() + $("#"+tabId).offset().top - $("#"+active_group).offset().top);
} else {
if ($("#"+tabId).offset().top - $("#tab_list").offset().top > $("#tab_list").innerHeight() - $(".tab_header").outerHeight()){
$("#tab_list").scrollTop($("#tab_list").scrollTop() + $("#"+tabId).offset().top - $("#tab_list").offset().top - $("#tab_list").innerHeight() + $(".tab_header").outerHeight() + 4);
if ($("#"+tabId).offset().top - $("#"+active_group).offset().top > $("#"+active_group).innerHeight() - $(".tab_header").outerHeight()) {
$("#"+active_group).scrollTop($("#"+active_group).scrollTop() + $("#"+tabId).offset().top - $("#"+active_group).offset().top - $("#"+active_group).innerHeight() + $(".tab_header").outerHeight() + 4);
}
}
}
}
function DetachTabs(tabsIds){
chrome.windows.get(CurrentWindowId, {populate : true}, function(window){
if (window.tabs.length == 1){
function DetachTabs(tabsIds) {
chrome.windows.get(CurrentWindowId, {populate : true}, function(window) {
if (window.tabs.length == 1) {
return;
}
chrome.windows.create({state:window.state}, function(new_window){
chrome.tabs.move(tabsIds[0], {windowId: new_window.id, index:-1});
chrome.tabs.remove(new_window.tabs[0].id, null);
for (var i = 1; i < tabsIds.length; i++){
chrome.tabs.move(tabsIds[i], {windowId: new_window.id, index:-1});
}
chrome.windows.create({tabId: tabsIds[0], state:window.state}, function(new_window) {
(tabsIds).forEach(function(tabId) {
chrome.tabs.move(tabId, {windowId: new_window.id, index:-1});
});
})
});
}
// find and select tabs
function FindTab(input){
function FindTab(input) {
$(".filtered").removeClass("filtered").removeClass("selected");
$(".highlighted_search").removeClass("highlighted_search");
if (input.length == 0){
if (input.length == 0) {
$("#filter_box")[0].value = "";
$("#button_filter_clear").css({"opacity": "0"}).attr("title", "");
return;
} else {
$("#button_filter_clear").css({"opacity": "1"});
$("#button_filter_clear").attr("title", caption_clear_filter);
}
SearchIndex = 0;
chrome.tabs.query({windowId: CurrentWindowId, pinned: false}, function(tabs){
tabs.forEach(function(Tab){
if (bg.opt_toolbar.filter_type == "url" && Tab.url.toLowerCase().match(input.toLowerCase())){
chrome.tabs.query({windowId: CurrentWindowId, pinned: false}, function(tabs) {
tabs.forEach(function(Tab) {
if ($("#button_filter_type").is(".url") && Tab.url.toLowerCase().match(input.toLowerCase())) {
$("#"+Tab.id).addClass("filtered").addClass("selected");
}
if (bg.opt_toolbar.filter_type == "title" && Tab.title.toLowerCase().match(input.toLowerCase())){
if ($("#button_filter_type").is(".title") && Tab.title.toLowerCase().match(input.toLowerCase())) {
$("#"+Tab.id).addClass("filtered").addClass("selected");
}
});
});
}
function CloseTabs(tabsIds){
function CloseTabs(tabsIds) {
tabsIds.forEach(function(tabId) {
if ($("#"+tabId).is(".pin") && bg.opt.allow_pin_close){
if ($("#"+tabId).is(".pin") && opt.allow_pin_close) {
$("#"+tabId).remove();
chrome.tabs.update(tabId, {pinned: false});
}
if ($("#"+tabId).is(".tab")){
if ($("#"+tabId).is(".tab")) {
$("#"+tabId).remove();
}
});
setTimeout(function(){
setTimeout(function() {
chrome.tabs.remove(tabsIds, null);
},100);
}
function DiscardTabs(tabsIds){
function DiscardTabs(tabsIds) {
var delay = 400;
if ($("#"+tabsIds[0]).is(".discarded")){
if ($("#"+tabsIds[0]).is(".discarded")) {
delay = 5;
} else {
chrome.tabs.discard(tabsIds[0]);
}
tabsIds.splice(0, 1);
if (tabsIds.length > 0){
setTimeout(function(){
if (tabsIds.length > 0) {
setTimeout(function() {
DiscardTabs(tabsIds);
},delay);
}
}
function ActivateNextTab(){
if ($(".active").is(".pin")){
if ($(".active").next()[0]){
chrome.tabs.update(parseInt($(".active").next()[0].id), { active: true });
function ActivateNextTab() {
if ($(".pin.active:visible")[0]) {
if ($(".pin.active").next(".pin")[0]) {
chrome.tabs.update(parseInt($(".pin.active").next(".pin")[0].id), { active: true });
}
}
if ($(".active").is(".tab")){
if ($(".active").children().last().children()[0]){
chrome.tabs.update(parseInt($(".active").children().last().children()[0].id), { active: true });
if ($(".tab.active:visible")[0]) {
if ($(".active:visible").children().last().children(".tab")[0]) {
chrome.tabs.update(parseInt($(".active:visible").children().last().children(".tab")[0].id), { active: true });
} else {
if ($(".active").next()[0]){
chrome.tabs.update(parseInt($(".active").next()[0].id), { active: true });
if ($(".active:visible").next(".tab")[0]) {
chrome.tabs.update(parseInt($(".active:visible").next(".tab")[0].id), { active: true });
} else {
if ($(".active").parent().parent().next().is(".tab")){
chrome.tabs.update(parseInt($(".active").parent().parent().next()[0].id), { active: true });
if ($(".active:visible").parent().parent().next(".tab")[0]) {
chrome.tabs.update(parseInt($(".active:visible").parent().parent().next(".tab")[0].id), { active: true });
} else {
if ($(".active").parents(".tab").eq(-2).next().is(".tab")){
chrome.tabs.update(parseInt($(".active").parents(".tab").eq(-2).next()[0].id), { active: true });
if ($(".active:visible").parents(".tab").last().next(".tab")[0]) {
chrome.tabs.update(parseInt($(".active:visible").parents(".tab").last().next(".tab")[0].id), { active: true });
}
}
}
}
}
}
function ActivatePrevTab(){
if ($(".active").is(".pin")){
if ($(".active").prev()[0]){
chrome.tabs.update(parseInt($(".active").prev()[0].id), { active: true });
function ActivatePrevTab() {
if ($(".pin.active")[0]) {
if ($(".pin.active").prev(".pin")[0]) {
chrome.tabs.update(parseInt($(".pin.active").prev(".pin")[0].id), { active: true });
}
}
if ($(".active").is(".tab")){
if ($(".active").prev().find(".tab").length > 0){
chrome.tabs.update(parseInt($(".active").prev().find(".tab").last()[0].id), { active: true });
if ($(".tab.active:visible")[0]) {
if ($(".active:visible").prev().find(".tab").length > 0) {
chrome.tabs.update(parseInt($(".active:visible").prev().find(".tab").last()[0].id), { active: true });
} else {
if ($(".active").prev()[0]){
chrome.tabs.update(parseInt($(".active").prev()[0].id), { active: true });
if ($(".active:visible").prev(".tab")[0]) {
chrome.tabs.update(parseInt($(".active:visible").prev(".tab")[0].id), { active: true });
} else {
if ($(".active").parent().is(".children")){
chrome.tabs.update(parseInt($(".active").parent().parent()[0].id), { active: true });
if ($(".tab.active:visible").parent().is(".children") && $(".tab.active:visible").parent().parent(".tab")[0]) {
chrome.tabs.update(parseInt($(".tab.active:visible").parent().parent(".tab")[0].id), { active: true });
}
}
}
}
}
function DropTargetsSendToFront(){
if (DropTargetsInFront == false){
function DropTargetsSendToFront() {
if (DropTargetsInFront == false) {
$(".drop_target").show();
DropTargetsInFront = true;
}
}
function DropTargetsSendToBack(){
if (DropTargetsInFront){
function DropTargetsSendToBack() {
if (DropTargetsInFront) {
$(".drop_target").hide();
DropTargetsInFront = false;
}
}
// ********** TABS EVENTS ***************
function SetTabEvents() {
// double click to create tab
$(document).on("dblclick", ".group, #pin_list, .tab", function(event) {
if (event.button == 0 && $(event.target).is(this)) {
if (event.target.id == "pin_list") {
chrome.tabs.create({ pinned: true });
} else {
chrome.tabs.create({});
}
}
});
$(document).on("mouseenter", ".close", function(event) {
$(this).addClass("close_hover");
});
$(document).on("mouseleave", ".close", function(event) {
$(".close_hover").removeClass("close_hover");
});
$(document).on("mouseenter", ".expand", function(event) {
$(this).addClass("hover");
});
$(document).on("mouseleave", ".expand", function(event) {
$(".expand.hover").removeClass("hover");
});
$(document).on("mouseover", ".tab_header", function(event) {
$(this).addClass("tab_header_hover");
if (opt.always_show_close == false) {
$(this).addClass("close_show");
}
});
$(document).on("mouseleave", ".tab_header", function(event) {
$(this).removeClass("tab_header_hover");
if (opt.always_show_close == false) {
$(this).removeClass("close_show");
}
});
// EXPAND BOX - EXPAND / COLLAPSE
$(document).on("mousedown", ".expand", function(event) {
event.stopPropagation();
if (event.button == 0) {
if ($(this).parent().parent().is(".o")) {
$(this).parent().parent().removeClass("o").addClass("c");
chrome.runtime.sendMessage({ command: "update_tab", tabId: parseInt($(this).parent().parent()[0].id), tab: { expand: "c" } });
} else {
if ($(this).parent().parent().is(".c")) {
$(this).parent().parent().removeClass("c").addClass("o");
chrome.runtime.sendMessage({ command: "update_tab", tabId: parseInt($(this).parent().parent()[0].id), tab: { expand: "o" } });
if (opt.close_other_trees) {
$(".o:visible:not(#"+$(this).parent().parent()[0].id+")").removeClass("o").addClass("c");
$(this).parents(".tab").each(function() {
$(this).removeClass("n").removeClass("c").addClass("o");
chrome.runtime.sendMessage({ command: "update_tab", tabId: parseInt(this.id), tab: { expand: "o" } });
});
$(".c").each(function() {
chrome.runtime.sendMessage({ command: "update_tab", tabId: parseInt(this.id), tab: { expand: "c" } });
});
}
}
}
}
});
// SELECT OR CLOSE TAB/PIN
$(document).on("mousedown", ".tab, .pin", function(event) {
if ($(".menu").is(":visible")) {
return;
}
event.stopPropagation();
DropTargetsSendToBack();
let tabId = parseInt(this.id);
if (event.button == 0) {
// SET SELECTION WITH SHIFT
if (event.shiftKey) {
$(".pin, .tab:visible").removeClass("selected").removeClass("selected_frozen").removeClass("selected_temporarly");
if ($(this).index() >= $(".active:visible").index()) {
$(".active:visible").nextUntil($(this), ":visible").add($(".active:visible")).add($(this)).addClass("selected");
} else {
$(".active:visible").prevUntil($(this), ":visible").add($(".active:visible")).add($(this)).addClass("selected");
}
}
// TOGGLE SELECTION WITH CTRL
if (event.ctrlKey) {
// if ($(".active:visible").is(":not(.selected)")) {
// $(".active:visible").addClass("selected");
// }
$(this).toggleClass("selected");
}
}
// CLOSE TAB
if (
(
($(this).is(".tab") && $(event.target).is(":not(.expand)")) && ((event.button == 1 && opt.close_with_MMB == true)
|| (event.button == 0 && $(event.target).is(".close, .close_img"))))
|| ($(this).is(".pin") && event.button == 1 && opt.close_with_MMB == true && opt.allow_pin_close == true)
) {
if ($(this).is(".active:visible") && opt.after_closing_active_tab != "browser") {
if (opt.after_closing_active_tab == "above") {
ActivatePrevTab();
}
if (opt.after_closing_active_tab == "below") {
ActivateNextTab();
}
}
// hide tab that will be closed
$("#"+tabId).css({ "width": "0px", "height": "0px", "border": "none", "overflow": "hidden" });
chrome.tabs.update(tabId, {muted:true, pinned: false});
// repeated what is in chrome events on tab_removed event, to avoid lag
if ($(this).is(".tab")) {
if (opt.promote_children) {
$("#ch"+tabId).children().insertAfter($(this));
} else {
$(this).find(".tab").each(function() {
chrome.tabs.remove(parseInt(this.id));
});
}
}
// delayed tab removal, so ActivatePrevTab() or ActivateNextTab() will not activate wrong tab
setTimeout(function() {
if ($("#"+tabId)[0]) chrome.tabs.remove(tabId);
}, 1000);
}
});
// SINGLE CLICK TO ACTIVATE TAB
$(document).on("click", ".tab_header", function(event) {
if ($(".menu").is(":visible")) {
return;
}
event.stopPropagation();
if (event.button == 0 && !event.shiftKey && !event.ctrlKey && $(event.target).is(":not(.close, .close_img, .expand, .tab_mediaicon)")) {
SetActiveTab($(this).parent()[0].id);
chrome.tabs.update(parseInt($(this).parent()[0].id), { active: true });
}
});
}

View File

@ -1,119 +1,199 @@
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
// ********** TOOLBAR ***************
function SaveToolbarOptions(){
chrome.runtime.sendMessage({command: "toolbar_options_save"});
function RestoreToolbarSearchFilter() {
let filter_type = "url";
if (localStorage.getItem("filter_type") !== null) {
filter_type = localStorage["filter_type"];
}
if (filter_type == "url") {
$("#button_filter_type").addClass("url").removeClass("title");
} else {
$("#button_filter_type").addClass("title").removeClass("url");
}
}
function RestoreToolbarShelf() {
chrome.runtime.sendMessage({command: "get_active_shelf", windowId: CurrentWindowId}, function(response) {
$("#filter_box").attr("placeholder", caption_searchbox);
$("#filter_box").css({"opacity": 1});
$(".on").removeClass("on");
$(".toolbar_shelf").addClass("hidden");
if (response == "search" && $("#button_search").length != 0) {
$("#toolbar_search").removeClass("hidden");
$("#button_search").addClass("on");
}
if (response == "tools" && $("#button_tools").length != 0) {
$("#toolbar_shelf_tools").removeClass("hidden");
$("#button_tools").addClass("on");
}
if (response == "groups" && $("#button_groups").length != 0) {
$("#toolbar_shelf_groups").removeClass("hidden");
$("#button_groups").addClass("on");
}
if (response == "backup" && $("#button_backup").length != 0) {
$("#toolbar_shelf_backup").removeClass("hidden");
$("#button_backup").addClass("on");
}
if (response == "folders" && $("#button_folders").length != 0) {
$("#toolbar_shelf_folders").removeClass("hidden");
$("#button_folders").addClass("on");
}
let bak1 = LoadData("windows_BAK1", []);
let bak2 = LoadData("windows_BAK2", []);
let bak3 = LoadData("windows_BAK3", []);
if (bak1.length && $(".button#button_load_bak1")[0]) {
$(".button#button_load_bak1").removeClass("disabled");
} else {
$(".button#button_load_bak1").addClass("disabled");
}
if (bak2.length && $(".button#button_load_bak2")[0]) {
$(".button#button_load_bak2").removeClass("disabled");
} else {
$(".button#button_load_bak2").addClass("disabled");
}
if (bak3.length && $(".button#button_load_bak3")[0]) {
$(".button#button_load_bak3").removeClass("disabled");
} else {
$(".button#button_load_bak3").addClass("disabled");
}
RefreshGUI();
});
}
function SetToolbarEvents(){
function SetToolbarShelfToggle(click_type) {
// tools and search buttons toggle
$(document).on("mousedown", "#button_tools, #button_search", function(event){
if (event.button != 0){
$(document).on(click_type, "#button_tools, #button_search, #button_groups, #button_backup, #button_folders", function(event) {
if (event.button != 0) {
return;
}
if ($(this).is(".on")){
$("#button_tools, #button_search").removeClass("on");
$("#toolbar_tools, #toolbar_search").addClass("hidden");
bg.opt_toolbar.active_toolbar_tool = "";
if ($(this).is(".on")) {
$(".on").removeClass("on");
$(".toolbar_shelf").addClass("hidden");
chrome.runtime.sendMessage({command: "set_active_shelf", active_shelf: "", windowId: CurrentWindowId});
} else {
$(this).addClass("on");
if ($(this).is("#button_tools")){
$("#button_search").removeClass("on");
$("#toolbar_search").addClass("hidden");
$("#toolbar_tools").removeClass("hidden");
bg.opt_toolbar.active_toolbar_tool = "tools";
} else {
$("#button_tools").removeClass("on");
$("#toolbar_tools").addClass("hidden");
$("#toolbar_search").removeClass("hidden");
bg.opt_toolbar.active_toolbar_tool = "search";
$(".toolbar_shelf").addClass("hidden");
if ($(this).is("#button_tools")) {
$("#toolbar_shelf_tools").removeClass("hidden");
chrome.runtime.sendMessage({command: "set_active_shelf", active_shelf: "tools", windowId: CurrentWindowId});
}
if ($(this).is("#button_search")) {
$("#toolbar_search").removeClass("hidden");
chrome.runtime.sendMessage({command: "set_active_shelf", active_shelf: "search", windowId: CurrentWindowId});
}
if ($(this).is("#button_groups")) {
$("#toolbar_shelf_groups").removeClass("hidden");
chrome.runtime.sendMessage({command: "set_active_shelf", active_shelf: "groups", windowId: CurrentWindowId});
}
if ($(this).is("#button_backup")) {
$("#toolbar_shelf_backup").removeClass("hidden");
chrome.runtime.sendMessage({command: "set_active_shelf", active_shelf: "backup", windowId: CurrentWindowId});
}
if ($(this).is("#button_folders")) {
$("#toolbar_shelf_folders").removeClass("hidden");
chrome.runtime.sendMessage({command: "set_active_shelf", active_shelf: "folders", windowId: CurrentWindowId});
}
$(".button").removeClass("on");
$(this).addClass("on");
}
RefreshGUI();
SaveToolbarOptions();
});
}
// go to previous search result
$(document).on("mousedown", "#filter_search_go_prev", function(event){
if (event.button != 0){
function SetToolbarEvents() {
// go to previous or next search result
$(document).on("mousedown", "#filter_search_go_prev, #filter_search_go_next", function(event) {
if (event.button != 0 || $(".tab.filtered").length == 0) {
return;
}
if (SearchIndex == 0){
SearchIndex = $(".tab.filtered").length-1;
} else {
SearchIndex--;
}
$(".highlighted_search").removeClass("highlighted_search");
$($(".tab.filtered")[SearchIndex]).addClass("highlighted_search");
ScrollToTab($(".tab.filtered")[SearchIndex].id);
});
// go to next search result
$(document).on("mousedown", "#filter_search_go_next", function(event){
if (event.button != 0){
return;
}
if (SearchIndex == $(".tab.filtered").length-1){
SearchIndex = 0;
if ($(this).is("#filter_search_go_prev")){
if (SearchIndex == 0) {
SearchIndex = $(".tab.filtered").length-1;
} else {
SearchIndex--;
}
} else {
SearchIndex++;
if (SearchIndex == $(".tab.filtered").length-1) {
SearchIndex = 0;
} else {
SearchIndex++;
}
}
$(".highlighted_search").removeClass("highlighted_search");
$($(".tab.filtered")[SearchIndex]).addClass("highlighted_search");
ScrollToTab($(".tab.filtered")[SearchIndex].id);
$($(".tab.filtered")[SearchIndex]).addClass("highlighted_search");
});
// new tab
$(document).on("mousedown", "#button_new", function(event){
if (event.button == 0){
$(document).on("mousedown", "#button_new", function(event) {
if (event.button == 0) {
chrome.tabs.create({});
}
if (event.button == 1){
chrome.tabs.query({windowId: CurrentWindowId, active: true}, function(tabs){
chrome.tabs.duplicate(tabs[0].id, function(tab){
setTimeout(function(){
$("#"+tab.id).insertAfter($(".active")[0]);
}, 300);
});
if (event.button == 1 && $(".active:visible")[0]) {
chrome.tabs.duplicate(parseInt($(".active:visible")[0].id), function(tab) {
setTimeout(function() {
$("#"+tab.id).insertAfter($(".active:visible")[0]);
RefreshExpandStates();
schedule_update_data++;
}, 100);
});
}
if (event.button == 2){
chrome.tabs.query({windowId: CurrentWindowId, active: true}, function(tabs){
ScrollToTab(tabs[0].id);
});
if (event.button == 2 && $(".active:visible")[0]) {
ScrollToTab($(".active:visible")[0].id);
}
});
// pin tab
$(document).on("mousedown", "#button_pin", function(event){
if (event.button != 0){
$(document).on("mousedown", "#button_pin", function(event) {
if (event.button != 0) {
return;
}
$(".selected:visible").each(function(){
$(".active:visible, .selected:visible").each(function() {
chrome.tabs.update(parseInt(this.id), { pinned: ($(this).is(".pin") ? false : true) });
});
});
// undo close
$(document).on("mousedown", "#button_undo", function(event){
if (event.button != 0){
$(document).on("mousedown", "#button_undo", function(event) {
if (event.button != 0) {
return;
}
chrome.sessions.getRecentlyClosed( null, function(sessions){
if (sessions.length > 0){
chrome.sessions.restore(null, function(){});
chrome.sessions.getRecentlyClosed( null, function(sessions) {
if (sessions.length > 0) {
chrome.sessions.restore(null, function(restored) {
// if (browserId == "F") {
// if (restored.tab != undefined) {
// let t = Promise.resolve(browser.sessions.getTabValue(restored.tab.id, "TTId")).then(function(TTId) {
// TODO RESTORE TREE IF POSSIBLE
// console.log(TTId);
// });
// }
// }
});
}
});
});
// move tab to new window (detach)
$(document).on("mousedown", "#button_move", function(event){
if (event.button != 0){
$(document).on("mousedown", "#button_move", function(event) {
if (event.button != 0) {
return;
}
var tabsArr = [];
$(".selected:visible").each(function(){
$(".active:visible, .selected:visible").each(function() {
tabsArr.push(parseInt(this.id));
if ($("#ch"+this.id).children().length > 0){
$($("#ch"+this.id).find(".tab")).each(function(){
if ($("#ch"+this.id).children().length > 0) {
$($("#ch"+this.id).find(".tab")).each(function() {
tabsArr.push(parseInt(this.id));
});
}
@ -121,104 +201,176 @@ function SetToolbarEvents(){
DetachTabs(tabsArr);
});
// move tab to new window (detach)
$(document).on("mousedown", "#repeat_search", function(event){
if (event.button != 0){
$(document).on("mousedown", "#repeat_search", function(event) {
if (event.button != 0) {
return;
}
FindTab($("#filter_box")[0].value);
});
// filter on input
$("#filter_box").on("input", function(){
if ($("#filter_box")[0].value == ""){
$("#button_filter_clear").css({"opacity": "0"}).attr("title", "");
} else {
$("#button_filter_clear").css({"opacity": "1"});
$("#button_filter_clear").attr("title", bg.caption_clear_filter);
}
$("#filter_box").on("input", function() {
FindTab($("#filter_box")[0].value);
});
// change filtering type
$(document).on("mousedown", "#button_filter_type", function(event){
if (event.button != 0){
$(document).on("mousedown", "#button_filter_type", function(event) {
if (event.button != 0) {
return;
}
$("#button_filter_type").toggleClass("url").toggleClass("title");
if (bg.opt_toolbar.filter_type == "url"){
bg.opt_toolbar.filter_type = "title";
} else {
bg.opt_toolbar.filter_type = "url";
}
FindTab($("#filter_box")[0].value);
SaveToolbarOptions();
localStorage["filter_type"] = $(this).is(".url") ? "url" : "title";
});
// clear filter button
$(document).on("mousedown", "#button_filter_clear", function(event){
if (event.button != 0){
$(document).on("mousedown", "#button_filter_clear", function(event) {
if (event.button != 0) {
return;
}
$("#button_filter_clear").css({"opacity": "0"}).attr("title", "");
FindTab("");
});
// sort tabs
$(document).on("mousedown", "#button_sort", function(event){
if (event.button != 0){
$(document).on("mousedown", "#button_sort", function(event) {
if (event.button != 0) {
return;
}
SortTabs();
});
// bookmarks
$(document).on("mousedown", "#button_bookmarks", function(event){
if (event.button != 0){
$(document).on("mousedown", "#button_bookmarks", function(event) {
if (event.button != 0) {
return;
}
chrome.tabs.create({url: "chrome://bookmarks/"});
});
// downloads
$(document).on("mousedown", "#button_downloads", function(event){
if (event.button != 0){
$(document).on("mousedown", "#button_downloads", function(event) {
if (event.button != 0) {
return;
}
chrome.tabs.create({url: "chrome://downloads/"});
});
// history
$(document).on("mousedown", "#button_history", function(event){
if (event.button != 0){
$(document).on("mousedown", "#button_history", function(event) {
if (event.button != 0) {
return;
}
chrome.tabs.create({url: "chrome://history/"});
});
// extensions
$(document).on("mousedown", "#button_extensions", function(event){
if (event.button != 0){
$(document).on("mousedown", "#button_extensions", function(event) {
if (event.button != 0) {
return;
}
chrome.tabs.create({url: "chrome://extensions"});
});
// settings
$(document).on("mousedown", "#button_settings", function(event){
if (event.button != 0){
$(document).on("mousedown", "#button_settings", function(event) {
if (event.button != 0) {
return;
}
chrome.tabs.create({url: "chrome://settings/"});
});
// vertical tabs options
$(document).on("mousedown", "#button_options", function(event){
if (event.button != 0){
$(document).on("mousedown", "#button_options", function(event) {
if (event.button != 0) {
return;
}
chrome.tabs.create({url: "options.html" });
});
// discard tabs
$(document).on("mousedown", "#button_discard", function(event){
if (event.button != 0){
$(document).on("mousedown", "#button_discard", function(event) {
if (event.button != 0) {
return;
}
chrome.tabs.query({windowId: CurrentWindowId, pinned: false}, function(tabs){
chrome.tabs.query({windowId: CurrentWindowId, pinned: false}, function(tabs) {
var tabsIds = [];
tabs.forEach(function(Tab){
tabs.forEach(function(Tab) {
tabsIds.push(Tab.id);
});
DiscardTabs(tabsIds);
});
});
// new group button
$(document).on("mousedown", "#button_new_group", function(event) {
if (event.button == 0) {
AddNewGroup({});
}
});
// new group button
$(document).on("mousedown", "#button_remove_group", function(event) {
let close_tabs = event.shiftKey;
if (event.button == 0) {
if (active_group != "tab_list") {
GroupRemove(active_group, close_tabs);
}
}
});
// EDIT GROUP
$(document).on("mousedown", "#button_edit_group", function(event) {
if (active_group != "tab_list") {
ShowGroupEditWindow(active_group);
}
});
// import-export group
$(document).on("mousedown", "#button_export_group", function(event) {
ExportGroup(bggroups[active_group].name+".tt_group");
});
$(document).on("mousedown", "#button_import_group", function(event) {
ShowOpenFileDialog("file_import_group", ".tt_group");
});
$(document).on("change", "#file_import_group", function(event) {
ImportGroup();
});
// load backups
$(document).on("mousedown", "#button_load_bak1:not(.disabled), #button_load_bak2:not(.disabled), #button_load_bak3:not(.disabled)", function(event) {
if (event.button != 0) {
return;
}
let wins = LoadData("windows_BAK"+(this.id).substr(15), []);
let tabs = LoadData("tabs_BAK"+(this.id).substr(15), []);
if (wins.length) {
localStorage["windows"] = JSON.stringify(wins);
}
if (tabs.length) {
localStorage["tabs"] = JSON.stringify(tabs);
alert("Loaded backup");
}
chrome.runtime.sendMessage({command: "reload"});
chrome.runtime.sendMessage({command: "reload_sidebar"});
location.reload();
});
// import-export backups
$(document).on("mousedown", "#button_export_bak", function(event) {
ExportTabs("Session.tt_session");
});
$(document).on("mousedown", "#button_import_bak", function(event) {
ShowOpenFileDialog("file_import_backup", ".tt_session");
});
$(document).on("change", "#file_import_backup", function(event) {
ImportTabs();
});
$(document).on("mousedown", "#button_import_merge_bak", function(event) {
ShowOpenFileDialog("file_import_merge_backup", ".tt_session");
});
$(document).on("change", "#file_import_merge_backup", function(event) {
ImportMergeTabs();
});
}

View File

@ -6,8 +6,6 @@
<style id="pagestyle">
html,
body {
min-width: 100px;
min-height: 250px;
width:100%;
height:100%;
border:none;
@ -16,24 +14,53 @@
white-space:nowrap;
overflow:hidden;
font-family:Arial;
font-size:0px;
cursor:default;
-webkit-user-select:none;
-webkit-user-drag:none;
}
</style>
<link type="text/css" rel="stylesheet" media="all" href="../theme/theme_size_preset_0.css" id="sizes_preset_0" />
<link type="text/css" rel="stylesheet" media="all" href="../theme/theme_size_preset_1.css" id="sizes_preset_1" />
<link type="text/css" rel="stylesheet" media="all" href="../theme/theme_size_preset_2.css" id="sizes_preset_2" />
<link type="text/css" rel="stylesheet" media="all" href="../theme/theme_size_preset_3.css" id="sizes_preset_3" />
<link type="text/css" rel="stylesheet" media="all" href="../theme/theme_size_preset_4.css" id="sizes_preset_4" />
<link type="text/css" rel="stylesheet" media="all" href="../theme/theme_colors.css" id="theme_colors" />
<link type="text/css" rel="stylesheet" media="all" href="../theme/theme.css" id="theme" />
<script type="text/javascript" src="../lib_jquery/jquery-3.2.1.min.js"></script>
</head>
<body>
<body id="body" class="sidebar_body">
<div id="DragImage" style="display: none; width:0px; height:0px;"></div>
<div class="toolbar" id="toolbar">
</div>
<div class="pin_list" id="pin_list" >
<div id="toolbar_groups">
<div class="scroll_group" id="scroll_group_up">
</div>
<div class="group_list" id="group_list">
</div>
<div class="scroll_group" id="scroll_group_down">
</div>
</div>
<div class="tab_list" id="tab_list">
<div class="pin_list" id="pin_list">
</div>
<div id="groups">
<div class="group" id="tab_list">
</div>
</div>
<input type="color" id="color_picker" style="position:absolute; left:-1000px; top:-1000px; width:1px; height:1px; overflow:hidden;">
<ul class="group_edit" id="group_edit">
<input id="group_edit_name" type="text"></input>
<div class="group_edit_color" id="group_edit_font"></div>
<br>
<div id="group_edit_discard"><span class="group_edit_button" id="group_edit_button_cancel"></span></div>
<div id="group_edit_confirm"><span class="group_edit_button" id="group_edit_button_confirm"></span></div>
</ul>
<ul class="menu" id="tabs_menu">
<li data-action="tab_new" class="menu_item" id="tabs_menu_new"></li>
@ -62,18 +89,46 @@
<li data-action="tab_settings" class="menu_item" id="tabs_menu_settings"></li>
</ul>
<script type="text/javascript" src="../scripts/global_variables.js"></script>
<!--
<ul class="menu" id="move_to_group_menu">
<li data-action="move_to_new_group" class="menu_item" id="tabs_menu_move_to_new_group"></li>
<div class="separator"></div>
</ul>
<ul class="menu" id="groups_menu">
<li data-action="group_new" class="groups_menu_item" id="groups_menu_new"></li>
<li data-action="group_edit" class="groups_menu_item" id="groups_menu_edit"></li>
<li data-action="group_bookmark" class="groups_menu_item" id="groups_menu_bookmark"></li>
<div class="separator"></div>
<li data-action="group_mute" class="groups_menu_item" id="groups_menu_mute"></li>
<li data-action="group_unmute" class="groups_menu_item" id="groups_menu_unmute"></li>
<li data-action="group_mute_other" class="groups_menu_item" id="groups_menu_mute_other"></li>
<li data-action="group_unmute_other" class="groups_menu_item" id="groups_menu_unmute_other"></li>
<div class="separator"></div>
<li data-action="group_close" class="groups_menu_item" id="groups_menu_close"></li>
<li data-action="group_close_with_tabs" class="groups_menu_item" id="groups_menu_close_with_tabs"></li>
<li data-action="group_discard" class="groups_menu_item" id="groups_menu_discard"></li>
<li data-action="group_suspend" class="groups_menu_item" id="groups_menu_suspend"></li>
<div class="separator"></div>
</ul>
<script type="text/javascript" src="../scripts/events_chrome.js"></script>
<script type="text/javascript" src="../scripts/events_tabs.js"></script>
<script type="text/javascript" src="../scripts/events_refresh.js"></script>
-->
<script type="text/javascript" src="../scripts/global.js"></script>
<script type="text/javascript" src="../scripts/toolbar.js"></script>
<script type="text/javascript" src="../scripts/chrome.js"></script>
<script type="text/javascript" src="../scripts/refresh.js"></script>
<script type="text/javascript" src="../scripts/drag_and_drop.js"></script>
<script type="text/javascript" src="../scripts/backup.js"></script>
<script type="text/javascript" src="../scripts/tabs.js"></script>
<script type="text/javascript" src="../scripts/folders.js"></script>
<script type="text/javascript" src="../scripts/groups.js"></script>
<script type="text/javascript" src="../scripts/IO.js"></script>
<script type="text/javascript" src="../scripts/menu.js"></script>
<script type="text/javascript" src="sidebar.js"></script>
<script type="text/javascript" src="../scripts/IO.js"></script>
<script type="text/javascript" src="../scripts/menu_tabs.js"></script>
<script type="text/javascript" src="../scripts/toolbar.js"></script>
</body>

View File

@ -1,144 +1,170 @@
document.addEventListener("DOMContentLoaded", Initialize(), false);
// Copyright (c) 2017 kroppy. All rights reserved.
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
function Initialize(){
if (bg.hold){
setTimeout(function(){ Initialize(); },500);
chrome.runtime.sendMessage({command: "background_start"});
document.addEventListener("DOMContentLoaded", Run(), false);
function Loadi18n() {
// toolbar labels
$(".button").each(function() {
$(this).attr("title", chrome.i18n.getMessage(this.id));
});
// menu labels
$(".menu_item").each(function() {
$(this).text(chrome.i18n.getMessage(this.id));
});
// edit group dialog labels
$(".group_edit_button").each(function() {
$(this)[0].textContent = chrome.i18n.getMessage(this.id);
});
}
function RestorePinListRowSettings() {
if (opt.pin_list_multi_row) {
$("#pin_list").css({"white-space": "normal", "overflow-x": "hidden"});
} else {
var theme = {
"ToolbarShow": false,
"ScrollbarPinList": 4,
"ScrollbarTabList": 16
};
if (localStorage.getItem("current_theme") != null && localStorage["theme"+localStorage["current_theme"]] != null){
theme = JSON.parse(localStorage["theme"+localStorage["current_theme"]]);
$("#toolbar").html(theme.toolbar);
var css_variables = "";
for (var css_variable in theme.ColorsSet){
css_variables = css_variables + "--" + css_variable + ":" + theme.ColorsSet[css_variable] + ";";
}
for (var css_variable in theme.TabsSizeSet){
css_variables = css_variables + "--" + css_variable + ":" + theme.TabsSizeSet[css_variable] + ";";
}
document.styleSheets[0].insertRule("body { "+css_variables+" }", 0);
}
if (navigator.userAgent.match("Firefox") === null){
document.styleSheets[0].insertRule("::-webkit-scrollbar { width:"+theme.ScrollbarTabList+"px; height:"+theme.ScrollbarPinList+"px; }", 0);
} else {
// I have no idea what is going on in latest build, but why top position for various things is different in firefox?????
if (theme.TabsSizeSetNumber > 1){
document.styleSheets[1].insertRule(".tab_header>.tab_title { margin-top: -1.5px; }", document.styleSheets[1].cssRules.length);
}
// document.styleSheets[1].insertRule("#toolbar_main { top: 1px; height: 25px; }", document.styleSheets[1].cssRules.length);
// document.styleSheets[1].insertRule(".button_img { position: relative; top: -1px; left: -1px; }", document.styleSheets[1].cssRules.length);
}
chrome.tabs.query({currentWindow: true}, function(tabs){
CurrentWindowId = tabs[0].windowId;
if (bg.opt.pin_list_multi_row){
$("#pin_list").css({"white-space": "normal", "overflow-x": "hidden"});
}
if (theme.ToolbarShow == true){
if (bg.opt_toolbar.filter_type == "url"){
$("#button_filter_type").addClass("url");
} else {
$("#button_filter_type").addClass("title");
}
$(".button").each(function(){
$(this).attr("title", chrome.i18n.getMessage(this.id));
});
$("#filter_box").attr("placeholder", bg.caption_searchbox);
$("#filter_box").css({"opacity": 1});
$(".on").removeClass("on");
$("#toolbar_tools, #toolbar_search").removeClass("hidden");
if (bg.opt_toolbar.active_toolbar_tool == ""){
$("#toolbar_tools, #toolbar_search").addClass("hidden");
}
if (bg.opt_toolbar.active_toolbar_tool == "tools" && $("#button_tools").length != 0){
$("#toolbar_search").addClass("hidden");
$("#button_tools").addClass("on");
}
if (bg.opt_toolbar.active_toolbar_tool == "search" && $("#button_search").length != 0){
$("#toolbar_tools").addClass("hidden");
$("#button_search").addClass("on");
}
$("#toolbar_separator").remove();
$("#toolbar_unused_buttons").remove();
} else {
$("#toolbar").children().remove();
}
tabs.forEach(function(Tab){
AppendTab({
tab: Tab,
Append: true
$("#pin_list").css({"white-space": "", "overflow-x": ""});
}
RefreshGUI();
}
function Run() {
LoadPreferences();
chrome.windows.getCurrent({populate: false}, function(window) {
CurrentWindowId = window.id;
chrome.runtime.sendMessage({command: "is_bg_busy"}, function(response) {
hold = response;
chrome.runtime.sendMessage({command: "get_browser_tabs"}, function(response) {
bgtabs = Object.assign({}, response);
chrome.runtime.sendMessage({command: "get_groups", windowId: CurrentWindowId}, function(response) {
bggroups = Object.assign({}, response);
setTimeout(function() {
if (opt != undefined && browserId != undefined && bgtabs != undefined && bggroups != undefined && hold == false) {
Initialize();
} else {
Run();
}
},200);
});
});
tabs.forEach(function(Tab){
if (bg.tabs[Tab.id] && !Tab.pinned){
$("#"+Tab.id).addClass(bg.tabs[Tab.id].o);
if ($("#"+bg.tabs[Tab.id].p).length > 0 && $("#"+bg.tabs[Tab.id].p).is(".tab") && $("#"+Tab.id).find( $("#ch"+bg.tabs[Tab.id].p)).length == 0){
$("#ch"+bg.tabs[Tab.id].p).append($("#"+Tab.id));
}
}
});
tabs.forEach(function(Tab){
if ($("#"+Tab.id)[0] && $("#"+Tab.id).parent().children().eq(bg.tabs[Tab.id].n)[0]){
if ($("#"+Tab.id).index() > bg.tabs[Tab.id].n){
$("#"+Tab.id).insertBefore($("#"+Tab.id).parent().children().eq(bg.tabs[Tab.id].n));
} else {
$("#"+Tab.id).insertAfter($("#"+Tab.id).parent().children().eq(bg.tabs[Tab.id].n));
}
}
});
tabs.forEach(function(Tab){
if ($("#"+Tab.id)[0] && $("#"+Tab.id).parent().children().eq(bg.tabs[Tab.id].n)[0]){
if ($("#"+Tab.id).index() < bg.tabs[Tab.id].n){
$("#"+Tab.id).insertAfter($("#"+Tab.id).parent().children().eq(bg.tabs[Tab.id].n));
}
}
});
delete theme;
SetIOEvents();
SetToolbarEvents();
SetTRefreshEvents();
SetTabEvents();
SetMenu();
RefreshGUI();
RefreshExpandStates();
UpdateData();
// Scroll to active tab
setTimeout(function(){ ScrollToTab($(".active")[0].id); },100);
if (navigator.userAgent.match("Vivaldi") !== null){
VivaldiRefreshMediaIcons();
}
});
});
}
function Initialize() {
RestoreStateOfGroupsToolbar();
var theme = LoadData(("theme"+localStorage["current_theme"]), {"TabsSizeSetNumber": 2, "ToolbarShow": true, "toolbar": DefaultToolbar});
if (browserId == "F") {
// I have no idea what is going on in latest build, but why top position for various things is different in firefox?????
if (theme.TabsSizeSetNumber > 1) {
document.styleSheets[document.styleSheets.length-1].insertRule(".tab_header>.tab_title { margin-top: -1px; }", document.styleSheets[document.styleSheets.length-1].cssRules.length);
}
}
ApplySizeSet(theme["TabsSizeSetNumber"]);
ApplyColorsSet(theme["ColorsSet"]);
AppendAllGroups();
chrome.tabs.query({currentWindow: true}, function(tabs) {
// AddNewFolder();
// AddNewFolder();
// AddNewFolder();
// AddNewFolder();
if (theme.ToolbarShow) {
if (theme.theme_version == DefaultTheme.theme_version) {
$("#toolbar").html(theme.toolbar);
} else {
$("#toolbar").html(DefaultToolbar);
}
}
let tc = tabs.length;
for (var ti = 0; ti < tc; ti++) {
AppendTab({tab: tabs[ti], Append: true, SkipSetActive: true});
}
for (var ti = 0; ti < tc; ti++) {
if (bgtabs[tabs[ti].id] && !tabs[ti].pinned && $("#"+bgtabs[tabs[ti].id].parent)[0] && $("#"+bgtabs[tabs[ti].id].parent).is(".group")) {
$("#"+bgtabs[tabs[ti].id].parent).append($("#"+tabs[ti].id));
}
}
for (var ti = 0; ti < tc; ti++) {
if (bgtabs[tabs[ti].id] && !tabs[ti].pinned) {
if ($("#"+bgtabs[tabs[ti].id].parent).length > 0 && $("#"+bgtabs[tabs[ti].id].parent).is(".tab") && $("#"+tabs[ti].id).find($("#ch"+bgtabs[tabs[ti].id].parent)).length == 0) {
$("#ch"+bgtabs[tabs[ti].id].parent).append($("#"+tabs[ti].id));
}
}
}
for (var ti = 0; ti < tc; ti++) {
if (bgtabs[tabs[ti].id] && !tabs[ti].pinned) {
$("#"+tabs[ti].id).addClass(bgtabs[tabs[ti].id].expand);
}
}
for (var group in bggroups) {
if ($("#"+group+" #"+bggroups[group].activetab)[0]) {
$("#"+bggroups[group].activetab).addClass("active");
}
}
chrome.runtime.sendMessage({command: "get_active_group", windowId: CurrentWindowId}, function(response) {
SetActiveGroup(response, true, true);
});
RearrangeTreeTabs(tabs, bgtabs, true);
RefreshExpandStates();
RestoreToolbarShelf();
RestoreToolbarSearchFilter();
SetToolbarShelfToggle("mousedown");
StartChromeListeners();
SetIOEvents();
SetToolbarEvents();
SetTRefreshEvents();
SetGroupEvents();
SetTabEvents();
SetFolderEvents();
SetMenu();
SetDragAndDropEvents();
RearrangeBrowserTabsCheck();
Loadi18n();
RestorePinListRowSettings();
setTimeout(function() {
UpdateData();
delete bgtabs;
delete theme;
},5000);
if ($(".active:visible").length == 0) {
chrome.tabs.query({currentWindow: true, active: true}, function(tabs) {
if (tabs[0]) {
SetActiveTab(tabs[0].id);
}
});
}
if (browserId == "V") {
VivaldiRefreshMediaIcons();
}
});
}
function log(m){
bg.log(m);
function log(m) {
chrome.runtime.sendMessage({command: "console_log", m: m});
}

94
theme/expand_closed.svg Normal file
View File

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="16"
viewBox="0 0 24 16"
id="svg4216"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="expand_closed.svg">
<defs
id="defs4218">
<pattern
y="0"
x="0"
height="6"
width="6"
patternUnits="userSpaceOnUse"
id="EMFhbasepattern" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="32"
inkscape:cx="10.595481"
inkscape:cy="7.6147865"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1058"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:object-paths="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-smooth-nodes="true" />
<metadata
id="metadata4221">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1036.3622)">
<path
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -7.84375,1055.7372 0,-6 5,3 z"
id="path4141"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<circle
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="path4143"
cx="-7.40625"
cy="1044.7372"
r="3" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4145"
width="4"
height="4"
x="-2.25"
y="1053.8622" />
<path
inkscape:connector-curvature="0"
id="path4159"
d="m 4,1047.3622 0,-6 6,3 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

68
theme/expand_open.svg Normal file
View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="16"
viewBox="0 0 24 16"
id="svg4216"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="expand_open.svg">
<defs
id="defs4218" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.627417"
inkscape:cx="9.3043716"
inkscape:cy="9.9894317"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1028"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:object-paths="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-smooth-nodes="true" />
<metadata
id="metadata4221">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1036.3622)">
<path
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 4,1042.3622 6,0 -3,6 z"
id="path4141"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

94
theme/folder_closed.svg Normal file
View File

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg3347"
version="1.1"
inkscape:version="0.91 r13725"
width="16"
height="16"
viewBox="0 0 16 16"
sodipodi:docname="folder_closed.svg">
<metadata
id="metadata3353">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3351" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1552"
inkscape:window-height="811"
id="namedview3349"
showgrid="false"
inkscape:zoom="11.313709"
inkscape:cx="-6.6202105"
inkscape:cy="14.42908"
inkscape:window-x="185"
inkscape:window-y="94"
inkscape:window-maximized="0"
inkscape:current-layer="svg3347"
inkscape:snap-page="true"
inkscape:snap-center="true"
inkscape:snap-midpoints="true"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:snap-bbox-midpoints="true"
inkscape:object-paths="true" />
<rect
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#cccccc;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect3365"
width="6.99999"
height="6.99999"
x="20.687504"
y="-13.625002" />
<rect
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect3367"
width="4.99999"
height="4.99999"
x="36.187504"
y="0.74999785" />
<rect
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect3369"
width="4.99999"
height="4.99999"
x="32.812504"
y="13.812496" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 12.3125,4.8504126 12.28125,2.0625 6.34375,2.125 5.71875,1.03125 2.6875,1.09375 1.96875,2.78125 0.53125,2.84375 0.50457646,15.003657"
id="path4149"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 0.50520155,14.718693 12.15104845,0 0,-10.343693 -12.12855679,0.090218"
id="path4151"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

95
theme/folder_open.svg Normal file
View File

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg3347"
version="1.1"
inkscape:version="0.91 r13725"
width="16"
height="16"
viewBox="0 0 16 16"
sodipodi:docname="folder_open.svg">
<metadata
id="metadata3353">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3351" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1552"
inkscape:window-height="811"
id="namedview3349"
showgrid="false"
inkscape:zoom="11.313709"
inkscape:cx="-15.841251"
inkscape:cy="9.3738536"
inkscape:window-x="185"
inkscape:window-y="94"
inkscape:window-maximized="0"
inkscape:current-layer="svg3347"
inkscape:snap-page="true"
inkscape:snap-center="true"
inkscape:snap-midpoints="true"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:snap-bbox-midpoints="true"
inkscape:object-paths="true" />
<rect
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#cccccc;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect3365"
width="6.99999"
height="6.99999"
x="20.687504"
y="-13.625002" />
<rect
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect3367"
width="4.99999"
height="4.99999"
x="36.187504"
y="0.74999785" />
<rect
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect3369"
width="4.99999"
height="4.99999"
x="32.812504"
y="13.812496" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 6,5.3125 5.3378538,5.4893868 4.875,5.9375 0.78125,14.5 11.90625,14.40625 14.894908,5.9394164 14.802966,5.5366117 14.40816,5.1698614 Z"
id="path4138"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 12.3125,4.8504126 12.28125,2.0625 6.34375,2.125 5.71875,1.03125 2.6875,1.09375 1.96875,2.78125 0.53125,2.84375 0.50457646,15.003657"
id="path4149"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

File diff suppressed because it is too large Load Diff

278
theme/theme_colors.css Normal file
View File

@ -0,0 +1,278 @@
body {
/* SCROLLBARS */
--scrollbar_thumb: #cdcdcd;
--scrollbar_thumb_hover: #a6a6a6;
--scrollbar_track: #e4e4e4;
/* MAIN TOOLBAR */
--toolbar_background: #f2f2f2;
--toolbar_border_bottom: #cccccc;
/* MAIN TOOLBAR BUTTONS COLORS */
--button_background: #f2f2f2;
--button_border: #f2f2f2;
--button_hover_background: #dcdcdc;
--button_hover_border: #bebebe;
--button_icons: #808080;
--button_icons_hover: #808080;
/* SEARCH BOX */
--filter_box_background: #fafafa;
--filter_box_border: #cccccc;
--filter_box_font: #808080;
--filter_clear_icon: #808080;
/* GROUPS SHELF TOOLBAR */
--group_list_background: #fafafa;
--group_list_borders: #bebebe;
--group_list_default_font_color: #808080;
--group_list_button_hover_background: #dcdcdc;
/* TOTO GROUP EDIT DIALOG */
/* LISTS */
--pin_list_background: #fafafa;
--pin_list_border_bottom: #cccccc;
--tab_list_background: #fafafa;
/* TABS */
--tab_header_border_radius: 0px;
--drag_indicator: #339bf3;
/* normal */
--tab_border: #bebebe;
--tab_background: #f1f1f1;
--tab_title_font_color: #000000;
--tab_title_font_style: normal;
--tab_title_font_weight: normal;
/* normal hover */
--tab_hover_border: #878787;
--tab_hover_background: #d7d7d7;
--tab_hover_title_font_color: #000000;
--tab_hover_title_font_style: normal;
--tab_hover_title_font_weight: normal;
/* normal selected */
--tab_selected_border: #70c0e7;
--tab_selected_background: #e5f3fb;
--tab_selected_title_font_color: #000000;
--tab_selected_title_font_style: italic;
--tab_selected_title_font_weight: normal;
/* normal selected hover */
--tab_selected_hover_border: #78aee5;
--tab_selected_hover_background: #d0e2f0;
--tab_selected_hover_title_font_color: #000000;
--tab_selected_hover_title_font_style: italic;
--tab_selected_hover_title_font_weight: normal;
/* normal active */
--tab_active_border: #70c0e7;
--tab_active_background: #e5f3fb;
--tab_active_title_font_color: #000000;
--tab_active_title_font_style: normal;
--tab_active_title_font_weight: bold;
/* normal active hover */
--tab_active_hover_border: #78aee5;
--tab_active_hover_background: #d0e2f0;
--tab_active_hover_title_font_color: #000000;
--tab_active_hover_title_font_style: normal;
--tab_active_hover_title_font_weight: bold;
/* normal selected active */
--tab_active_selected_border: #70c0e7;
--tab_active_selected_background: #e5f3fb;
--tab_active_selected_title_font_color: #000000;
--tab_active_selected_title_font_style: italic;
--tab_active_selected_title_font_weight: bold;
/* normal selected active hover */
--tab_selected_active_hover_border: #78aee5;
--tab_selected_active_hover_background: #d0e2f0;
--tab_selected_active_hover_title_font_color: #000000;
--tab_selected_active_hover_title_font_style: italic;
--tab_selected_active_hover_title_font_weight: bold;
/* unloaded */
--tab_discarded_border: #bebebe;
--tab_discarded_background: #f1f1f1;
--tab_discarded_title_font_color: #7e7e7e;
--tab_discarded_title_font_style: normal;
--tab_discarded_title_font_weight: normal;
/* unloaded hover */
--tab_discarded_hover_border: #878787;
--tab_discarded_hover_background: #d7d7d7;
--tab_discarded_hover_title_font_color: #7e7e7e;
--tab_discarded_hover_title_font_style: normal;
--tab_discarded_hover_title_font_weight: normal;
/* unloaded selected */
--tab_selected_discarded_border: #70c0e7;
--tab_selected_discarded_background: #e5f3fb;
--tab_selected_discarded_title_font_color: #7e7e7e;
--tab_selected_discarded_title_font_style: italic;
--tab_selected_discarded_title_font_weight: normal;
/* unloaded selected hover */
--tab_selected_discarded_hover_border: #78aee5;
--tab_selected_discarded_hover_background: #d0e2f0;
--tab_selected_discarded_hover_title_font_color: #7e7e7e;
--tab_selected_discarded_hover_title_font_style: italic;
--tab_selected_discarded_hover_title_font_weight: normal;
/* search result */
--tab_filtered_border: #a6a000;
--tab_filtered_background: #e8e000;
--tab_filtered_title_font_color: #000000;
--tab_filtered_title_font_style: normal;
--tab_filtered_title_font_weight: normal;
/* search result hover */
--tab_filtered_hover_border: #7f7b00;
--tab_filtered_hover_background: #d2cb00;
--tab_filtered_hover_title_font_color: #000000;
--tab_filtered_hover_title_font_style: normal;
--tab_filtered_hover_title_font_weight: normal;
/* search result active */
--tab_filtered_active_border: #a6a000;
--tab_filtered_active_background: #e8e000;
--tab_filtered_active_title_font_color: #000000;
--tab_filtered_active_title_font_style: normal;
--tab_filtered_active_title_font_weight: bold;
/* search result active hover */
--tab_filtered_active_hover_border: #7f7b00;
--tab_filtered_active_hover_background: #d2cb00;
--tab_filtered_active_hover_title_font_color: #000000;
--tab_filtered_active_hover_title_font_style: normal;
--tab_filtered_active_hover_title_font_weight: bold;
/* search result selected */
--tab_filtered_selected_border: #0b5b56;
--tab_filtered_selected_background: #0f8079;
--tab_filtered_selected_title_font_color: #000000;
--tab_filtered_selected_title_font_style: italic;
--tab_filtered_selected_title_font_weight: normal;
/* search result selected hover */
--tab_filtered_selected_hover_border: #094c48;
--tab_filtered_selected_hover_background: #0d6d67;
--tab_filtered_selected_hover_title_font_color: #000000;
--tab_filtered_selected_hover_title_font_style: italic;
--tab_filtered_selected_hover_title_font_weight: normal;
/* search result active selected */
--tab_filtered_selected_active_border: #0b5b56;
--tab_filtered_selected_active_background: #0f8079;
--tab_filtered_selected_active_title_font_color: #000000;
--tab_filtered_selected_active_title_font_style: italic;
--tab_filtered_selected_active_title_font_weight: bold;
/* search result active selected hover */
--tab_filtered_selected_active_hover_border: #094c48;
--tab_filtered_selected_active_hover_background: #0d6d67;
--tab_filtered_selected_active_hover_title_font_color: #000000;
--tab_filtered_selected_active_hover_title_font_style: italic;
--tab_filtered_selected_active_hover_title_font_weight: bold;
/* search result highlighted */
--tab_filtered_highlighted_search_border: #c57f00;
--tab_filtered_highlighted_search_background: #ffa500;
--tab_filtered_highlighted_search_title_font_color: #000000;
--tab_filtered_highlighted_search_title_font_style: normal;
--tab_filtered_highlighted_search_title_font_weight: normal;
/* search result highlighted hover */
--tab_filtered_highlighted_search_hover_border: #a86c00;
--tab_filtered_highlighted_search_hover_background: #c68100;
--tab_filtered_highlighted_search_hover_title_font_color: #000000;
--tab_filtered_highlighted_search_hover_title_font_style: normal;
--tab_filtered_highlighted_search_hover_title_font_weight: normal;
/* search result active highlighted */
--tab_filtered_active_highlighted_search_border: #a86c00;
--tab_filtered_active_highlighted_search_background: #ed9900;
--tab_filtered_active_highlighted_search_title_font_color: #000000;
--tab_filtered_active_highlighted_search_title_font_style: normal;
--tab_filtered_active_highlighted_search_title_font_weight: bold;
/* search result active highlighted hover */
--tab_filtered_active_highlighted_search_hover_border: #a86c00;
--tab_filtered_active_highlighted_search_hover_background: #c68100;
--tab_filtered_active_highlighted_search_hover_title_font_color: #000000;
--tab_filtered_active_highlighted_search_hover_title_font_style: normal;
--tab_filtered_active_highlighted_search_hover_title_font_weight: bold;
/* search result selected highlighted */
--tab_filtered_selected_highlighted_search_border: #a86c00;
--tab_filtered_selected_highlighted_search_background: #ed9900;
--tab_filtered_selected_highlighted_search_title_font_color: #000000;
--tab_filtered_selected_highlighted_search_title_font_style: italic;
--tab_filtered_selected_highlighted_search_title_font_weight: normal;
/* search result selected highlighted hover */
--tab_filtered_selected_highlighted_search_hover_border: #a86c00;
--tab_filtered_selected_highlighted_search_hover_background: #c68100;
--tab_filtered_selected_highlighted_search_hover_title_font_color: #000000;
--tab_filtered_selected_highlighted_search_hover_title_font_style: italic;
--tab_filtered_selected_highlighted_search_hover_title_font_weight: normal;
/* search result selected active highlighted */
--tab_filtered_selected_active_highlighted_search_border: #a86c00;
--tab_filtered_selected_active_highlighted_search_background: #ed9900;
--tab_filtered_selected_active_highlighted_search_title_font_color: #000000;
--tab_filtered_selected_active_highlighted_search_title_font_style: italic;
--tab_filtered_selected_active_highlighted_search_title_font_weight: bold;
/* search result selected active highlighted hover */
--tab_filtered_selected_active_highlighted_search_hover_border: #a86c00;
--tab_filtered_selected_active_highlighted_search_hover_background: #c68100;
--tab_filtered_selected_active_highlighted_search_hover_title_font_color: #000000;
--tab_filtered_selected_active_highlighted_search_hover_title_font_style: italic;
--tab_filtered_selected_active_highlighted_search_hover_title_font_weight: bold;
--expand_hover_background: #ffa500;
--expand_closed_background: #969696;
--expand_open_background: #339bf3;
--attention_background: #ffd6ce;
--attention_border: #ff9d8a;
--close_x: #7d7d7d;
--close_hover_x: #fbfcfe;
--close_hover_border: #757676;
--close_hover_background: #939394;
/* MENU */
--tabs_menu_border: #bebebe;
--tabs_menu_background: #fafafa;
--tabs_menu_font: #333333;
--tabs_menu_hover_border: #bebebe;
--tabs_menu_hover_background: #efefef;
--tabs_menu_separator: #efefef;
}
body {
/* custom colors are placed here, do not remove this, as loaded theme colors are added to second (this) stylesheet */
}

View File

@ -0,0 +1,30 @@
body {
--scrollbar_height: 4px;
--scrollbar_width: 16px;
--button_size: 22px;
--pin_width: 20px;
--pin_height: 20px;
--tab_height: 15px;
--tab_height_line: 17px;
--title_font_size: 10.5px;
--tab_title_text_padding_left: 19px;
--tab_title_text_padding_right_with_close_button: 20px;
--favicon_size: 13px 13px;
--favicon_left: 4px;
--drag_area_top: 6px;
--drag_area_bottom: 4px;
--children_padding_left: 5px;
--close_top: 1px;
--close_right: 1px;
--close_height: 11px;
--close_width: 11px;
}

View File

@ -0,0 +1,30 @@
body {
--scrollbar_height: 4px;
--scrollbar_width: 16px;
--button_size: 22px;
--pin_width: 22px;
--pin_height: 22px;
--tab_height: 17px;
--tab_height_line: 19px;
--title_font_size: 10.5px;
--tab_title_text_padding_left: 23px;
--tab_title_text_padding_right_with_close_button: 20px;
--favicon_size: 14px 14px;
--favicon_left: 5px;
--drag_area_top: 6px;
--drag_area_bottom: 4px;
--children_padding_left: 5px;
--close_top: 2px;
--close_right: 2px;
--close_height: 11px;
--close_width: 11px;
}

View File

@ -0,0 +1,30 @@
body {
--scrollbar_height: 4px;
--scrollbar_width: 16px;
--button_size: 22px;
--pin_width: 25px;
--pin_height: 25px;
--tab_height: 19px;
--tab_height_line: 22px;
--title_font_size: 12px;
--tab_title_text_padding_left: 26px;
--tab_title_text_padding_right_with_close_button: 19px;
--favicon_size: 16px 16px;
--favicon_left: 5px;
--drag_area_top: 7px;
--drag_area_bottom: 5px;
--children_padding_left: 5px;
--close_top: 2px;
--close_right: 2px;
--close_height: 13px;
--close_width: 13px;
}

View File

@ -0,0 +1,30 @@
body {
--scrollbar_height: 4px;
--scrollbar_width: 16px;
--button_size: 22px;
--pin_width: 26px;
--pin_height: 26px;
--tab_height: 21px;
--tab_height_line: 25px;
--title_font_size: 12px;
--tab_title_text_padding_left: 26px;
--tab_title_text_padding_right_with_close_button: 24px;
--favicon_size: 16px 16px;
--favicon_left: 6px;
--drag_area_top: 8px;
--drag_area_bottom: 5px;
--children_padding_left: 5px;
--close_top: 3px;
--close_right: 3px;
--close_height: 13px;
--close_width: 13px;
}

View File

@ -0,0 +1,30 @@
body {
--scrollbar_height: 4px;
--scrollbar_width: 16px;
--button_size: 22px;
--pin_width: 26px;
--pin_height: 27px;
--tab_height: 23px;
--tab_height_line: 25px;
--title_font_size: 14px;
--tab_title_text_padding_left: 26px;
--tab_title_text_padding_right_with_close_button: 24px;
--favicon_size: 16px 16px;
--favicon_left: 6px;
--drag_area_top: 9px;
--drag_area_bottom: 6px;
--children_padding_left: 5px;
--close_top: 4px;
--close_right: 4px;
--close_height: 14px;
--close_width: 14px;
}

83
theme/toolbar_edit.svg Normal file
View File

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
viewBox="0 0 22 22"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="toolbar_shelf_groups_edit.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="31.678384"
inkscape:cx="14.409488"
inkscape:cy="11.491421"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1058"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:snap-center="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:bbox-paths="true"
inkscape:snap-page="true" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1030.3622)">
<g
id="g4165"
transform="matrix(0.93333333,0,0,0.93333333,-0.66666662,69.890817)">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path4161"
d="m 5,1048.3622 0,-3 9,-9 3,3 -9,9 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccccc"
inkscape:connector-curvature="0"
id="path4163"
d="m 15,1035.3622 3,3 2,-2 0,-1 -2,-2 -1,0 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

81
theme/toolbar_groups.svg Normal file
View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
viewBox="0 0 22 22"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="toolbar_shelf_groups.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.36192"
inkscape:cx="2.7362743"
inkscape:cy="19.046336"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1028"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:snap-center="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:bbox-paths="true"
inkscape:snap-page="true"
inkscape:snap-object-midpoints="true" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1030.3622)">
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4424"
width="5.009901"
height="11.700142"
x="33.714809"
y="1056.0536" />
<path
id="rect4142"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 7,1035.3622 1,0 0,5 -1,0 z m 0,8 1,0 0,4 -1,0 z m -2,-10 0,16 12,0 0,-16 z m 4,9 0,6 -3,0 0,-6 z m -3,-8 10,0 0,14 -6,0 0,-7 -4,0 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccccccscccccs" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
viewBox="0 0 22 22"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="toolbar_shelf_groups_toolbar_hide.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.4"
inkscape:cx="15.301859"
inkscape:cy="2.2648484"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1058"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:snap-center="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:bbox-paths="true"
inkscape:snap-page="true"
inkscape:snap-object-midpoints="true"
showguides="false" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1030.3622)">
<path
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 16,1035.3622 -4,6 4,6 z"
id="path4145"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
id="rect4142"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 7,1035.3622 1,0 0,5 -1,0 z m 0,8 1,0 0,4 -1,0 z m -1,-2.0001 0,-7 3,0 0,7 z m 4,-7.9999 -5,0 0,16 5,0 z m -4,14.9999 0,-6 3,0 0,6.0001 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

78
theme/toolbar_import.svg Normal file
View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
viewBox="0 0 22 22"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="toolbar_button_import_bak.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="8"
inkscape:cx="11.797304"
inkscape:cy="20.278765"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1058"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:snap-center="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:bbox-paths="true"
inkscape:snap-page="true"
inkscape:snap-object-midpoints="true"
inkscape:snap-smooth-nodes="true"
inkscape:object-paths="true"
inkscape:snap-midpoints="true"
inkscape:snap-global="false" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1030.3622)">
<path
id="rect4156"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 13.638672,1041.2958 c -0.07476,0 -0.157991,0.015 -0.244141,0.061 -1.146248,0.6868 -2.360256,1.3609 -3.460937,2.0781 -0.325423,0.3144 -0.306942,0.5117 0,0.875 1.098125,0.7218 2.303847,1.4072 3.460937,2.0742 0.172299,0.091 0.329002,0.08 0.441406,-0.027 C 13.963259,1046.2344 14,1046.1378 14,1045.6259 l 0,-0.2559 3.25,0 c 0.276561,-0.013 0.434119,-0.078 0.552734,-0.1992 0.107167,-0.1101 0.199055,-0.2834 0.197266,-0.5215 -0.0016,-0.218 -2.42e-4,-0.2298 0,-0.7441 0,-0.058 2.2e-5,-0.021 0,-0.068 -2.43e-4,-0.5139 -0.0016,-0.5241 0,-0.7421 0.0018,-0.2381 -0.0901,-0.4114 -0.197266,-0.5215 -0.118615,-0.1213 -0.276173,-0.1902 -0.552734,-0.2032 l -3.25,0 0,-0.2539 c 0,-0.5119 -0.03674,-0.6104 -0.164063,-0.7324 -0.0562,-0.053 -0.122502,-0.083 -0.197265,-0.088 z M 6.5,1033.37 c -1.376351,0 -2.5,1.1237 -2.5,2.5 l 0,11 c 0,1.3764 1.123649,2.5 2.5,2.5 l 8,0 c 1.376351,0 2.5,-1.1236 2.5,-2.5 l 0,-0.5 -1,0 0,0.5005 c 0,0.8397 -0.660351,1.5 -1.5,1.5 l -8,0 c -0.839649,0 -1.5,-0.6603 -1.5,-1.5 l 0,-11 c 0,-0.8396 0.660351,-1.4999 1.5,-1.5 l 2.3666148,-2e-4 L 12,1034.37 l 0,2.9922 c 0.08968,0.5627 0.26053,0.9114 1,1 0.825934,0.01 3,0 3,0 l 0,3.0078 1,0 c 0,0 -1.15e-4,-2.3255 -7e-6,-3.5937 -0.01794,-0.1052 -0.05861,-0.1899 -0.107389,-0.2519 -0.599625,-0.6443 -3.313838,-3.5247 -3.800493,-4.0432 -0.04523,-0.048 -0.148089,-0.1111 -0.240549,-0.1112 -3.807289,-0.029 -0.07785,-0.011 -3.9849472,0 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccscccccsccccscccssssssccssssscccccccccccccs" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg3347"
version="1.1"
inkscape:version="0.91 r13725"
width="22"
height="22"
viewBox="0 0 22 22"
sodipodi:docname="toolbar_load_bak1.svg">
<metadata
id="metadata3353">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3351" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview3349"
showgrid="false"
inkscape:zoom="8"
inkscape:cx="-18.765114"
inkscape:cy="31.221317"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg3347"
inkscape:snap-page="true"
inkscape:snap-center="true"
inkscape:snap-midpoints="true"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:snap-bbox-midpoints="true"
inkscape:object-paths="true"
inkscape:snap-intersection-paths="false"
inkscape:object-nodes="false"
inkscape:snap-smooth-nodes="true" />
<path
id="path4139"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 15.022095,26 14.977905,30 13,30 13,26 Z M 3,41 3,25 l 15,0 2,2 0,8 -1,0 0,-7.5 L 17.5,26 16,26 16,30.955806 7,31.044196 7,26 l -3,0 0,14 9,0 0,1 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccccccc" />
<path
id="path4247-4"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 9.246397,34.738661 -0.3642239,-0.0047 C 9.3584906,33.706164 10.363081,33.029 11.5,33 c 0.634058,-0.01617 1.29008,0.185927 1.815147,0.559527 0.222346,0.158206 0.4787,0.412935 0.642394,0.636604 0.0762,0.104112 0.171394,0.21169 0.211243,0.239706 0.250322,0.175992 0.590274,-0.03823 0.548588,-0.345018 -0.01189,-0.08742 -0.05104,-0.160504 -0.171432,-0.324234 -0.353234,-0.480356 -0.89412,-0.917884 -1.45048,-1.171892 -0.227542,-0.10389 -0.721976,-0.24644 -0.980207,-0.283682 -1.716952,-0.247609 -3.3879328,0.726403 -3.9799465,2.320668 -0.013502,0.03626 -0.035481,0.09653 -0.035481,0.09653 l -0.8105122,0.002 c 0,0 1.1566206,2.396766 1.1658861,2.383454 l 3.16e-5,8e-6 c 0.016536,-0.02376 1.2158821,-2.36904 1.2158821,-2.36904 0,0 -0.2212882,-0.0035 -0.4246835,-0.006 m 4.6407694,2.466824 0.364223,0.0047 C 13.775105,38.237977 12.770515,38.91514 11.633597,38.94414 10.999537,38.96033 10.343515,38.758236 9.8184486,38.384635 9.5961017,38.226428 9.3397484,37.9717 9.1760539,37.748031 9.0998583,37.643918 9.0046598,37.536341 8.9648115,37.508324 8.7144886,37.332333 8.3745377,37.54655 8.416223,37.853342 c 0.011879,0.08742 0.051032,0.160505 0.1714325,0.324235 0.3532328,0.48036 0.8941191,0.917889 1.4504785,1.171896 0.227545,0.103888 0.721978,0.246441 0.980208,0.283684 1.716951,0.247608 3.387932,-0.726404 3.979947,-2.320669 0.01349,-0.03625 0.03546,-0.09654 0.03546,-0.09654 l 0.810512,-0.002 c 0,0 -1.156621,-2.396766 -1.165886,-2.383455 l -3.2e-5,-8e-6 c -0.01654,0.02376 -1.215882,2.369041 -1.215882,2.369041 0,0 0.221289,0.0035 0.424683,0.006"
inkscape:connector-curvature="0" />
<path
id="path4205"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 9,16 9,10 6.9999999,10 11,4 l 4,6 -2,0 0,5.99999 z m 0,1 4,0 0,1 -4,0 z m 11,-6 c 0,4.970563 -4.029437,9 -9,9 -4.9705627,0 -9,-4.029437 -9,-9 0,-4.9705627 4.0294373,-9 9,-9 4.970563,0 9,4.0294373 9,9 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccsssss" />
</svg>

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg3347"
version="1.1"
inkscape:version="0.91 r13725"
width="22"
height="22"
viewBox="0 0 22 22"
sodipodi:docname="toolbar_load_bak2.svg">
<metadata
id="metadata3353">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3351" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview3349"
showgrid="false"
inkscape:zoom="16"
inkscape:cx="4.60208"
inkscape:cy="16.458762"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg3347"
inkscape:snap-page="true"
inkscape:snap-center="true"
inkscape:snap-midpoints="true"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:snap-bbox-midpoints="true"
inkscape:object-paths="true"
inkscape:snap-intersection-paths="false"
inkscape:object-nodes="false"
inkscape:snap-smooth-nodes="true" />
<path
id="path4139"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 15.022095,26 14.977905,30 13,30 13,26 Z M 3,41 3,25 l 15,0 2,2 0,8 -1,0 0,-7.5 L 17.5,26 16,26 16,30.955806 7,31.044196 7,26 l -3,0 0,14 9,0 0,1 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccccccc" />
<path
id="path4247-4"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 9.246397,34.738661 -0.3642239,-0.0047 C 9.3584906,33.706164 10.363081,33.029 11.5,33 c 0.634058,-0.01617 1.29008,0.185927 1.815147,0.559527 0.222346,0.158206 0.4787,0.412935 0.642394,0.636604 0.0762,0.104112 0.171394,0.21169 0.211243,0.239706 0.250322,0.175992 0.590274,-0.03823 0.548588,-0.345018 -0.01189,-0.08742 -0.05104,-0.160504 -0.171432,-0.324234 -0.353234,-0.480356 -0.89412,-0.917884 -1.45048,-1.171892 -0.227542,-0.10389 -0.721976,-0.24644 -0.980207,-0.283682 -1.716952,-0.247609 -3.3879328,0.726403 -3.9799465,2.320668 -0.013502,0.03626 -0.035481,0.09653 -0.035481,0.09653 l -0.8105122,0.002 c 0,0 1.1566206,2.396766 1.1658861,2.383454 l 3.16e-5,8e-6 c 0.016536,-0.02376 1.2158821,-2.36904 1.2158821,-2.36904 0,0 -0.2212882,-0.0035 -0.4246835,-0.006 m 4.6407694,2.466824 0.364223,0.0047 C 13.775105,38.237977 12.770515,38.91514 11.633597,38.94414 10.999537,38.96033 10.343515,38.758236 9.8184486,38.384635 9.5961017,38.226428 9.3397484,37.9717 9.1760539,37.748031 9.0998583,37.643918 9.0046598,37.536341 8.9648115,37.508324 8.7144886,37.332333 8.3745377,37.54655 8.416223,37.853342 c 0.011879,0.08742 0.051032,0.160505 0.1714325,0.324235 0.3532328,0.48036 0.8941191,0.917889 1.4504785,1.171896 0.227545,0.103888 0.721978,0.246441 0.980208,0.283684 1.716951,0.247608 3.387932,-0.726404 3.979947,-2.320669 0.01349,-0.03625 0.03546,-0.09654 0.03546,-0.09654 l 0.810512,-0.002 c 0,0 -1.156621,-2.396766 -1.165886,-2.383455 l -3.2e-5,-8e-6 c -0.01654,0.02376 -1.215882,2.369041 -1.215882,2.369041 0,0 0.221289,0.0035 0.424683,0.006"
inkscape:connector-curvature="0" />
<path
id="path4205"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 9,14 9,10 6.9999999,10 11,4 l 4,6 -2,0 0,3.99999 z m 0,1 4,0 0,1 -4,0 z m 0,2 4,0 0,1 -4,0 z m 11,-6 c 0,4.970563 -4.029437,9 -9,9 -4.9705627,0 -9,-4.029437 -9,-9 0,-4.9705627 4.0294373,-9 9,-9 4.970563,0 9,4.0294373 9,9 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccccsssss" />
</svg>

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg3347"
version="1.1"
inkscape:version="0.91 r13725"
width="22"
height="22"
viewBox="0 0 22 22"
sodipodi:docname="toolbar_load_bak1.svg">
<metadata
id="metadata3353">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3351" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview3349"
showgrid="false"
inkscape:zoom="22.627417"
inkscape:cx="5.6775318"
inkscape:cy="9.269526"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg3347"
inkscape:snap-page="true"
inkscape:snap-center="true"
inkscape:snap-midpoints="true"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:snap-bbox-midpoints="true"
inkscape:object-paths="true"
inkscape:snap-intersection-paths="false"
inkscape:object-nodes="false"
inkscape:snap-smooth-nodes="true" />
<path
id="path4139"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 15.022095,26 14.977905,30 13,30 13,26 Z M 3,41 3,25 l 15,0 2,2 0,8 -1,0 0,-7.5 L 17.5,26 16,26 16,30.955806 7,31.044196 7,26 l -3,0 0,14 9,0 0,1 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccccccc" />
<path
id="path4247-4"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 9.246397,34.738661 -0.3642239,-0.0047 C 9.3584906,33.706164 10.363081,33.029 11.5,33 c 0.634058,-0.01617 1.29008,0.185927 1.815147,0.559527 0.222346,0.158206 0.4787,0.412935 0.642394,0.636604 0.0762,0.104112 0.171394,0.21169 0.211243,0.239706 0.250322,0.175992 0.590274,-0.03823 0.548588,-0.345018 -0.01189,-0.08742 -0.05104,-0.160504 -0.171432,-0.324234 -0.353234,-0.480356 -0.89412,-0.917884 -1.45048,-1.171892 -0.227542,-0.10389 -0.721976,-0.24644 -0.980207,-0.283682 -1.716952,-0.247609 -3.3879328,0.726403 -3.9799465,2.320668 -0.013502,0.03626 -0.035481,0.09653 -0.035481,0.09653 l -0.8105122,0.002 c 0,0 1.1566206,2.396766 1.1658861,2.383454 l 3.16e-5,8e-6 c 0.016536,-0.02376 1.2158821,-2.36904 1.2158821,-2.36904 0,0 -0.2212882,-0.0035 -0.4246835,-0.006 m 4.6407694,2.466824 0.364223,0.0047 C 13.775105,38.237977 12.770515,38.91514 11.633597,38.94414 10.999537,38.96033 10.343515,38.758236 9.8184486,38.384635 9.5961017,38.226428 9.3397484,37.9717 9.1760539,37.748031 9.0998583,37.643918 9.0046598,37.536341 8.9648115,37.508324 8.7144886,37.332333 8.3745377,37.54655 8.416223,37.853342 c 0.011879,0.08742 0.051032,0.160505 0.1714325,0.324235 0.3532328,0.48036 0.8941191,0.917889 1.4504785,1.171896 0.227545,0.103888 0.721978,0.246441 0.980208,0.283684 1.716951,0.247608 3.387932,-0.726404 3.979947,-2.320669 0.01349,-0.03625 0.03546,-0.09654 0.03546,-0.09654 l 0.810512,-0.002 c 0,0 -1.156621,-2.396766 -1.165886,-2.383455 l -3.2e-5,-8e-6 c -0.01654,0.02376 -1.215882,2.369041 -1.215882,2.369041 0,0 0.221289,0.0035 0.424683,0.006"
inkscape:connector-curvature="0" />
<path
id="path4205"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 9,12 9,10 6.9999999,10 11,4 l 4,6 -2,0 0,1.99999 z m 0,3 4,0 0,1 -4,0 z m 0,-2 4,0 0,1 -4,0 z m 0,4 4,0 0,1 -4,0 z m 11,-6 c 0,4.970563 -4.029437,9 -9,9 -4.9705627,0 -9,-4.029437 -9,-9 0,-4.9705627 4.0294373,-9 9,-9 4.970563,0 9,4.0294373 9,9 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccccccccsssss" />
</svg>

After

Width:  |  Height:  |  Size: 5.4 KiB

114
theme/toolbar_merge.svg Normal file
View File

@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg3347"
version="1.1"
inkscape:version="0.91 r13725"
width="22"
height="22"
viewBox="0 0 22 22"
sodipodi:docname="toolbar_merge.svg">
<metadata
id="metadata3353">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3351" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1058"
id="namedview3349"
showgrid="false"
inkscape:zoom="45.254834"
inkscape:cx="12.733033"
inkscape:cy="8.6178565"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg3347"
inkscape:snap-page="true"
inkscape:snap-center="true"
inkscape:snap-midpoints="true"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:snap-bbox-midpoints="true"
inkscape:object-paths="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-smooth-nodes="true"
inkscape:snap-object-midpoints="true" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 14,8 0,1 3.5,0 C 17.785649,9 18,9.2143514 18,9.5 l 0,8 c 0,0.285649 -0.214351,0.5 -0.5,0.5 l -8,0 C 9.2143514,18 9,17.785649 9,17.5 L 9,14 8,14 8,17.5 C 8,18.322351 8.6776486,19 9.5,19 l 8,0 c 0.822351,0 1.5,-0.677649 1.5,-1.5 l 0,-8 C 19,8.6776486 18.322351,8 17.5,8 Z"
id="path4178"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccssssssccssssssc" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 4.5,3 C 3.6776486,3 3,3.6776486 3,4.5 l 0,8 C 3,13.322351 3.6776486,14 4.5,14 L 8,14 8,13 4.5,13 C 4.2143514,13 4,12.785649 4,12.5 l 0,-8 C 4,4.2143514 4.2143514,4 4.5,4 l 8,0 C 12.785649,4 13,4.2143514 13,4.5 L 13,8 14,8 14,4.5 C 14,3.6776486 13.322351,3 12.5,3 Z"
id="rect4160"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssccssssssccsss" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 13.006987,11.000001 0,-1.000001 1,0 0,1.000001 z"
id="path4221"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 12.507054,14 C 13.329406,14 14,13.325351 14,12.503 L 14,12 l -1,0 0.0071,0.50335 c 0.004,0.28562 -0.214351,0.5 -0.5,0.5 L 12,13 l 0,1 z"
id="path4217"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssccssccs" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 12,9 -1,0 0,-1 1,0 z"
id="path4213"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 9.5,8 C 8.6776486,8 8,8.6776486 8,9.5 L 8,10 9,10 9,9.5 C 9,9.2143514 9.2143514,9 9.5,9 L 10,9 10,8 Z"
id="path4208"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssccssccs" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path4140"
d="m 10,14 0,-1.000001 1,0 L 11,14 Z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 8,12 0,-1.000001 1,0 L 9,12 Z"
id="path4142"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
viewBox="0 0 22 22"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="toolbar_shelf_groups_new.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.313709"
inkscape:cx="32.401037"
inkscape:cy="2.7836187"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1058"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:snap-center="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:bbox-paths="true"
inkscape:snap-page="true"
inkscape:snap-object-midpoints="true" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1030.3622)">
<path
id="path4183"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-opacity:1"
d="m 16,1040.3622 -4,0 0,-4 -2,0 0,4 -4,0 0,2 4,0 0,4 2,0 0,-4 4,0 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

71
theme/toolbar_save.svg Normal file
View File

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg3347"
version="1.1"
inkscape:version="0.91 r13725"
width="22"
height="22"
viewBox="0 0 22 22"
sodipodi:docname="toolbar_shelf_backup.svg">
<metadata
id="metadata3353">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3351" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1058"
id="namedview3349"
showgrid="false"
inkscape:zoom="16"
inkscape:cx="6.7411539"
inkscape:cy="9.1996862"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg3347"
inkscape:snap-page="true"
inkscape:snap-center="true"
inkscape:snap-midpoints="true"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:snap-bbox-midpoints="true"
inkscape:object-paths="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-smooth-nodes="true" />
<path
id="rect4176"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 7,11 8,0 c 0.554,0 1,0.446 1,1 l 0,5 c 0,0.554 -0.446,1 -1,1 L 7,18 C 6.446,18 6,17.554 6,17 l 0,-5 c 0,-0.554 0.446,-1 1,-1 z m 6,-6 0,2 1,0 0,-2 z M 7,4 15,4 15,8 7,8 Z m 0,10 8,0 0,1 -8,0 z m 0,2 8,0 0,1 -8,0 z m 0,-4 8,0 0,1 -8,0 z m 10,6.999776 c 0.655063,0.0012 0.999939,-0.319574 0.9998,-1.000001 L 18,5.25 16,3 C 15.891211,3.00383 15.5,3 5,3 4.44916,3.00365 4.0008277,3.3765823 4,4 l 0,14 c 0.00216,0.682283 0.3092733,1.002597 1,0.999776 4.1834378,1.3e-5 8.413259,0 12,0 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssssssscccccccccccccccccccccccccccccacccc" />
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
viewBox="0 0 22 22"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="toolbar_shelf_groups_remove.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="16"
inkscape:cx="4.0799663"
inkscape:cy="14.039851"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1028"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:snap-center="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:bbox-paths="true"
inkscape:snap-page="true"
inkscape:snap-object-midpoints="true"
inkscape:snap-smooth-nodes="true"
inkscape:object-paths="true"
inkscape:snap-midpoints="true" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1030.3622)">
<path
id="rect4142"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m -13.625,1042.9515 1,0 0,5 -1,0 z m 0,8 1,0 0,4 -1,0 z m 10,-10 -12,0 0,16 12,0 0,-3 -1,0 0,1.9999 -6,0 0,-7 -4,0 0,-7 10,0 0,2.0001 1,0 z m -8,8.9999 0,6 -3,0 0,-6 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccccccsccccccccc" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 9,3 C 8.2655448,3 7.9107212,3.6429 8,4 L 8,5 6.1992188,5 C 6.1042467,5 6,5.1054187 6,5.1992188 L 6,6 5,6 5,7 17,7 17,6 16,6 16,5.1992188 C 16,5.1062187 15.89575,5 15.800781,5 L 14,5 14,4 C 14,3.666 13.679086,3 13,3 Z M 9.1992188,4 12.800781,4 C 13.005063,4 13,4.2605 13,4.5 L 13,5 9,5 9,4.5 C 9,4.2666 8.9617907,4 9.1992188,4 Z M 6,8 6,17.748047 C 5.9923757,18.441747 6.6418406,19 7.3066406,19 l 7.3867184,0 C 15.358158,19 16,18.441647 16,17.748047 L 16,8 Z m 1,2 2,0 0,7 -2,0 z m 3,0 2,0 0,7 -2,0 z m 3,0 2,0 0,7 -2,0 z"
transform="translate(0,1030.3622)"
id="rect4155"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sccssccccccsscssssssccssccsssccccccccccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

Some files were not shown because too many files have changed in this diff Show More