Example #1
0
Boolean
XmTextFindStringWcs(Widget w,
		    XmTextPosition start,
		    wchar_t* wc_string,
		    XmTextDirection direction,
		    XmTextPosition *position)
{
  wchar_t *tmp_wc;
  char *string;
  int num_chars = 0;
  Boolean return_val = False;
  XmTextWidget tw = (XmTextWidget) w;
  int wcs_ret_val = 0;
  _XmWidgetToAppContext(w);

  _XmAppLock(app);
  if (!XmIsTextField(w)) {
    for (num_chars = 0, tmp_wc = wc_string; *tmp_wc != (wchar_t)0L;
	 num_chars++) tmp_wc++;
    string = XtMalloc ((unsigned) (num_chars + 1) * (int)tw->text.char_size);
    wcs_ret_val = wcstombs(string, wc_string,
			   (num_chars + 1) * (int)tw->text.char_size);
    if (wcs_ret_val >= 0)
      return_val = XmTextFindString(w, start, string, direction, position);
    XtFree(string);
    _XmAppUnlock(app);
    return(return_val);
  } else {
    _XmAppUnlock(app);
    return False;
  }
}
Example #2
0
static void Kill_line(Widget w, XEvent *ev, char **str, Cardinal *num) 
{
  /* C-k with storage of killed text */
  XmTextPosition curpos, loc;
  Boolean found;
  curpos = XmTextGetCursorPosition(w);
  found = XmTextFindString(w, curpos, "\n", XmTEXT_FORWARD, &loc);
  if (!found) loc = XmTextGetLastPosition(w);
  if (loc > curpos)
    {
      if (listener_selection) {XtFree(listener_selection); listener_selection = NULL;}
      XmTextSetSelection(w, curpos, loc, CurrentTime);
      listener_selection = XmTextGetSelection(w); /* xm manual p329 sez storage is allocated here */
      XmTextCut(w, CurrentTime);
    }
}
Example #3
0
static void Begin_of_line(Widget w, XEvent *ev, char **ustr, Cardinal *num) 
{
  /* don't back up before listener prompt */
  XmTextPosition curpos, loc;
  Boolean found;
  curpos = XmTextGetCursorPosition(w) - 1;
  found = XmTextFindString(w, curpos, "\n", XmTEXT_BACKWARD, &loc);
  if (found) 
    {
      char *str = NULL;
      str = (char *)CALLOC(ss->listener_prompt_length + 3, sizeof(char));
      XmTextGetSubstring(w, loc + 1, ss->listener_prompt_length, ss->listener_prompt_length + 2, str);
      if (strncmp(listener_prompt(ss), str, ss->listener_prompt_length) == 0)
	XmTextSetCursorPosition(w, loc + ss->listener_prompt_length + 1);
      else XmTextSetCursorPosition(w, loc + 1);
      FREE(str);
    }
  else XmTextSetCursorPosition(w, 1);
}
Example #4
0
void view_message_print_record(Message *m_fill) {
    int pos;
    char *temp;
    int i;
    int my_size = 200;
    char temp_my_course[10];
    XmTextPosition drop_ptr;
    int distance;


    // Make sure it's within our distance range we have set
    distance = (int)distance_from_my_station(m_fill->from_call_sign,temp_my_course);

    if (Read_messages_mine_only
            || (!Read_messages_mine_only
                && ( (vm_range == 0) || (distance <= vm_range) ) ) ) {
 
        // Check that it's coming from the correct type of interface
        // Compare Read_messages_packet_data_type against the port
        // type associated with data_port to determine whether or
        // not to display it.
        //
        // I = Internet
        // L = Local
        // T = TNC
        // F = File
        //
        switch (Read_messages_packet_data_type) {

            case 2:     // Display NET data only
                // if not network_interface, return
                if (m_fill->data_via != 'I')
                    return; // Don't display it
                break;

            case 1:     // Display TNC data only
                // if not local_tnc_interface, return
                if (m_fill->data_via != 'T')
                    return; // Don't display it
                break;

            case 0:     // Display both TNC and NET data
            default:
                break;
        }

        // Check for my stations only if set
        if (Read_messages_mine_only) {
            char short_call[MAX_CALLSIGN];
            char *p;

            xastir_snprintf(short_call,
                sizeof(short_call),
                "%s",
                my_callsign);
            if ( (p = index(short_call,'-')) ) {
                *p = '\0';  // Terminate it
            }

            if (!strstr(m_fill->call_sign, short_call)
                    && !strstr(m_fill->from_call_sign, short_call)) {
                return;
            }
        }

        if ((temp = malloc((size_t)my_size)) == NULL)
            return;

        sprintf(temp,"%-9s>%-9s %s:%5s %s:%c :%s\n",
            m_fill->from_call_sign,
            m_fill->call_sign,
            langcode("WPUPMSB013"),
            m_fill->seq,
            langcode("WPUPMSB014"),
            m_fill->type,
            m_fill->message_line);

        pos = (int)XmTextGetLastPosition(view_messages_text);


        XmTextInsert(view_messages_text, pos, temp);
        pos += strlen(temp);
        while (pos > view_message_limit) {
            for (drop_ptr = i = 0; i < 3; i++) {
                (void)XmTextFindString(view_messages_text, drop_ptr, "\n", XmTEXT_FORWARD, &drop_ptr);
                drop_ptr++;
            }
            XmTextReplace(view_messages_text, 0, drop_ptr, "");
            pos = (int)XmTextGetLastPosition(view_messages_text);
        }
        XtVaSetValues(view_messages_text, XmNcursorPosition, pos, NULL);

        free(temp);
    }
}
Example #5
0
void all_messages(char from, char *call_sign, char *from_call, char *message) {
    char temp_my_course[10];
    char *temp;
    char data1[97];
    char data2[97];
    int pos;
    int i;
    int my_size = 200;
    XmTextPosition drop_ptr;


    if (Read_messages_mine_only
            || (!Read_messages_mine_only
                && ((vm_range == 0)
                    || ((int)distance_from_my_station(call_sign,temp_my_course) <= vm_range)) ) ) {

        // Check that it's coming from the correct type of interface
        // Compare Read_messages_packet_data_type against the port
        // type associated with data_port to determine whether or
        // not to display it.
        //
        // I = Internet
        // L = Local
        // T = TNC
        // F = File
        //
        switch (Read_messages_packet_data_type) {

            case 2:     // Display NET data only
                // if not network_interface, return
                if (from != 'I')
                    return; // Don't display it
                break;

            case 1:     // Display TNC data only
                // if not local_tnc_interface, return
                if (from != 'T')
                    return; // Don't display it
                break;

            case 0:     // Display both TNC and NET data
            default:
                break;
        }

        // Check for my stations only if set
        if (Read_messages_mine_only) {
            char short_call[MAX_CALLSIGN];
            char *p;

            xastir_snprintf(short_call,
                sizeof(short_call),
                "%s",
                my_callsign);
            if ( (p = index(short_call,'-')) ) {
                *p = '\0';  // Terminate it
            }

            if (!strstr(call_sign, short_call)
                    && !strstr(from_call, short_call)) {
                return;
            }
        }

        if ((temp = malloc((size_t)my_size)) == NULL)
            return;

        if (strlen(message)>95) {
            xastir_snprintf(data1,
                sizeof(data1),
                "%s",
                message);
            data1[95]='\0';
            xastir_snprintf(data2,
                sizeof(data2),
                "\n\t%s",
                message+95);
        } else {
            xastir_snprintf(data1,
                sizeof(data1),
                "%s",
                message);
            data2[0] = '\0';
        }

        if (strncmp(call_sign, "java",4) == 0) {
            xastir_snprintf(call_sign,
                MAX_CALLSIGN+1,
                "%s", langcode("WPUPMSB015") );   // Broadcast
            xastir_snprintf(temp,
                my_size,
                "%s %s\t%s%s\n",
                from_call,
                call_sign,
                data1,
                data2);
        } else if (strncmp(call_sign, "USER", 4) == 0) {
            xastir_snprintf(call_sign,
                MAX_CALLSIGN+1,
                "%s", langcode("WPUPMSB015") );   // Broadcast
            xastir_snprintf(temp,
                my_size,
                "%s %s\t%s%s\n",
                from_call,
                call_sign,
                data1,
                data2);
        } else
            xastir_snprintf(temp,
                my_size,
                "%s to %s via:%c\t%s%s\n",
                from_call,
                call_sign,
                from,
                data1,
                data2);

        if ((All_messages_dialog != NULL)) {

begin_critical_section(&All_messages_dialog_lock, "view_message_gui.c:all_messages" );

            pos = (int)XmTextGetLastPosition(view_messages_text);
            XmTextInsert(view_messages_text, pos, temp);
            pos += strlen(temp);
            while (pos > view_message_limit) {
                for (drop_ptr = i = 0; i < 3; i++) {
                    (void)XmTextFindString(view_messages_text, drop_ptr, "\n", XmTEXT_FORWARD, &drop_ptr);
                    drop_ptr++;
                }
                XmTextReplace(view_messages_text, 0, drop_ptr, "");
                pos = (int)XmTextGetLastPosition(view_messages_text);
            }
            XtVaSetValues(view_messages_text, XmNcursorPosition, pos, NULL);
            XmTextShowPosition(view_messages_text, pos);

end_critical_section(&All_messages_dialog_lock, "view_message_gui.c:all_messages" );

        }
        free(temp);
    }
}