📄 winutils.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 + -