void Ctrl::DndTargets(GdkDragContext *context) { static Index<String> text_targets; static Index<String> image_targets; ONCELOCK { GtkTargetList *target_list = gtk_target_list_new (NULL, 0); gtk_target_list_add_text_targets (target_list, 0); ToIndex(target_list, text_targets); GtkTargetList *target_list2 = gtk_target_list_new (NULL, 0); gtk_target_list_add_image_targets (target_list2, 0, TRUE); ToIndex(target_list2, image_targets); } dnd_targets.Clear(); dnd_text_target.Clear(); for(GList *list = gdk_drag_context_list_targets(context); list; list = g_list_next (list)) { String g = gdk_atom_name((GdkAtom)list->data); if(text_targets.Find(g) >= 0) { dnd_targets.Add("text"); if(dnd_text_target.IsEmpty()) dnd_text_target = g; } else if(image_targets.Find(g) >= 0) { dnd_targets.Add("image"); if(dnd_image_target.IsEmpty()) dnd_image_target = g; } else dnd_targets.Add(g); } }
void Ctrl::DndTargets(GdkDragContext *context) { static Index<String> text_targets; static Index<String> image_targets; static Index<String> files_targets; ONCELOCK { GtkTargetList *target_list = gtk_target_list_new (NULL, 0); gtk_target_list_add_text_targets(target_list, 0); ToIndex(target_list, text_targets); GtkTargetList *target_list2 = gtk_target_list_new (NULL, 0); gtk_target_list_add_image_targets(target_list2, 0, TRUE); ToIndex(target_list2, image_targets); GtkTargetList *target_list3 = gtk_target_list_new (NULL, 0); gtk_target_list_add_uri_targets(target_list3, 0); ToIndex(target_list3, files_targets); } dnd_targets.Clear(); dnd_text_target.Clear(); #if GTK_CHECK_VERSION(2,22,0) // No drag&drop support before 2.22, sorry... for(GList *list = gdk_drag_context_list_targets(context); list; list = g_list_next (list)) { String g = gdk_atom_name((GdkAtom)list->data); if(text_targets.Find(g) >= 0) { dnd_targets.Add("text"); if(dnd_text_target.IsEmpty()) dnd_text_target = g; } else if(image_targets.Find(g) >= 0) { dnd_targets.Add("image"); if(dnd_image_target.IsEmpty()) dnd_image_target = g; } else if(files_targets.Find(g) >= 0) { dnd_targets.Add("files"); if(dnd_files_target.IsEmpty()) dnd_files_target = g; } else dnd_targets.Add(g); } #endif }
void NppInterface::ActivateDocument(int index, ViewType view) { SendMsgToNpp(NPPM_ACTIVATEDOC, ToIndex(view), index); }
void FormatIns( char *buf, instruction *curr_ins, form_option format ) /*********************************************************************/ { const char *name; int len; operand *op; int i; int seg_override; bool prefix; char tmp_buff[ 80 ]; char *ptr; if( curr_ins->opcode == I_INVALID ) { strcpy( buf, "?????" ); return; } CurrIns = *curr_ins; prefix = false; for( i = 0; i <= 3; ++i ) { if( CurrIns.pref & PrefixTab[ i ] ) { strcpy( tmp_buff, InsName[ PrefixName[ i ] ] ); PadBlanks( tmp_buff ); if( format & FORM_NAME_UPPER ) { ZapUpper( tmp_buff ); } strcat( buf, tmp_buff ); prefix = true; } } seg_override = NULL_REG; if( CurrIns.pref & PREF_xS ) { seg_override = CurrIns.seg_used; FixStringIns( &CurrIns ); } if( CurrIns.opcode < FIRST_WTK_INS ) { name = InsName[ CurrIns.opcode ]; } else { name = GetWtkInsName( CurrIns.opcode - FIRST_WTK_INS ); } strcpy( tmp_buff, name ); #ifdef O2A if( DO_UNIX ) { ToUnixInsName( tmp_buff, &CurrIns ); } #endif if( format & FORM_NAME_UPPER ) { ZapUpper( tmp_buff ); } strcat( buf, tmp_buff ); PadBlanks( buf ); if( prefix ) { /* if a prefix like 'lock', need space after name */ strcat( buf, " " ); } tmp_buff[ 0 ] = '\0'; #ifdef O2A if( !DO_UNIX ) { #endif if( CurrIns.opcode == I_CALL_FAR || CurrIns.opcode == I_JMP_FAR ) { if( CurrIns.modifier == MOD_NONE ) { if( format & FORM_ASSEMBLER ) { strcpy( tmp_buff, "far ptr " ); } else { strcpy( tmp_buff, "far " ); } } } else if( CurrIns.opcode == I_CALL || ( IsJumpIns( CurrIns.opcode ) && CurrIns.ins_size != 2 ) ) { if( CurrIns.modifier == MOD_NONE ) { if( format & FORM_ASSEMBLER ) { strcpy( tmp_buff, "near ptr " ); } } } if( format & FORM_NAME_UPPER ) { ZapUpper( tmp_buff ); } strcat( buf, tmp_buff ); #ifdef O2A } else if( CurrIns.num_oper >= 2 ) { // swap operands operand tmp; int last; last = CurrIns.num_oper - 1; tmp = CurrIns.op[ OP_1 ]; CurrIns.op[ OP_1 ] = CurrIns.op[ last ]; CurrIns.op[ last ] = tmp; if( CurrIns.mem_ref_op == 0 ) { CurrIns.mem_ref_op = last; } else if( CurrIns.mem_ref_op == last ) { CurrIns.mem_ref_op = 0; } } #endif for( i = 0; i < CurrIns.num_oper; ++i ) { if( i > 0 ) { len = strlen( buf ); buf[ len ] = ','; buf[ len + 1 ] = '\0'; } op = &CurrIns.op[ i ]; if( CurrIns.mem_ref_op == i ) { if( #ifdef O2A !DO_UNIX && #endif CurrIns.modifier != MOD_NONE ) { strcpy( tmp_buff, ModifierTab[ CurrIns.modifier ] ); if( format & FORM_NAME_UPPER ) { ZapUpper( tmp_buff ); } strcat( buf, tmp_buff ); } if( seg_override != NULL_REG ) { DumpOverride( tmp_buff, seg_override ); if( format & FORM_REG_UPPER ) ZapUpper( tmp_buff ); strcat( buf, tmp_buff ); } } switch( op->mode ) { case ADDR_REG: ptr = tmp_buff; #ifdef O2A if( DO_UNIX ) { *ptr++ = '%'; } #endif strcpy( ptr, X86RegisterName[ op->base ] ); if( format & FORM_REG_UPPER ) ZapUpper( ptr ); strcat( buf, tmp_buff ); break; case ADDR_CONST: #ifdef O2A if( DO_UNIX ) { strcat( buf, "$" ); } #endif if( op->size == 0 ) { len = strlen( buf ); ltoa( op->disp, &buf[ len ], 10 ); } else { strcat( buf, ToStr( op->disp, 2 * op->size, op->offset ) ); } break; case ADDR_LABEL: #ifdef O2A if( !DO_UNIX && ( format & FORM_ASSEMBLER && IsJumpIns( CurrIns.opcode ) ) ) { if( CurrIns.ins_size == 2 ) { if( format & FORM_NAME_UPPER ) { strcat( buf, "SHORT " ); } else { strcat( buf, "short " ); } } } #endif strcat( buf, JmpLabel( op->disp, op->offset ) ); break; case ADDR_ABS: strcat( buf, ToBrStr( op->disp, op->offset ) ); break; case ADDR_BASE: case ADDR_INDEX: case ADDR_BASE_INDEX: if( #ifdef O2A DO_UNIX || #endif ( format & FORM_INDEX_IN ) == 0 ) { if( op->size != 0 ) { strcat( buf, ToIndex( op->disp, op->offset ) ); } } len = strlen( buf ); buf[ len ] = START_INDEX; FormIndex( op, tmp_buff ); if( format & FORM_REG_UPPER ) { ZapUpper( tmp_buff ); } strcpy( &buf[ len + 1 ], tmp_buff ); if( #ifdef O2A !DO_UNIX && #endif ( format & FORM_INDEX_IN ) ) { if( op->size != 0 ) { name = ToIndex( op->disp, op->offset ); if( *name != '+' && *name != '-' ) { strcat( buf, "+" ); } strcat( buf, name ); } } len = strlen( buf ); buf[ len ] = END_INDEX; buf[ len + 1 ] = '\0'; break; case ADDR_SEG_OFFSET: /* modifier or seg override */ strcat( buf, ToSegStr( op->disp, (op+1)->disp, op->offset ) ); break; case ADDR_ES_DI: case ADDR_ES_EDI: /* we have an overridden string instruction */ ptr = DumpOverride( tmp_buff, ES_REG ); *ptr++ = START_INDEX; strcpy( ptr, X86RegisterName[ op->mode == ADDR_ES_DI ? DI_REG : EDI_REG ] ); ptr += strlen( ptr ); *ptr++ = END_INDEX; *ptr = '\0'; if( format & FORM_REG_UPPER ) ZapUpper( tmp_buff ); strcat( buf, tmp_buff ); break; case ADDR_WTK: { char * tmpstr; wop_type tmptype = (wop_type)op->size; if( tmptype == WST || tmptype == ANY_SINGLE ) { tmpstr = "ws"; } else { tmpstr = "wd"; } strcat( buf, tmpstr ); itoa( (int)op->disp, &buf[ strlen( buf ) ], 10 ); } break; case ADDR_WTK_OPCODE: strcat( buf, InsName[ op->disp ] ); break; } } if( CurrIns.pref & EMU_INTERRUPT ) { strcat( buf, "; int " ); strcat( buf, ToStr( CurrIns.op[ OP_3 ].disp, 2, -1 ) ); } }