亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? leds.c

?? 一個很有名的瀏覽器
?? C
字號:
/* These cute LightEmittingDiode-like indicators. *//* $Id: leds.c,v 1.58.2.5 2005/04/06 08:59:38 jonas Exp $ */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <stdio.h>#include <stdlib.h>#include <string.h>#ifdef HAVE_SYS_TIME_H#include <sys/time.h>#endif#ifdef HAVE_TIME_H#include <time.h>#endif#include "elinks.h"#include "bfu/leds.h"#include "config/options.h"#include "intl/gettext/libintl.h"#include "lowlevel/select.h"#include "lowlevel/timer.h"#include "modules/module.h"#include "sched/session.h"#include "terminal/draw.h"#include "terminal/terminal.h"#include "terminal/window.h"#include "util/color.h"#include "util/error.h"/* Current leds allocation: * 0 - SSL connection indicator * 1 - Insert-mode indicator * 2 - JavaScript Error indicator * 3 - JavaScript pop-up blocking indicator * 4 - unused, reserved for Lua * 5 - unused *//* XXX: Currently, the leds toggling is quite hackish, some more work should go * to it (ie. some led hooks called in sync_leds() to light the leds * dynamically. --pasky *//* Always reset led to '-' when not used anymore. *//* If we would do real protection, we would do this as array of pointers. This * way someone can just get any struct led and add/subscribe appropriate struct * led for his control; however, I bet on programmers' responsibility rather, * and hope that everyone will abide the "rules". */static int timer_duration_backup = 0;static int redraw_timer = -1;static int drawing = 0;static void redraw_leds(void *);enum led_option {	LEDS_CLOCK_TREE,	LEDS_CLOCK_ENABLE,	LEDS_CLOCK_FORMAT,	LEDS_CLOCK_ALIAS,	LEDS_PANEL_TREE,	LEDS_PANEL_ENABLE,	LEDS_OPTIONS,};static struct option_info led_options[] = {	INIT_OPT_TREE("ui", N_("Clock"),		"clock", 0, N_("Digital clock in the status bar.")),	INIT_OPT_BOOL("ui.clock", N_("Enable"),		"enable", 0, 0,		N_("Whether to display a digital clock in the status bar.")),	INIT_OPT_STRING("ui.clock", N_("Format"),		"format", 0, "[%H:%M]",		N_("Format string for the digital clock. See the strftime(3)\n"		"manpage for details.")),	/* Compatibility alias. Added: 2004-04-22, 0.9.CVS. */	INIT_OPT_ALIAS("ui.timer", "clock", "ui.clock"),	INIT_OPT_TREE("ui", N_("LEDs"),		"leds", 0,		N_("LEDs (visual indicators) options.")),	INIT_OPT_BOOL("ui.leds", N_("Enable"),		"enable", 0, 1,		N_("Enable LEDs.\n"		   "These visual indicators will inform you about various states.")),	NULL_OPTION_INFO,};#define get_opt_leds(which)		led_options[(which)].option.value#define get_leds_clock_enable()		get_opt_leds(LEDS_CLOCK_ENABLE).number#define get_leds_clock_format()		get_opt_leds(LEDS_CLOCK_FORMAT).string#define get_leds_panel_enable()		get_opt_leds(LEDS_PANEL_ENABLE).numbervoidinit_leds(struct module *module){	timer_duration_backup = 0;	/* We can't setup timer here, because we may not manage to startup in	 * 100ms and we will get to problems when we will call draw_leds() on	 * uninitialized terminal. So, we will wait for draw_leds(). */}voiddone_leds(struct module *module){	if (redraw_timer >= 0) kill_timer(redraw_timer);}voidinit_led_panel(struct led_panel *leds){	int i;	for (i = 0; i < LEDS_COUNT; i++) {		leds->leds[i].number = i;		leds->leds[i].value = '-';		leds->leds[i].used__ = 0;		leds->leds_backup[i] = 0; /* assure first redraw */	}}voiddraw_leds(struct session *ses){	struct terminal *term = ses->tab->term;	struct color_pair *led_color = NULL;	int i;	int xpos = term->width - LEDS_COUNT - 3;	int ypos = term->height - 1;	int timerlen = 0;	term->leds_length = 0;	/* This should be done elsewhere, but this is very nice place where we	 * could do that easily. */	if (get_opt_int("ui.timer.enable") == 2) {		char s[256];		snprintf(s, 256, "[%d]", timer_duration);		timerlen = strlen(s);		led_color = get_bfu_color(term, "status.status-text");		if (!led_color) goto end;		term->leds_length += timerlen;		for (i = timerlen - 1; i >= 0; i--)			draw_char(term, xpos - (timerlen - i), ypos, s[i], 0, led_color);	}	if (!get_leds_panel_enable()) return;	if (!led_color) {		led_color = get_bfu_color(term, "status.status-text");		if (!led_color) goto end;	}#ifdef HAVE_STRFTIME	if (get_leds_clock_enable()) {		char s[30];		time_t curtime = time(NULL);		struct tm *loctime = localtime(&curtime);		int i, length;		int basepos = xpos - timerlen;		length = strftime(s, 30, get_leds_clock_format(), loctime);		s[length] = '\0';		term->leds_length += length;		for (i = length - 1; i >= 0; i--)			draw_char(term, basepos - (length - i), ypos, s[i], 0, led_color);	}#endif	/* We must shift the whole thing by one char to left, because we don't	 * draft the char in the right-down corner :(. */	draw_char(term, xpos, ypos, '[', 0, led_color);	for (i = 0; i < LEDS_COUNT; i++) {		struct led *led = &ses->status.leds.leds[i];		draw_char(term, xpos + i + 1, ypos, led->value, 0, led_color);	}	draw_char(term, xpos + LEDS_COUNT + 1, ypos, ']', 0, led_color);	term->leds_length += LEDS_COUNT + 2;end:	/* Redraw each 100ms. */	if (!drawing && redraw_timer < 0)		redraw_timer = install_timer(100, redraw_leds, NULL);}/* Determine if leds redrawing is necessary. Returns non-zero if so. */static intsync_leds(struct session *ses){	int resync = 0;	int i;	if (timer_duration_backup != timer_duration) {		timer_duration_backup = timer_duration;		resync++;	}	for (i = 0; i < LEDS_COUNT; i++) {		struct led *led = &ses->status.leds.leds[i];		unsigned char *led_backup = &ses->status.leds.leds_backup[i];		if (led->value != *led_backup) {			*led_backup = led->value;			resync++;		}	}	return resync;}static voidredraw_leds(void *xxx){	struct session *ses;	if (!get_leds_panel_enable()	    && get_opt_int("ui.timer.enable") != 2) {		redraw_timer = -1;		return;	}	redraw_timer = install_timer(100, redraw_leds, NULL);	if (drawing) return;	drawing = 1;	foreach (ses, sessions) {		if (!sync_leds(ses))			continue;		redraw_terminal(ses->tab->term);		draw_leds(ses);	}	drawing = 0;}voidmenu_leds_info(struct terminal *term, void *xxx, void *xxxx){	/* If LEDs ever get more dynamic we might have to change this, but it	 * should do for now. --jonas */	info_box(term, MSGBOX_FREE_TEXT | MSGBOX_SCROLLABLE,	 	 N_("LED indicators"), ALIGN_LEFT,		 msg_text(term, N_("What the different LEDs indicate:\n"		 	"\n"			"[SIJP--]\n"			" |||||`- Unused\n"			" ||||`-- Unused\n"			" |||`--- A JavaScript pop-up window was blocked\n"			" ||`---- A JavaScript error has occured\n"			" |`----- The state of insert mode for text-input form-fields\n"			" |       'i' means modeless, 'I' means insert mode is on\n"			" `------ Whether an SSL connection was used\n"			"\n"			"'-' generally indicates that the LED is off.")));}struct led *register_led(struct session *ses, int number){	if (number >= LEDS_COUNT || number < 0)		return NULL;	if (ses->status.leds.leds[number].used__)		return NULL;	ses->status.leds.leds[number].used__ = 1;	return &ses->status.leds.leds[number];}voidunregister_led(struct led *led){	assertm(led->used__, "Attempted to unregister unused led!");	led->used__ = 0;	led->value = '-';}struct module leds_module = struct_module(	/* name: */		N_("LED indicators"),	/* options: */		led_options,	/* events: */		NULL,	/* submodules: */	NULL,	/* data: */		NULL,	/* init: */		init_leds,	/* done: */		done_leds);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品资源在线看| 夜夜亚洲天天久久| 欧美日韩久久久一区| 色诱视频网站一区| 91网站视频在线观看| av一区二区三区黑人| 成人sese在线| 91美女片黄在线观看91美女| 色94色欧美sute亚洲线路一久| 色综合色综合色综合| 在线观看成人小视频| 欧美午夜一区二区三区| 欧美男女性生活在线直播观看| 欧美日韩一区二区三区在线看| 欧美性生活影院| 欧美午夜影院一区| 日韩一级黄色片| 日韩欧美一级二级| 国产亚洲精品7777| 中文字幕日韩一区二区| 亚洲理论在线观看| 视频在线观看一区二区三区| 日本亚洲天堂网| 国产在线不卡视频| 91在线国产福利| 欧美日产国产精品| 久久亚洲精品小早川怜子| 中文一区二区在线观看| 一区二区三区欧美| 精品影视av免费| 91麻豆文化传媒在线观看| 欧美猛男男办公室激情| 久久久久久综合| 一级日本不卡的影视| 麻豆精品视频在线观看免费| 国产在线播放一区| 欧美体内she精视频| 久久久精品影视| 亚洲一区二区中文在线| 国产米奇在线777精品观看| 99久久精品国产一区| 欧美日韩成人一区| 国产精品人妖ts系列视频| 亚洲一区二区视频| 懂色av一区二区夜夜嗨| 欧美日韩不卡一区二区| 中文字幕佐山爱一区二区免费| 视频一区中文字幕国产| 成人白浆超碰人人人人| 日韩一区二区三区电影在线观看 | 黄一区二区三区| 91在线云播放| 久久综合av免费| 亚洲电影第三页| 欧美日韩另类国产亚洲欧美一级| 亚洲国产成人porn| 国产美女av一区二区三区| 欧美写真视频网站| 日韩毛片在线免费观看| 国内外成人在线| 欧美丰满高潮xxxx喷水动漫| 中文字幕亚洲一区二区va在线| 九九精品视频在线看| 91精品婷婷国产综合久久竹菊| 亚洲女性喷水在线观看一区| 国产精品亚洲午夜一区二区三区| 91精品国产综合久久香蕉麻豆| 亚洲卡通动漫在线| 色综合天天综合在线视频| 欧美激情一区二区三区不卡| 黄色日韩网站视频| 26uuu国产电影一区二区| 日本人妖一区二区| 欧美高清性hdvideosex| 国产麻豆成人传媒免费观看| 国产激情91久久精品导航 | 国产乱人伦偷精品视频不卡| 欧美日韩你懂的| 一区二区三区四区高清精品免费观看| www.欧美.com| 亚洲乱码国产乱码精品精可以看 | 亚洲最新在线观看| 在线观看中文字幕不卡| 亚洲午夜成aⅴ人片| 在线亚洲人成电影网站色www| 亚洲三级小视频| 欧美视频在线观看一区二区| 视频一区二区三区中文字幕| 91精品国产欧美日韩| 老司机一区二区| 亚洲女性喷水在线观看一区| 国产精品一区二区久久不卡| 久久久99精品久久| 成人a级免费电影| 亚洲乱码国产乱码精品精小说| 91偷拍与自偷拍精品| 成人免费在线播放视频| 国产精品亲子伦对白| 91在线播放网址| 亚洲另类色综合网站| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 91女神在线视频| 国产福利一区在线| 久久久久久久久久美女| 国产精品一区专区| 欧美精品一区二区三区蜜桃| 日韩电影在线观看电影| 7777精品伊人久久久大香线蕉经典版下载 | 国产欧美视频在线观看| 国产激情精品久久久第一区二区 | 亚洲精品在线观看网站| 美女在线观看视频一区二区| 91精品国产高清一区二区三区 | 欧美色精品在线视频| 亚洲大片精品永久免费| 欧美一卡2卡3卡4卡| 精品亚洲国内自在自线福利| 成人精品国产免费网站| 欧美精品第1页| 麻豆高清免费国产一区| 国产欧美日韩一区二区三区在线观看| 男女男精品网站| 国产精品久久国产精麻豆99网站| 色一区在线观看| 午夜视频一区二区| 久久久久久久久久久99999| 91在线视频播放| 久久国产麻豆精品| 国产欧美日韩精品a在线观看| 欧美日韩在线播放一区| 国产传媒日韩欧美成人| 亚洲国产综合在线| 国产日韩在线不卡| 欧美影院午夜播放| 国产一区二区美女| 亚洲国产成人av网| 亚洲欧洲精品一区二区三区| 欧美一卡二卡三卡| 91美女在线视频| 91片在线免费观看| 99国产精品久| 久久精品国产秦先生| 一个色妞综合视频在线观看| 欧美一级免费观看| 色吧成人激情小说| 国产精品538一区二区在线| 亚洲一区二区三区激情| 国产清纯白嫩初高生在线观看91| 欧美亚洲高清一区二区三区不卡| 99精品热视频| 国产精品主播直播| 免费人成精品欧美精品| 亚洲精品欧美二区三区中文字幕| 久久久噜噜噜久噜久久综合| 制服丝袜亚洲播放| 蜜臀av一区二区在线免费观看| 五月婷婷久久丁香| 国产精品久久久久精k8| 日本中文字幕一区二区视频| 中文字幕一区免费在线观看| 国产欧美日产一区| 久久精品夜色噜噜亚洲a∨| 在线播放视频一区| 在线观看亚洲专区| 色偷偷88欧美精品久久久| 国产精品99久久久久久有的能看| 免费观看91视频大全| 丝袜脚交一区二区| 亚洲福利一二三区| 亚洲一线二线三线视频| 亚洲精品五月天| 亚洲v日本v欧美v久久精品| 亚洲午夜免费电影| 亚洲在线一区二区三区| 亚洲一区二区三区四区在线| 亚洲一区二区在线视频| 午夜欧美大尺度福利影院在线看| 看电视剧不卡顿的网站| 久久精品国产亚洲高清剧情介绍 | 99re热视频精品| av一区二区三区在线| 在线观看亚洲a| 欧美色窝79yyyycom| 欧美精品高清视频| 欧美va亚洲va在线观看蝴蝶网| 日韩一区二区电影在线| 午夜私人影院久久久久| 亚洲综合色自拍一区| 国产91精品一区二区麻豆网站| 欧美性大战xxxxx久久久| 亚洲女同ⅹxx女同tv| 日韩欧美一区二区久久婷婷| 午夜精品成人在线| 欧美sm极限捆绑bd| 国产精品二区一区二区aⅴ污介绍| 欧美一区二区三区思思人| 972aa.com艺术欧美| 成人v精品蜜桃久久一区| 99国产精品视频免费观看| 91久久免费观看|