⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winutils.c

📁 Gcomm is a serial communications program similar to seyon, but more modern, and easier to use. Works
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <string.h>#include <stdarg.h>#include <sys/ioctl.h>#include <termios.h>#include <gtk/gtk.h>#include "callbacks.h"#include "windows.h"#include "support.h"#include "gcomm.h"#include "winutils.h"char *getHostId(){	return gtk_entry_get_text(GTK_ENTRY(hostEnt)) ;}char *getPortNo(){	return gtk_entry_get_text(GTK_ENTRY(portNo)) ;}char *getPhoneNo(){	return gtk_entry_get_text(GTK_ENTRY(phoneNoEnt)) ;}char *serialPort(){	return gtk_entry_get_text(GTK_ENTRY(lineTxt)) ;}voidsetSerialPort(const char *port){	gtk_entry_set_text( GTK_ENTRY(lineTxt), port) ;}char *getEscChar(){	return gtk_entry_get_text(GTK_ENTRY(escChar)) ;}static	bool	have_context = False ;static	guint	status_context ;voidWindowStatus(char *format, ...){	va_list	ap ;	char	line[256] ;	if( !have_context ) {	  status_context =	    gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar), "gcomm") ;	  have_context = True ;	}	va_start(ap, format) ;	vsprintf(line, format, ap) ;	gtk_statusbar_pop(GTK_STATUSBAR(statusbar), status_context) ;	gtk_statusbar_push(GTK_STATUSBAR(statusbar), status_context, line) ;	va_end(ap) ;}voidWindowXferStatus(char *format, ...){	va_list	ap ;	char	line[256] ;	va_start(ap, format) ;	vsnprintf(line, sizeof(line), format, ap) ;	gtk_label_set_text( GTK_LABEL(progressLbl), line) ;	va_end(ap) ;}	/* Set various serial port settings to match their variables */voidWindowGetSerial(){	GtkWidget *set ;	int	i ;	switch( byteSize ) {	  case 5: set = bit5But ; break ;	  case 7: set = bit7But ; break ;	  case 8: set = bit8But ; break ;	  default: set = NULL ;	}	if( set != NULL )	  gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(set), True ) ;	switch( parityType ) {	  case ParityNone: set = noneBut ; break ;	  case ParityEven: set = evenBut ; break ;	  case ParityOdd: set = oddBut ; break ;	  case ParityZero: set = zeroBut ; break ;	  case ParityOne: set = oneBut ; break ;	  default: set = NULL ;	}	if( set != NULL )	  gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(set), True ) ;	switch( stopBits ) {	  case 1: set = stop1But ; break ;	  case 2: set = stop2But ; break ;	  default: set = NULL ;	}	if( set != NULL )	  gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(set), True ) ;	switch( flowControl ) {	  case FlowNone: set = flowNoneBut ; break ;	  case FlowXonXoff: set = flowXonBut ; break ;	  case FlowRtsCts: set = flowRtsBut ; break ;	  default: set = NULL ;	}	if( set != NULL )	  gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(set), True ) ;	gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(stripBut), inputStrip );	for( i=0; i < nbaudList; ++i)	  if( baudList[i] == baudRate ) {	    gtk_option_menu_set_history (GTK_OPTION_MENU (baudmenu), i);	    break ;	  }}static	voidset1style( GtkWidget *widget, int flag ){	gtk_widget_set_style( widget, flag ? lightOnStyle : lightOffStyle) ;}voidWindowModem(){	set1style( leLbl, modemFlags & TIOCM_LE ) ;	set1style( dtrLbl, modemFlags & TIOCM_DTR ) ;	set1style( rtsLbl,  modemFlags & TIOCM_RTS ) ;	set1style( ctsLbl,  modemFlags & TIOCM_CTS ) ;	set1style( cdLbl,  modemFlags & TIOCM_CD ) ;	set1style( rngLbl,  modemFlags & TIOCM_RNG ) ;	set1style( dsrLbl,  modemFlags & TIOCM_DSR ) ;	set1style( hfLbl,  hardwareFlow ) ;}voidWindowXferGaugeMax( int max ){	GtkAdjustment *adj = GTK_PROGRESS( progressbar )->adjustment ;	adj->upper = max ;	gtk_adjustment_changed( adj ) ;}voidWindowXferGauge( int value ){	gtk_progress_set_value( GTK_PROGRESS( progressbar ), (gfloat)value) ;}	/* Set send/receive/cancel buttons properly */voidWindowTransferActive( bool flag ){	gtk_widget_set_sensitive( sendBut, connectionActive && !flag ) ;	gtk_widget_set_sensitive( receiveBut, connectionActive && !flag ) ;	gtk_widget_set_sensitive( cancelBut, connectionActive && flag ) ;	gtk_widget_set_sensitive( serverBut, connectionActive && !flag ) ;}	/* change state of Connect/Disconnect buttons */	/* both connect/disconnect are valid choices for serial I/O,	 * as the program may have gotten confused about whether or	 * not carrier has been lost.  For other I/O, the state of	 * the connection is well known.	 */voidWindowConnected(){	if( connectionType == ConnectionSerial ) {	  gtk_widget_set_sensitive( connectBut, True ) ;	  gtk_widget_set_sensitive( disconnectBut, True ) ;	}	else {	  gtk_widget_set_sensitive( connectBut, !connectionActive ) ;	  gtk_widget_set_sensitive( disconnectBut, connectionActive ) ;	}	WindowTransferActive (False);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -