Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пн ноя 20, 2017 12:19 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 370 сообщений ]  На страницу Пред. 119 20 21 22 2325 След.
Автор Сообщение
СообщениеДобавлено: Вс июн 15, 2014 4:21 pm 
Не в сети
KSoC/GSoC Student - Auto-build destroyer

Зарегистрирован: Пн мар 10, 2014 12:07 am
Сообщения: 17
0CodErr писал(а):
right-hearted, ты привёл не весь код, и не известно, что должно было работать, а что — нет. Пока что не понятно, где именно ты предлагаешь искать ошибки.

Могу предоставить полный код
main.c
Спойлер: Показать
Код:
#include <kos32sys.h>
#include "box_lib.h"


const char *header= "Header";
const char *string= "Super word";
char *screen= "some text";


unsigned int mouse_dd=0;

void drawEditBox(){

      edit_box ed_bx= {250,55,34,0x00ffff,0x94AECE,0xffffff,0xffffff,0,sizeof(screen),screen,mouse_dd,2,19,19};
      edit_box_draw(ed_bx);
   }

void draw_window(void)
{
    BeginDraw();
   DrawWindow(100,100,500,300,header,0x33FFFFFF,1);
   
        drawEditBox();
     
    EndDraw();

}

int main(void)
{
   load_box_lib();
   draw_window();

   for (;;)
   {
      switch (check_os_event())
      {
      case 1:
         draw_window();
         break;
      case 2:
         break;
      case 3:
         // button pressed; we have only one button, close
         board_puts("DUMMY: Button pressed \n");
         return -1;
      }
   }
}

box_lib.c
Спойлер: Показать
Код:
#include <kos32sys.h>
#include "box_lib.h"
struct_import* lib_load(char *name)
{
        struct_import* val;
        asm volatile ("int $0x40":"=a"(val):"a"(68), "b"(19), "c"(name));
        return val;
}

void* lib_procload (struct_import *imp, char *name)
{
        int i;
        for (i=0;;i++)
                if ( NULL == ((imp+i) -> name))
                        break;
                else
                        if ( 0 == strcmp(name, (imp+i)->name) )
                                return (imp+i)->data;
        return NULL;
}



void load_box_lib(){
        struct_import *k;
        k = lib_load("/sys/lib/box_lib.obj");
        if (k==NULL){board_puts("DUMMY: Could not load box_lib \n");}
        else board_puts(" box_lib successfully loaded\n");

       
        if(lib_procload(k, "edit_box") == NULL){board_puts("DUMMY: procload failed \n");}
        else board_puts(" procload success \n");
       
        edit_box_draw = (__stdcall void (*) (edit_box))lib_procload(k, "edit_box");
 
        edit_box_key = (__stdcall void (*) (edit_box))lib_procload(k, "edit_box_key");

        edit_box_mouse = (__stdcall void (*) (edit_box))lib_procload(k, "edit_box_mouse");

 
        if (edit_box_draw == NULL || edit_box_key == NULL || edit_box_mouse == NULL)
                board_puts(" some of functions cannot be loaded! \n");

}

box_lib.h
Спойлер: Показать
Код:
#ifndef __BOX_LIB_H__
#define __BOX_LIB_H__
typedef struct __attribute__((packed))
{
   char   *name __attribute__((packed));
   void   *data __attribute__((packed));
} struct_import;

typedef struct edit_box edit_box;
struct edit_box
{   
   int width;
   int left;
   int top;
   int color;
   int shift_color;
   int focus_border_color;
   int blur_border_color;
   int text_color;
   int max;
   char *text;
   int mouse_variable;
   int flags;
   int size;
   int pos;
   int offset;
   int cl_curs_x;
   int cl_curs_y;
   int shift;
   int shift_old;
};

struct_import* lib_load(char *name);
void* lib_procload (struct_import *imp, char *name);
void load_box_lib();

void (* __stdcall edit_box_draw)(edit_box bx);
void (* __stdcall edit_box_key)(edit_box bx);
void (* __stdcall edit_box_mouse)(edit_box bx);
#endif


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 25, 2014 10:24 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1077
Какая переменная отвечает за позицию начала выделения в edit?

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re:
СообщениеДобавлено: Ср ноя 26, 2014 12:44 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
punk_joker писал(а):
Какая переменная отвечает за позицию начала выделения в edit?

Скорее всего за это отвечает:
Код:
ed_shift_pos    equ [edi+68]            ;положение курсора
ed_shift_pos_old equ [edi+72]           ;старое положение курсора

еще нужно предварительно проверять флаги, вероятно:
Код:
ed_shift_on=                1000b

Однако 100% не ручаюсь, так как не я автор кода. Просто мельком посмотрел код.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 13, 2015 12:06 am 
Не в сети

Зарегистрирован: Вт июн 11, 2013 3:29 pm
Сообщения: 24
What field of the optionbox struct store the status (checked / unchecked) of the checkbox? I think maybe the field flags, but I do not know how to set up initial value, and in my test this value never change, always is 0.
Sorry for bad English, my native lenguage is spanish.


Вернуться к началу
СообщениеДобавлено: Вт янв 13, 2015 6:23 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 750
CheckBox:
Код:
ch1 check_box2 (5 shl 16)+12,  (5 shl 16)+12, 6, 0xffffd0, 0x800000, 0, ch_text1, ch_flag_en
;.........

bt dword[ch1.flags],1
jnc @f
   ;......... code if checked .........
@@:

OptionBox:
Код:
struc option_box point_gr,left,top,op_text_margin,op_size,color,border_color,text_color,text,op_text_length,flags
{        ;структура параметров для чек бокса
op_flag_en=10b
.option_group   dd point_gr
.left           dw left                 ;+0 ;положение по х
.top            dw top                  ;положение по у
.ch_text_margin dd op_text_margin       ;расстояние от прямоугольника чек бокса до надписи
.ch_size        dd op_size              ;размер квадрата чек бокса, для примера 12
.color          dd color                ;цвет внутри чекбокса
.border_color   dd border_color         ;цвет рамки
.text_color     dd text_color           ;цвет надписи
.text           dd text                 ;адрес в коде программы где расположен текст
.ch_text_length dd op_text_length       ;длинна строки с символами
.flags          dd flags+0              ; флаги
}

If optionbox is checked then point_gr = & ( selected optionbox struct )


Вернуться к началу
СообщениеДобавлено: Вт янв 13, 2015 7:22 pm 
Не в сети

Зарегистрирован: Вт июн 11, 2013 3:29 pm
Сообщения: 24
Thanks for your reply IgorA , I'll try to test later, when I have free time.


Вернуться к началу
СообщениеДобавлено: Ср ноя 11, 2015 1:56 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 750
rev 5911
Изменил функции в элементе tree_list на формат вызова __stdcall, т. е. сделал правильный порядок вызова аргументов и возвращаемые значения пишутся в eax а не в стек как было раньше.
Исправил 5 программ, которые используют этот элемент, осталось еще исправить 2 малоиспользуемые программы (logik elements, kolibri fasm editor).
Раньше когда создавал элемент, то еще не знал как правильно в __stdcall передавать параметры. Теперь элемент tree_list можно использовать не только в программах на asm, но и на C++.


Вернуться к началу
СообщениеДобавлено: Сб янв 02, 2016 10:54 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Пт июн 30, 2006 9:01 am
Сообщения: 1232
Is somebody still managing this code?
Does anyone have the ambition to add big font support for editbox?
And what about UTF-8 support?

_________________
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein


Вернуться к началу
СообщениеДобавлено: Вт янв 05, 2016 8:20 am 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1194
Вообще, хороший вопрос, как добавить поддержку большого шрифта в editbox? Нужен соответствующий параметр, но куда его воткнуть?


Вернуться к началу
СообщениеДобавлено: Пн окт 10, 2016 6:14 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
Хочу добавить во Frame некоторые новые возможности(стили рамки, заливка всего элемента). Я использую для флагов поле fr_draw_text_flag, оно у меня теперь называется fr_flags.
Код:
fr_flags = [x][yyy][z]
z    -  Caption
yyy  -  BorderStyle
x    -  BackStyle
Но это всё обратно совместимо.

Только непонятно, что делать с шапкой "Copyright (c) 2013, Marat Zakiyanov...... ", от кода Mario осталось совсем немного. Наверное, просто добавлю ещё сверху текст о том, что я добавил в 2016 году.
Это вот скриншот тут
Спойлер: Показать
Изображение


Вернуться к началу
СообщениеДобавлено: Пн окт 10, 2016 7:08 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1194
Если остался кусок его кода, то копирайт придётся оставить. Если осталось несколько отдельных строк, то можно заменить на стандартную шапку.


Вернуться к началу
СообщениеДобавлено: Пн окт 10, 2016 10:03 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
Добавил в #6586 стили рамки(raised, sunken, etched, ridged) и возможность заливки всего элемента.
Вот пример использования
Вложение:
frame_test.7z [1.31 КБ]
18 скачиваний


Вернуться к началу
СообщениеДобавлено: Пт окт 14, 2016 5:25 pm 
Не в сети

Зарегистрирован: Вт окт 04, 2016 10:05 pm
Сообщения: 44
Друзья! У меня простой вопрос: как я вижу, вы передаете в библиотеку напрямую структуру данных, без указания ее длины. Как вы собираетесь структуры расширять и наращивать без потери совместимости?


Вернуться к началу
СообщениеДобавлено: Пт окт 14, 2016 6:11 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4226
Пора делать версию компонента Edit для большого шрифта.

_________________
Через тернии к звездам


Вернуться к началу
СообщениеДобавлено: Вт окт 25, 2016 3:01 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 269
Leency писал(а):
Пора делать версию компонента Edit для большого шрифта.

Не только editbox, но и остальных.

Заодно отпишу тут пару багов и пожеланий к апгрейду
1. Browser не использует select_text_color, хотя на ходовые качества не влияет, но может была какая то задумка ?
2. Нужна везде поддержка размера шрифта (банально мелко, и худ.дизайн ограничивает), в т.ч
2.1 Tree_list - залочен на 6x8, при попытке задать высоту иконки 0 (так понимаю связано с расчетом положения текста) крашится
2.2 t_edit при рисовании большим шрифтом вылезает квадратиками за границу отведенного ему места
3. Editbox требует чтобы клавиатура была в ASCII mode, а Menu и t_edit в режиме сканкодов
4. t_edit требует минимум одно слово в таблице расцветки, иначе краш
5. tree_list иногда при свертывании/развертывании разных узлов отрабатывает щелчок дважды
6. tree_list при отсутствии иконок рисует квадратик цвета текста, лучше бы совсем не рисовал или уж фоном.
7. d_button срабатывает по нажатию кнопки, но не отпусканию, возможно не только он
8. t_edit всегда рисует поля с номерами строк и верхнее, компоненту это не всегда нужно
9. t_edit не отрабатывает Таб. А как ее отрабатывать? - это с п8 тянет какой то набор настроек редактора

Ну и еще в целом,
А. Компоненты выглядят как то "не стильно" (
Б. Отсутствует защита от некорректных параметров - очень легко "падают"

Я так понимаю, из живых авторов тут IgorA, да и часть разработчиков уже разбиралась в деталях, может сформировать общие пожелания ?


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 370 сообщений ]  На страницу Пред. 119 20 21 22 2325 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB