//--------------------------------------------------------- bool CVIEW_Table_Control::Load(const wxString &File_Name) { CSG_Table Table(&File_Name); bool bResult = Table.Get_Count() > 0 && Table.Get_Field_Count() == m_pTable->Get_Field_Count() && m_pTable->Assign_Values(&Table) && Update_Table(); PROCESS_Set_Okay(); return( bResult ); }
static int device_ioctl(struct file *file, unsigned int ioctl_num, unsigned long ioctl_param) { struct Rule* r; unsigned long flags; switch (ioctl_num) { //Insert a new rule to rules case IOCTL_ROX_INSERT_RULE: //printk(KERN_INFO "Inset a new rule\n"); r=(struct Rule*)ioctl_param; //Print new rule print_rule(r); //Insert this new rule to RuleTable write_lock_irqsave(&my_rwlock,flags); Insert_Table(&rt,r,GFP_ATOMIC); write_unlock_irqrestore(&my_rwlock,flags); //Print_Table(&rt); break; //Delete a rule from rules case IOCTL_ROX_DELETE_RULE: r=(struct Rule*)ioctl_param; //Print new rule //print_rule(r); //Delete thie rule from RuleTable write_lock_irqsave(&my_rwlock,flags); Delete_Table(&rt,r); write_unlock_irqrestore(&my_rwlock,flags); //Print_Table(&rt); break; //Update a rule case IOCTL_ROX_UPDATE_RULE: r=(struct Rule*)ioctl_param; //Print new rule //print_rule(r); //Update this new rule to RuleTable write_lock_irqsave(&my_rwlock,flags); Update_Table(&rt,r); write_unlock_irqrestore(&my_rwlock,flags); //Print_Table(&rt); break; //Print current rule table case IOCTL_ROX_PRINT_RULE: Print_Table(&rt); break; } //spin_unlock(&globalLock); return SUCCESS; }
//--------------------------------------------------------- CActive_Attributes_Control::CActive_Attributes_Control(wxWindow *pParent) : wxGrid(pParent, -1, wxDefaultPosition, wxDefaultSize, wxWANTS_CHARS) { m_pTable = new CSG_Table; m_bEditing = false; SetRowLabelAlignment(wxALIGN_RIGHT, wxALIGN_CENTRE); Set_Row_Labeling(false); CreateGrid(0, m_pTable->Get_Field_Count()); Update_Table(); }
//--------------------------------------------------------- CVIEW_Table_Control::CVIEW_Table_Control(wxWindow *pParent, CSG_Table *pTable, int Constraint) : wxGrid(pParent, -1, wxDefaultPosition, wxDefaultSize, wxWANTS_CHARS|wxSUNKEN_BORDER) { m_pTable = pTable; m_pRecords = NULL; m_Constraint = Constraint; m_bSelOnly = false; m_bEditing = false; Set_Labeling(false); CreateGrid(m_pTable->Get_Record_Count(), m_pTable->Get_Field_Count(), wxGrid::wxGridSelectRows); Update_Table(); }
//--------------------------------------------------------- void CVIEW_Table_Control::On_Field_Type(wxCommandEvent &event) { int i, *Types = new int[m_pTable->Get_Field_Count()]; CSG_Parameters P; P.Set_Name(_TL("Change Field Type")); for(i=0; i<m_pTable->Get_Field_Count(); i++) { switch( m_pTable->Get_Field_Type(i) ) { default: case SG_DATATYPE_String: Types[i] = 0; break; case SG_DATATYPE_Date: Types[i] = 1; break; case SG_DATATYPE_Color: Types[i] = 2; break; case SG_DATATYPE_Byte: Types[i] = 3; break; case SG_DATATYPE_Char: Types[i] = 4; break; case SG_DATATYPE_Word: Types[i] = 5; break; case SG_DATATYPE_Short: Types[i] = 6; break; case SG_DATATYPE_DWord: Types[i] = 7; break; case SG_DATATYPE_Int: Types[i] = 8; break; case SG_DATATYPE_ULong: Types[i] = 9; break; case SG_DATATYPE_Long: Types[i] = 10; break; case SG_DATATYPE_Float: Types[i] = 11; break; case SG_DATATYPE_Double: Types[i] = 12; break; case SG_DATATYPE_Binary: Types[i] = 13; break; } P.Add_Choice(NULL, "", m_pTable->Get_Field_Name(i), _TL(""), CSG_String::Format(SG_T("%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|"), SG_Data_Type_Get_Name(SG_DATATYPE_String).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Date ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Color ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Byte ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Char ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Word ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Short ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_DWord ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Int ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_ULong ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Long ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Float ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Double).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Binary).c_str() ), Types[i] ); } //----------------------------------------------------- if( DLG_Parameters(&P) ) { bool bChanged = false; for(i=0; i<m_pTable->Get_Field_Count(); i++) { TSG_Data_Type Type; switch( P(i)->asInt() ) { default: case 0: Type = SG_DATATYPE_String; break; case 1: Type = SG_DATATYPE_Date; break; case 2: Type = SG_DATATYPE_Color; break; case 3: Type = SG_DATATYPE_Byte; break; case 4: Type = SG_DATATYPE_Char; break; case 5: Type = SG_DATATYPE_Word; break; case 6: Type = SG_DATATYPE_Short; break; case 7: Type = SG_DATATYPE_DWord; break; case 8: Type = SG_DATATYPE_Int; break; case 9: Type = SG_DATATYPE_ULong; break; case 10: Type = SG_DATATYPE_Long; break; case 11: Type = SG_DATATYPE_Float; break; case 12: Type = SG_DATATYPE_Double; break; case 13: Type = SG_DATATYPE_Binary; break; } if( Type != Types[i] ) { m_pTable->Set_Field_Type(i, Type); bChanged = true; } } if( bChanged ) { Update_Table(); g_pData->Update(m_pTable, NULL); } } }
//--------------------------------------------------------- bool CVIEW_Table_Control::Del_Records(void) { return( !FIXED_ROWS && m_pTable->Del_Records() && Update_Table() ); }
//--------------------------------------------------------- void CActive_Attributes_Control::On_Field_Type(wxCommandEvent &event) { if( !g_pActive->Get_Active_Data_Item() || g_pActive->Get_Active_Data_Item()->Get_Type() != WKSP_ITEM_Grids ) { return; } CSG_Grids *pGrids = ((CWKSP_Grids *)g_pActive->Get_Active_Data_Item())->Get_Grids(); //----------------------------------------------------- int i, *Types = new int[m_pTable->Get_Field_Count()]; CSG_Parameters P; P.Set_Name(_TL("Change Field Type")); for(i=0; i<m_pTable->Get_Field_Count(); i++) { switch( m_pTable->Get_Field_Type(i) ) { default: case SG_DATATYPE_String: Types[i] = 0; break; case SG_DATATYPE_Date : Types[i] = 1; break; case SG_DATATYPE_Color : Types[i] = 2; break; case SG_DATATYPE_Byte : Types[i] = 3; break; case SG_DATATYPE_Char : Types[i] = 4; break; case SG_DATATYPE_Word : Types[i] = 5; break; case SG_DATATYPE_Short : Types[i] = 6; break; case SG_DATATYPE_DWord : Types[i] = 7; break; case SG_DATATYPE_Int : Types[i] = 8; break; case SG_DATATYPE_ULong : Types[i] = 9; break; case SG_DATATYPE_Long : Types[i] = 10; break; case SG_DATATYPE_Float : Types[i] = 11; break; case SG_DATATYPE_Double: Types[i] = 12; break; case SG_DATATYPE_Binary: Types[i] = 13; break; } P.Add_Choice("", SG_Get_String(i), m_pTable->Get_Field_Name(i), _TL(""), CSG_String::Format("%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|", SG_Data_Type_Get_Name(SG_DATATYPE_String).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Date ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Color ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Byte ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Char ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Word ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Short ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_DWord ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Int ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_ULong ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Long ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Float ).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Double).c_str(), SG_Data_Type_Get_Name(SG_DATATYPE_Binary).c_str() ), Types[i] ); } //----------------------------------------------------- if( DLG_Parameters(&P) ) { bool bChanged = false; for(i=0; i<m_pTable->Get_Field_Count(); i++) { TSG_Data_Type Type; switch( P(i)->asInt() ) { default: Type = SG_DATATYPE_String; break; case 1: Type = SG_DATATYPE_Date ; break; case 2: Type = SG_DATATYPE_Color ; break; case 3: Type = SG_DATATYPE_Byte ; break; case 4: Type = SG_DATATYPE_Char ; break; case 5: Type = SG_DATATYPE_Word ; break; case 6: Type = SG_DATATYPE_Short ; break; case 7: Type = SG_DATATYPE_DWord ; break; case 8: Type = SG_DATATYPE_Int ; break; case 9: Type = SG_DATATYPE_ULong ; break; case 10: Type = SG_DATATYPE_Long ; break; case 11: Type = SG_DATATYPE_Float ; break; case 12: Type = SG_DATATYPE_Double; break; case 13: Type = SG_DATATYPE_Binary; break; } if( Type != m_pTable->Get_Field_Type(i) ) { pGrids->Get_Attributes_Ptr()->Set_Field_Type(i, Type); bChanged = true; } } if( bChanged ) { Update_Table(); g_pData->Update(pGrids, NULL); } } }