📄 sortprefwinc.c
字号:
/* * $Id: SortPrefWinC.C,v 1.3 2001/03/07 10:41:36 evgeny Exp $ * * Copyright (c) 1994 HAL Computer Systems International, Ltd. * * HAL COMPUTER SYSTEMS INTERNATIONAL, LTD. * 1315 Dell Avenue * Campbell, CA 95008 * * Author: Greg Hilton * Contributors: Tom Lang, Frank Bieser, and others * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * http://www.gnu.org/copyleft/gpl.html * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#include <config.h>#include "SortPrefWinC.h"#include "SortMgrC.h"#include "SortPrefC.h"#include "FolderC.h"#include "FolderPrefC.h"#include "IshAppC.h"#include "MainWinC.h"#include <hgl/WArgList.h>#include <hgl/WXmString.h>#include <hgl/RowColC.h>#include <hgl/VBoxC.h>#include <hgl/CharC.h>#include <Xm/Form.h>#include <Xm/Frame.h>#include <Xm/RowColumn.h>#include <Xm/ToggleB.h>#include <Xm/Label.h>/*--------------------------------------------------------------- * Constructor */SortPrefWinC::SortPrefWinC(Widget parent) : OptWinC(parent, "sortWin"){ WArgList args; Widget wlist[30]; thread.name = "THREAD"; number.name = "NUMBER"; status.name = "STATUS"; sender.name = "SENDER"; to.name = "TO"; subject.name = "SUBJECT"; date.name = "DATE"; lines.name = "LINES"; bytes.name = "BYTES";//// Create appForm hierarchy//// RowColC keyRC// Frame threadFrame// Frame folderFrame// args.Reset(); args.TopAttachment(XmATTACH_FORM); args.LeftAttachment(XmATTACH_FORM); args.RightAttachment(XmATTACH_FORM); args.BottomAttachment(XmATTACH_NONE); keyRC = new RowColC(appForm, "keyRC", ARGS); args.TopAttachment(XmATTACH_WIDGET, *keyRC); Widget threadFrame = XmCreateFrame(appForm, "threadFrame", ARGS); args.TopAttachment(XmATTACH_WIDGET, threadFrame); Widget folderFrame = XmCreateFrame(appForm, "folderFrame", ARGS);//// Set up 3 Columns// keyRC->Defer(True); keyRC->SetOrientation(RcROW_MAJOR); keyRC->SetColCount(3); keyRC->SetColAlignment(XmALIGNMENT_BEGINNING); keyRC->SetColWidthAdjust(RcADJUST_EQUAL); keyRC->SetColResize(False); keyRC->SetColResize(0, True); keyRC->SetColAlignment(0, XmALIGNMENT_CENTER);//// Create keyRC hierarchy//// keyRC// Label ordTitle// Label keyTitle// Label dirTitle// Label numberLabel// ToggleButton numberTB// Frame numberFrame// Label statusLabel// ToggleButton statusTB// Frame statusFrame// Label senderLabel// ToggleButton senderTB// Frame senderFrame// Label toLabel// ToggleButton toTB// Frame toFrame// Label subjectLabel// ToggleButton subjectTB// Frame subjectFrame// Label dateLabel// ToggleButton dateTB// Frame dateFrame// Label linesLabel// ToggleButton linesTB// Frame linesFrame// Label bytesLabel// ToggleButton bytesTB// Frame bytesFrame// Widget ordTitle = XmCreateLabel(*keyRC, "orderTitle", 0,0); Widget keyTitle = XmCreateLabel(*keyRC, "keyTitle", 0,0); Widget dirTitle = XmCreateLabel(*keyRC, "directionTitle", 0,0); Widget numberFrame = XmCreateFrame(*keyRC, "numberFrame", 0,0); Widget statusFrame = XmCreateFrame(*keyRC, "statusFrame", 0,0); Widget senderFrame = XmCreateFrame(*keyRC, "senderFrame", 0,0); Widget toFrame = XmCreateFrame(*keyRC, "toFrame", 0,0); Widget subjectFrame = XmCreateFrame(*keyRC, "subjectFrame", 0,0); Widget dateFrame = XmCreateFrame(*keyRC, "dateFrame", 0,0); Widget linesFrame = XmCreateFrame(*keyRC, "linesFrame", 0,0); Widget bytesFrame = XmCreateFrame(*keyRC, "bytesFrame", 0,0); args.Reset(); args.Alignment(XmALIGNMENT_CENTER); args.RecomputeSize(False); number.label = XmCreateLabel(*keyRC, "numberLabel", ARGS); status.label = XmCreateLabel(*keyRC, "statusLabel", ARGS); sender.label = XmCreateLabel(*keyRC, "senderLabel", ARGS); to.label = XmCreateLabel(*keyRC, "toLabel", ARGS); subject.label = XmCreateLabel(*keyRC, "subjectLabel", ARGS); date.label = XmCreateLabel(*keyRC, "dateLabel", ARGS); lines.label = XmCreateLabel(*keyRC, "linesLabel", ARGS); bytes.label = XmCreateLabel(*keyRC, "bytesLabel", ARGS); args.Reset(); args.Alignment(XmALIGNMENT_BEGINNING); number.tb = XmCreateToggleButton(*keyRC, "numberTB", ARGS); status.tb = XmCreateToggleButton(*keyRC, "statusTB", ARGS); sender.tb = XmCreateToggleButton(*keyRC, "senderTB", ARGS); to.tb = XmCreateToggleButton(*keyRC, "toTB", ARGS); subject.tb = XmCreateToggleButton(*keyRC, "subjectTB", ARGS); date.tb = XmCreateToggleButton(*keyRC, "dateTB", ARGS); lines.tb = XmCreateToggleButton(*keyRC, "linesTB", ARGS); bytes.tb = XmCreateToggleButton(*keyRC, "bytesTB", ARGS); XtAddCallback(number.tb, XmNvalueChangedCallback, (XtCallbackProc)ToggleKey, (XtPointer)this); XtAddCallback(status.tb, XmNvalueChangedCallback, (XtCallbackProc)ToggleKey, (XtPointer)this); XtAddCallback(subject.tb, XmNvalueChangedCallback, (XtCallbackProc)ToggleKey, (XtPointer)this); XtAddCallback(sender.tb, XmNvalueChangedCallback, (XtCallbackProc)ToggleKey, (XtPointer)this); XtAddCallback(to.tb, XmNvalueChangedCallback, (XtCallbackProc)ToggleKey, (XtPointer)this); XtAddCallback(date.tb, XmNvalueChangedCallback, (XtCallbackProc)ToggleKey, (XtPointer)this); XtAddCallback(lines.tb, XmNvalueChangedCallback, (XtCallbackProc)ToggleKey, (XtPointer)this); XtAddCallback(bytes.tb, XmNvalueChangedCallback, (XtCallbackProc)ToggleKey, (XtPointer)this);//// Fill frames//// numberFrame// RadioBox numberRadio// statusFrame// RadioBox statusRadio// senderFrame// RadioBox senderRadio// toFrame// RadioBox toRadio// subjectFrame// RadioBox subjectRadio// dateFrame// RadioBox dateRadio// linesFrame// RadioBox linesRadio// bytesFrame// RadioBox bytesRadio// args.Reset(); args.Orientation(XmHORIZONTAL); args.Packing(XmPACK_TIGHT); Widget numberRadio = XmCreateRadioBox(numberFrame, "numberRadio", ARGS); Widget statusRadio = XmCreateRadioBox(statusFrame, "statusRadio", ARGS); Widget senderRadio = XmCreateRadioBox(senderFrame, "senderRadio", ARGS); Widget toRadio = XmCreateRadioBox(toFrame, "toRadio", ARGS); Widget subjectRadio = XmCreateRadioBox(subjectFrame, "subjectRadio", ARGS); Widget dateRadio = XmCreateRadioBox(dateFrame, "dateRadio", ARGS); Widget linesRadio = XmCreateRadioBox(linesFrame, "linesRadio", ARGS); Widget bytesRadio = XmCreateRadioBox(bytesFrame, "bytesRadio", ARGS);//// Create numberRadio hierarchy//// numberRadio// ToggleButton numberATB// ToggleButton numberDTB// number.atb = XmCreateToggleButton(numberRadio, "ascendTB", 0,0); number.dtb = XmCreateToggleButton(numberRadio, "descendTB", 0,0); wlist[0] = number.atb; wlist[1] = number.dtb; XtManageChildren(wlist, 2); XtManageChild(numberRadio); // numberFrame children XtAddCallback(number.atb, XmNvalueChangedCallback, (XtCallbackProc)ToggleDir, (XtPointer)this); XtAddCallback(number.dtb, XmNvalueChangedCallback, (XtCallbackProc)ToggleDir, (XtPointer)this);//// Create statusRadio hierarchy//// statusRadio// ToggleButton statusATB// ToggleButton statusDTB// status.atb = XmCreateToggleButton(statusRadio, "ascendTB", 0,0); status.dtb = XmCreateToggleButton(statusRadio, "descendTB", 0,0); wlist[0] = status.atb; wlist[1] = status.dtb; XtManageChildren(wlist, 2); XtManageChild(statusRadio); // statusFrame children XtAddCallback(status.atb, XmNvalueChangedCallback, (XtCallbackProc)ToggleDir, (XtPointer)this); XtAddCallback(status.dtb, XmNvalueChangedCallback, (XtCallbackProc)ToggleDir, (XtPointer)this);//// Create senderRadio hierarchy//// senderRadio// ToggleButton senderATB// ToggleButton senderDTB// sender.atb = XmCreateToggleButton(senderRadio, "ascendTB", 0,0); sender.dtb = XmCreateToggleButton(senderRadio, "descendTB", 0,0); wlist[0] = sender.atb; wlist[1] = sender.dtb; XtManageChildren(wlist, 2); XtManageChild(senderRadio); // senderFrame children XtAddCallback(sender.atb, XmNvalueChangedCallback, (XtCallbackProc)ToggleDir, (XtPointer)this); XtAddCallback(sender.dtb, XmNvalueChangedCallback, (XtCallbackProc)ToggleDir, (XtPointer)this);//// Create toRadio hierarchy//// toRadio// ToggleButton toATB// ToggleButton toDTB// to.atb = XmCreateToggleButton(toRadio, "ascendTB", 0,0); to.dtb = XmCreateToggleButton(toRadio, "descendTB", 0,0); wlist[0] = to.atb; wlist[1] = to.dtb; XtManageChildren(wlist, 2); XtManageChild(toRadio); // toFrame children XtAddCallback(to.atb, XmNvalueChangedCallback, (XtCallbackProc)ToggleDir, (XtPointer)this); XtAddCallback(to.dtb, XmNvalueChangedCallback, (XtCallbackProc)ToggleDir, (XtPointer)this);//// Create subjectRadio hierarchy//// subjectRadio// ToggleButton subjectATB// ToggleButton subjectDTB// subject.atb = XmCreateToggleButton(subjectRadio, "ascendTB", 0,0); subject.dtb = XmCreateToggleButton(subjectRadio, "descendTB", 0,0); wlist[0] = subject.atb; wlist[1] = subject.dtb; XtManageChildren(wlist, 2); XtManageChild(subjectRadio); // subjectFrame children XtAddCallback(subject.atb, XmNvalueChangedCallback,(XtCallbackProc)ToggleDir, (XtPointer)this); XtAddCallback(subject.dtb, XmNvalueChangedCallback,(XtCallbackProc)ToggleDir, (XtPointer)this);//// Create dateRadio hierarchy//// dateRadio// ToggleButton dateATB// ToggleButton dateDTB// date.atb = XmCreateToggleButton(dateRadio, "ascendTB", 0,0); date.dtb = XmCreateToggleButton(dateRadio, "descendTB", 0,0); wlist[0] = date.atb; wlist[1] = date.dtb; XtManageChildren(wlist, 2); XtManageChild(dateRadio); // dateFrame children XtAddCallback(date.atb, XmNvalueChangedCallback, (XtCallbackProc)ToggleDir, (XtPointer)this); XtAddCallback(date.dtb, XmNvalueChangedCallback, (XtCallbackProc)ToggleDir, (XtPointer)this);//// Create linesRadio hierarchy//// linesRadio// ToggleButton linesATB// ToggleButton linesDTB// lines.atb = XmCreateToggleButton(linesRadio, "ascendTB", 0,0); lines.dtb = XmCreateToggleButton(linesRadio, "descendTB", 0,0); wlist[0] = lines.atb; wlist[1] = lines.dtb; XtManageChildren(wlist, 2); XtManageChild(linesRadio); // linesFrame children XtAddCallback(lines.atb, XmNvalueChangedCallback, (XtCallbackProc)ToggleDir, (XtPointer)this); XtAddCallback(lines.dtb, XmNvalueChangedCallback, (XtCallbackProc)ToggleDir, (XtPointer)this);//// Create bytesRadio hierarchy//// bytesRadio// ToggleButton bytesATB// ToggleButton bytesDTB// bytes.atb = XmCreateToggleButton(bytesRadio, "ascendTB", 0,0); bytes.dtb = XmCreateToggleButton(bytesRadio, "descendTB", 0,0); wlist[0] = bytes.atb; wlist[1] = bytes.dtb; XtManageChildren(wlist, 2); XtManageChild(bytesRadio); // bytesFrame children XtAddCallback(bytes.atb, XmNvalueChangedCallback, (XtCallbackProc)ToggleDir, (XtPointer)this); XtAddCallback(bytes.dtb, XmNvalueChangedCallback, (XtCallbackProc)ToggleDir, (XtPointer)this);//// Set initial state of buttons// XmToggleButtonSetState(number.tb, False, False); XmToggleButtonSetState(number.atb, True, False); XmToggleButtonSetState(number.dtb, False, False); XmToggleButtonSetState(status.tb, False, False); XmToggleButtonSetState(status.atb, True, False); XmToggleButtonSetState(status.dtb, False, False); XmToggleButtonSetState(sender.tb, False, False); XmToggleButtonSetState(sender.atb, True, False); XmToggleButtonSetState(sender.dtb, False, False); XmToggleButtonSetState(to.tb, False, False); XmToggleButtonSetState(to.atb, True, False); XmToggleButtonSetState(to.dtb, False, False); XmToggleButtonSetState(subject.tb, False, False); XmToggleButtonSetState(subject.atb, True, False); XmToggleButtonSetState(subject.dtb, False, False); XmToggleButtonSetState(date.tb, False, False); XmToggleButtonSetState(date.atb, True, False); XmToggleButtonSetState(date.dtb, False, False); XmToggleButtonSetState(lines.tb, False, False); XmToggleButtonSetState(lines.atb, True, False); XmToggleButtonSetState(lines.dtb, False, False); XmToggleButtonSetState(bytes.tb, False, False); XmToggleButtonSetState(bytes.atb, True, False); XmToggleButtonSetState(bytes.dtb, False, False);//// Add widgets to keyRC// int wcount = 0; wlist[wcount++] = ordTitle; wlist[wcount++] = keyTitle; wlist[wcount++] = dirTitle; wlist[wcount++] = number.label; wlist[wcount++] = number.tb; wlist[wcount++] = numberFrame; wlist[wcount++] = status.label; wlist[wcount++] = status.tb; wlist[wcount++] = statusFrame; wlist[wcount++] = subject.label; wlist[wcount++] = subject.tb; wlist[wcount++] = subjectFrame; wlist[wcount++] = sender.label; wlist[wcount++] = sender.tb; wlist[wcount++] = senderFrame; wlist[wcount++] = to.label; wlist[wcount++] = to.tb; wlist[wcount++] = toFrame; wlist[wcount++] = date.label; wlist[wcount++] = date.tb; wlist[wcount++] = dateFrame; wlist[wcount++] = lines.label; wlist[wcount++] = lines.tb; wlist[wcount++] = linesFrame; wlist[wcount++] = bytes.label; wlist[wcount++] = bytes.tb; wlist[wcount++] = bytesFrame; keyRC->SetChildren(wlist, wcount); keyRC->Defer(False);//// Add buttons for specifying threading parameters//// threadFrame// Form threadForm// ToggleButton threadTB// Frame threadSortFrame// RadioBox threadRadio// ToggleButton threadOldTB// ToggleButton threadNewTB// Widget threadForm = XmCreateForm(threadFrame, "threadForm", 0,0); args.Reset(); args.TopAttachment(XmATTACH_FORM); args.LeftAttachment(XmATTACH_FORM); args.RightAttachment(XmATTACH_NONE); args.BottomAttachment(XmATTACH_NONE); thread.tb = XmCreateToggleButton(threadForm, "threadTB", ARGS); XtAddCallback(thread.tb, XmNvalueChangedCallback, (XtCallbackProc)ToggleKey, (XtPointer)this); args.TopAttachment(XmATTACH_WIDGET, thread.tb); args.BottomAttachment(XmATTACH_FORM); Widget threadSortFrame = XmCreateFrame(threadForm, "threadSortFrame", ARGS); args.Reset(); args.Orientation(XmVERTICAL); args.Packing(XmPACK_TIGHT); Widget threadRadio = XmCreateRadioBox(threadSortFrame, "threadRadio", ARGS); thread.atb = XmCreateToggleButton(threadRadio, "threadOldTB", 0,0); thread.dtb = XmCreateToggleButton(threadRadio, "threadNewTB", 0,0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -